코덱 구현

Windows Media 오디오 및 비디오 코덱은 COM 개체로 구현됩니다. 일반적으로 코덱은 COM 개체 쌍으로 구현됩니다. 하나는 인코더용이고 다른 하나는 디코더용입니다. 인코더에는 CLSID(클래스 식별자)가 있고 디코더에는 다른 CLSID가 있습니다. 예를 들어 Windows Media Audio 9 코덱의 인코더 부분에는 상수 CLSID_CWMAEncMediaObject 나타내는 CLSID가 있고 동일한 코덱의 디코더 부분에는 상수 CLSID_CWMADecMediaObject 나타내는 CLSID가 있습니다.

경우에 따라 두 개 이상의 인코더가 단일 COM 개체에 포함됩니다. 예를 들어 Windows Media Video 9 인코더와 Windows Media Video 9.1 인코더는 모두 동일한 COM 개체의 일부입니다. 따라서 둘 다 상수 CLSID_CWMV9EncMediaObject 나타내는 동일한 CLSID를 갖습니다. 마찬가지로 일부 COM 개체에는 둘 이상의 디코더가 포함됩니다.

각 인코더 또는 디코더 개체는 개체를 MFT(Media Foundation Transform)로 사용할 수 있도록 개체를 DMO(DirectX Media Object) 및 IMFTransform 인터페이스로 사용할 수 있도록 IMediaObject 인터페이스를 노출합니다.

인코더를 DMO 또는 MFT로 사용하는지 여부에 관계없이 대부분의 인코더의 경우 동일한 CLSID를 사용하여 인코더의 instance 만듭니다. 예를 들어 Windows Media Video 9 인코더의 instance 만들려면 인코더를 DMO 또는 MFT로 사용할지 여부에 관계없이 CLSID_CWMV9EncMediaObject 사용합니다. 마찬가지로 대부분의 디코더의 경우 디코더를 DMO 또는 MFT로 사용하는지 여부에 관계없이 각 디코더에 단일 CLSID가 있습니다.

참고

DMO와 MFT 모두에 단일 CLSID를 사용하는 방법에 대한 앞의 문에는 몇 가지 예외가 있습니다. 예를 들어 MPEG-4 2부 디코더에는 DMO 역할을 할 때 하나의 CLSID가 있고 MFT 역할을 할 때 다른 CLSID가 있습니다.

 

코어 인터페이스 외에도 각 인코더 또는 디코더 개체는 코덱 속성 IPropertyBagIPropertyStore를 사용하기 위해 두 개의 유사한 인터페이스를 구현합니다. 이전 버전의 인코더 및 디코더 개체는 속성 이름을 포함하는 문자열 값으로 각 속성을 식별하는 IPropertyBag을 사용했습니다. IPropertyStore 는 고유한 속성 키 값으로 속성을 식별하는 최신 인터페이스입니다. MFT에 대한 지원을 제공하기 위해 IPropertyStore 에 대한 지원이 추가되었습니다. 대부분의 IPropertyBag 속성 이름 문자열에는 해당 IPropertyStore 속성 키 GUID가 있으며 대부분의 GUID에는 몇 가지 예외를 제외하고 해당 IPropertyBag 이름 문자열이 있습니다.

이 설명서에서는 속성 키 상수별 속성을 나열하지만 각 항목에는 적절한 경우 IPropertyBag 에 사용할 속성 이름 문자열 상수가 포함됩니다.

Windows Media 코덱