設定編解碼器 DMO
本主題描述設定編解碼器 DMO 的程式。 每個編解碼器都有特定的程式,但這裡會說明所有程式通用的資訊。
設定 DMO 輸入和輸出
每個 DMO 都支援特定的輸入和輸出類型。 您可以針對輸入呼叫 IMediaObject::GetInputType 來擷取輸入和輸出支援的型別,並針對輸出呼叫 IMediaObject::GetOutputType。 您可以列舉支援的格式,方法是對任一方法進行重複呼叫,並隨著每個呼叫遞增類型索引。 當索引超過最終支援的型別時,呼叫會傳回DMO_E_NO_MORE_ITEMS。
針對視訊編解碼器,指定的媒體子類型只會列舉一個輸出類型或輸入類型。 針對音訊編解碼器,會列舉每個個別支持的類型。 如需個別編解碼器支援型別的詳細資訊,請參閱 使用音訊 和 使用視訊。
設定輸入和輸出數據流的媒體類型之後,請分別呼叫 IMediaObject::SetInputType 和 IMediaObject::SetOutputType 來設定它們。 如果指定的型別無效,這兩種方法都會傳回 DMO_E_TYPE_NOT_ACCEPTED。
設定編碼器 DMO(DirectX Media Object)以進行編碼
所有 Windows 媒體音訊和視訊編解碼器都支援各種不同的編碼功能。 這些功能通常是透過在 DMO 上使用 IPropertyBag 介面的方法來設定屬性。 某些屬性是使用特製化編解碼器介面來設定。 這些介面會針對 Codec Objects一節中的每個編解碼器列出。
設定編碼 DMO 之作業的一般順序如下:
- 使用 IPropertyBag方法,視需要設定編解碼器功能。
- 如有需要,請使用編解碼器 DMO 介面來設定其他功能。
- 設定輸入和輸出類型。 應該設定型別的順序會因個別編解碼器而異。 如需詳細資訊,請參閱 使用音訊 和 使用視訊。
設定解碼用的編解碼器 DMO
譯碼比編碼更簡單,因為支援較少的譯碼器功能。
設定譯碼 DMO 的作業一般順序如下:
- 使用 IPropertyBag方法,視需要設定譯碼器功能。
- 將輸入類型設定為用於編碼器輸出的類型。
- 設定輸出類型。 針對不同的輸入,支持的輸出類型不同。
注意
請務必針對譯碼器輸入使用與編碼器輸出相同的媒體類型。 這是因為 Windows 媒體音訊和視訊編解碼器使用包含額外數據的媒體格式。 此數據會附加至 DMO_MEDIA_TYPE 結構 pbFormat 成員所指向的結構(通常 VIDEOINFOHEADER 或 WAVEFORMATEX)。 對於某些類型,額外的數據是列舉編碼器輸出類型的一部分。 其他類型會要求您手動附加此數據。 如果沒有擴充格式數據,就無法將壓縮的內容譯碼。
相關主題