인코더 구현 및 지원
Windows XP 서비스 팩 1에서 Microsoft는 비디오 전용 인코더 디바이스를 지원하기 위해 세 개의 커널 스트리밍 속성 집합과 ksmedia.h 의 열거형 1개를 정의했습니다. 각 속성 집합에는 단일 속성이 포함됩니다. 즉, 각 속성은 자체 속성 집합을 받습니다. 드라이버가 get-property 또는 Set-property를 호출하는 경우 KSPROPERTY 구조체의 Set 멤버에서 속성 집합의 GUID(ksmedia.h에 정의됨)를 지정하고 호출을 설정할 때 Id 멤버에 0을 지정합니다.
속성 설정 | Description |
---|---|
ENCAPIPARAM_BITRATE | 이 속성 집합을 구현하여 인코더 디바이스에서 지원하는 인코딩 비트 속도를 지정합니다. 자세한 내용은 인코더 코드 예제를 참조하세요. |
ENCAPIPARAM_BITRATE_MODE | 디바이스에서 지원하는 인코딩 모드를 지정하려면 이 속성 집합을 구현합니다. 이 속성 집합은 VIDEOENCODER_BITRATE_MODE 열거형을 사용하여 지원되는 모드를 지정합니다. 자세한 내용은 인코더 코드 예제를 참조하세요. |
ENCAPIPARAM_PEAK_BITRATE | 디바이스의 최대 인코딩 비트 속도를 지정하려면 이 속성 집합을 구현합니다. |
클라이언트는 IEncoderAPI COM 인터페이스(Windows SDK(소프트웨어 개발 키트) 설명서에 설명됨)에서 IVideoEncoder COM 인터페이스를 파생시켜 이러한 속성에 액세스합니다.
미니 드라이버는 각 ENCAPIPARAM_Xxx 속성에 대한 기본값을 지정해야 합니다. 인코더 코드 예제 항목에서는 기본 속성 값을 지정하는 방법을 보여 줍니다. 인코더 필터를 개발 및 디버깅하는 동안 ENCAPIPARAM_BITRATE 속성 집합을 지원하는 미니드라이버에서 현재 속성 페이지를 트리거할 수 있습니다.
DirectX 9.0에서는 오디오 전용 인코더를 포함하여 다양한 인코더를 더 잘 지원하기 위해 ksmedia.h 에 6개의 추가 속성 집합과 1개의 이벤트 집합이 정의되었습니다. ENCAPIPARAM_Xxx 속성과 마찬가지로 각 속성은 자체 속성 집합을 받습니다.
속성 설정 | Description |
---|---|
CODECAPI_VIDEO_ENCODER | 디바이스에서 비디오 스트림 인코딩(TV 오디오와 같은 보조 오디오 포함)을 지원하는 경우 이 속성 집합에 대한 지원을 구현합니다. |
CODECAPI_AUDIO_ENCODER | 디바이스가 오디오 전용 인코더인 경우 CODECAPI_VIDEO_ENCODER 대신 이 속성 집합에 대한 지원을 구현합니다. |
CODECAPI_SETALLDEFAULTS | 비트 속도 인코딩 및 인코딩 모드와 같은 모든 인코더 디바이스의 내부 설정을 기본값으로 다시 설정하려면 이 속성 집합을 구현합니다. |
CODECAPI_ALLSETTINGS | 인코더 디바이스의 현재 설정을 전달하도록 이 속성 집합을 구현합니다. 이 속성 집합은 클라이언트와 통신하는 데 사용됩니다. |
CODECAPI_SUPPORTSEVENTS | 디바이스가 인코딩 모드, 비트 속도 또는 기타 설정을 변경하는 등 사용자 모드의 이벤트를 지원하는 경우 이 속성 집합을 구현합니다. 이 속성 집합을 구현하는 경우 CODECAPI_CHANGELISTS 이벤트에 대한 지원도 구현해야 합니다. |
CODECAPI_CURRENTCHANGELIST | 이 속성 집합을 구현하여 하나 이상의 인코더 속성을 설정하기 위해 이전 호출에서 변경된 인코더 매개 변수를 결정합니다. |
이벤트 집합 | Description |
---|---|
디바이스가 CODECAPI_SUPPORTSEVENTS 속성 집합을 통해 사용자 모드 이벤트에 응답하는 것을 지원하는 경우 이 이벤트 집합을 구현하여 클라이언트의 이전 Set-property 호출이 CODECAPI_SETALLDEFAULTS 또는 CODECAPI_ALLSETTINGS 결과로 변경된 인코더 설정 목록을 반환합니다. |
클라이언트는 ICodecAPI COM 인터페이스를 통해 이러한 속성에 액세스합니다(Windows SDK 설명서에 설명됨). KsProxy에서 노출해야 하는 인터페이스를 지정하는 방법을 포함하여 COM 인터페이스에 대한 자세한 내용은 인코더 설치 및 등록 을 참조하세요.
미니 드라이버는 기본 get-property 쿼리에 대한 지원을 구현해야 합니다. 항목 인코더 코드 예제에서는get-property 쿼리를 지원하는 방법을 보여 줍니다.
인코더 필터를 개발할 때 인코딩 기능을 비디오 캡처 필터에서 별도의 필터로 이동합니다. 그래프 작성기가 인코더를 제대로 연결하고 필터를 캡처할 수 있도록 고유한 프라이빗 매체를 정의합니다. 하드웨어가 인코딩되지 않은 콘텐츠를 버스로 마스터할 수 있는 경우 공용 매체를 노출할 수도 있습니다. 공용 매체와 프라이빗 매체를 모두 구현하는 경우 그래프 작성 시간이 단축되므로 먼저 프라이빗 매체를 나열합니다. 필터 그래프를 작성할 때 올바른 필터를 찾습니다.
필터의 중간 및 여러 인스턴스를 사용하는 방법에 대한 자세한 내용은(별도의 필터 그래프에서) 중간 및 범주를 참조하세요.