共用方式為


設定編解碼器 DMO

本主題描述設定編解碼器 DMO 的程式。 每個編解碼器都有特定的程式,但這裡會說明所有程式通用的資訊。

設定 DMO 輸入和輸出

每個 DMO 都支援特定的輸入和輸出類型。 您可以呼叫 輸入的 IMediaObject::GetInputType 來擷取輸入和輸出的支援類型,並針對輸出呼叫 IMediaObject::GetOutputType 。 您可以藉由對任一方法進行重複呼叫來列舉支援的格式,並使用每個呼叫遞增類型索引。 當索引超過最終支援類型的索引時,呼叫會傳回DMO_E_NO_MORE_ITEMS。

針對視訊編解碼器,指定的媒體子類型只會列舉一個輸出類型或輸入類型。 針對音訊編解碼器,會列舉每個個別支援的類型。 如需個別編解碼器支援類型的詳細資訊,請參閱 使用音訊使用視訊

設定輸入和輸出資料流程的媒體類型之後,請分別呼叫 IMediaObject::SetInputTypeIMediaObject::SetOutputType 加以設定。 如果指定的型別無效,這兩種方法都會傳回 DMO_E_TYPE_NOT_ACCEPTED

設定編碼的編解碼器 DMO

所有 Windows 媒體音訊和視訊編解碼器都支援各種編碼功能。 這些功能通常是藉由使用 IPropertyBag 介面的方法,在 DMO 上設定屬性來設定。 某些屬性是使用特製化編解碼器介面來設定。 這些介面會針對 Codec Objects一節中的每個編解碼器列出。

設定編碼 DMO 的作業一般順序如下:

  1. 使用 IPropertyBag的方法,視需要設定編解碼器功能。
  2. 如有需要,請使用編解碼器 DMO 介面來設定其他功能。
  3. 設定輸入和輸出類型。 應設定類型的順序會因個別編解碼器而異。 如需詳細資訊,請參閱 使用音訊使用視訊

設定解碼的編解碼器 DMO

解碼比編碼更簡單,因為支援較少的解碼器功能。

設定解碼 DMO 的作業一般順序如下:

  1. 使用 IPropertyBag的 方法來設定解碼器功能。
  2. 將輸入類型設定為用於編碼器輸出的類型。
  3. 設定輸出類型。 針對不同的輸入,支援的輸出類型不同。

注意

請務必針對編碼器輸出所使用的解碼器輸入使用相同的媒體類型。 這是因為 Windows 媒體音訊和視訊編解碼器會搭配額外的資料使用媒體格式。 此資料會附加至DMO_MEDIA_TYPE結構pbFormat成員所指向的結構, (通常是VIDEOINFOHEADERWAVEFORMATEX) 。 對於某些類型,額外的資料是列舉編碼器輸出類型的一部分。 其他類型需要手動附加此資料。 如果沒有擴充格式資料,您就無法解碼壓縮的內容。

 

使用編解碼器 DMO