DirectShow DirectShow 의 사용법 엔코더와 디코더의 개발 엔코더 API   [목차열람] [주소복사] [슬롯비우기]
엔코더 API
 
Microsoft DirectX 9.0

엔코더 API

엔코더 API 는, 소프트웨어 엔코더 및 하드웨어 엔코더에 사용하는, 균일의 인터페이스를 제공한다. 애플리케이션은, 엔코더 API 를 사용해 엔코더의 구성을 실시하거나 구성의 설정 내용을 보존하거나 할 수 있다. 엔코더 vender는, 엔코더 API 를 사용해 엔코더의 능력을 공개할 수 있다. 엔코더 API 는 주로 엔코더전용으로 설계되고 있지만, 일반적으로 디코더도 엔코더 API 를 지원 할 수가 있다.

엔코더 API 는 ICodecAPI 인터페이스를 개입시켜 애플리케이션에 공개된다. 이 인터페이스는 엔코더 필터가 공개한다. 엔코더 필터의 종류로서 네이티브의 DirectShow 필터, 하드웨어 엔코더, 및 DirectX Media Object (DMO)가 있다.

엔코더의 능력

엔코더는, 시스템 레지스트리에 저장 하는 것에 의해, 상위 레벨의 능력의 리스트를 등록할 수 있다. 각각의 능력은 GUID 에 의해 식별된다. 특정의 엔코더의 능력을 열거하려면 , 다음의 순서를 실행한다.

  1. 엔코더 필터를 나타내는 모니카를 생성 한다. ( 「Using the System Device Enumerator」참조. )
  2. IGetCapabilitiesKey 인터페이스의 필터모니카를 조회한다.
  3. IGetCapabilitiesKey::GetCapabilitiesKey 를 호출한다. 이 메서드는, 필터의 능력 리스트를 저장 하는 레지스트리 키에 대한 핸들을 돌려준다.
  4. RegEnumValue 를 호출해, 돌려주어진 키의 값을 열거한다.

엔코더를 개발하는 경우는, 필터가 등록되어 있을 때는 능력의 레지스트리 엔트리를 생성 한다. 소프트웨어 필터의 경우,FilterData 키와 FriendlyName 키의 근처에 Capabilities 라는 이름의 키를 생성 한다. 보통, 이 정보는 AMovieDllRegisterServer2 를 호출해 필터의 표준적인 데이터를 등록한 후에 추가한다. 더 자세한 정보는, 「DirectShow 필터의 등록 방법」을 참조할것. 또는,Capabilities 키의 장소를 나타내는 캐릭터 라인을 저장 하는 CapabilitiesLocation 키를 레지스트리내에 생성 할 수도 있다. 이 캐릭터 라인의 선두는,"HKLM\","HKCR\", 또는 "HKCU\" 의 어느 쪽인가에 해 레지스트리 서브 트리를 나타낼 필요가 있다. 플러그 앤 플레이 장치의 경우, 드라이버의 셋업 파일은 필터의 FriendlyName 키의 근처에 Capabilities 키를 생성 할 필요가 있다. 또, 소프트웨어 필터의 경우는 전술과 같이 Capabilities 키는 CapabilitiesLocation 키를 사용할 수 있다.

Capabilities 키를 생성 하면 각 능력의 GUID 에 대응하는 값을 생성 한다. 값의 이름은, GUID 와 같이,{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} 라고 하는 형식으로 한다. 각 값의 종류는, 다음 중 하나일 필요가 있다.

다음 예는 소프트웨어 필터의 경우의 레지스트리 레이아웃이다.

\HKCR\CLSID\Filter Category\Instance\Filter CLSID\Capabilities\
    Values: 
    guid1: 1234 (REG_DWORD)   
    guid2: "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}" (REG_SZ)
    guid3: "2","4","6" (REG_SZ_MULTI)
    guid4: "720,480" (REG_SZ) 

엔코더 프로파일

엔코더 프로파일은, 런타임시에 엔코더에 적용할 수 있는, 구성 설정의 고정 리스트이다. 프로파일은, 엔코더로부터는 독립하고 있다. 애플리케이션은 우선 엔코더를 선택해, 다음에 프로파일을 선택해, 그 프로파일을 엔코더에 적용할 수 있다. 프로파일은, GUID 에 의해 식별되어 레지스트리내의 다음의 장소에 저장 한다.

\HKLM\Software\Microsoft\EncoderProfiles\Profile GUID\

Profile GUID 는, 프로파일을 식별하는 GUID 의 캐릭터 라인 형식의 값이다. 각 설정에 대해 값을 생성 한다. 게다가 프로파일 ("LowBandwidthVideo" 등)을 식별하는,FriendlyName 라는 이름의 캐릭터 라인값을 생성 한다.

↑TOP