다음을 통해 공유


인코더 구현 및 지원

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_CHANGELISTS

디바이스가 CODECAPI_SUPPORTSEVENTS 속성 집합을 통해 사용자 모드 이벤트에 응답하는 것을 지원하는 경우 이 이벤트 집합을 구현하여 클라이언트의 이전 Set-property 호출이 CODECAPI_SETALLDEFAULTS 또는 CODECAPI_ALLSETTINGS 결과로 변경된 인코더 설정 목록을 반환합니다.

클라이언트는 ICodecAPI COM 인터페이스를 통해 이러한 속성에 액세스합니다(Windows SDK 설명서에 설명됨). KsProxy에서 노출해야 하는 인터페이스를 지정하는 방법을 포함하여 COM 인터페이스에 대한 자세한 내용은 인코더 설치 및 등록 을 참조하세요.

미니 드라이버는 기본 get-property 쿼리에 대한 지원을 구현해야 합니다. 항목 인코더 코드 예제에서는get-property 쿼리를 지원하는 방법을 보여 줍니다.

인코더 필터를 개발할 때 인코딩 기능을 비디오 캡처 필터에서 별도의 필터로 이동합니다. 그래프 작성기가 인코더를 제대로 연결하고 필터를 캡처할 수 있도록 고유한 프라이빗 매체를 정의합니다. 하드웨어가 인코딩되지 않은 콘텐츠를 버스로 마스터할 수 있는 경우 공용 매체를 노출할 수도 있습니다. 공용 매체와 프라이빗 매체를 모두 구현하는 경우 그래프 작성 시간이 단축되므로 먼저 프라이빗 매체를 나열합니다. 필터 그래프를 작성할 때 올바른 필터를 찾습니다.

필터의 중간 및 여러 인스턴스를 사용하는 방법에 대한 자세한 내용은(별도의 필터 그래프에서) 중간 및 범주를 참조하세요.