共用方式為


DMO 的優點

[與此頁面 相關的功能 DirectShow是舊版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayerIMFMediaEngine音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議盡可能重寫使用舊版 API 的現有程式碼,以使用新的 API。]

DMO 提供下列優點:

  • 它們通常比 DirectShow 篩選更小且更簡單,因為它們支援較少的功能。
  • 它們比 DirectShow 篩選更有彈性,因為它們不需要篩選圖形。 當您需要 DirectShow 所提供的服務時,您可以使用它們搭配 DirectShow 使用,例如同步處理、智慧型連線、資料流程的自動處理,以及執行緒管理。 不需要這些服務的用戶端可以直接存取 DMO。
  • DMO 一律會執行同步資料處理,這可消除您在撰寫篩選時必須考慮的許多執行緒問題。
  • 不同于傳統的 ACM 和 VCM 編解碼器,DMO 是以元件物件模型為基礎, (COM) ,因此可以透過 QueryInterface擴充它們。
  • DMO 支援比 ACM 或 VCM 編解碼器更通用的串流模型。 如同 DirectShow 篩選,DMO 可以支援多個輸入和多個輸出。

基於這些原因,現在建議使用 DMO 作為撰寫編碼器、解碼器和音訊效果的解決方案。 視應用程式的需求而定,也可能會有許多其他案例。

DMO 與 DirectShow 篩選有何不同

DirectShow 篩選無法在 DirectShow 篩選圖形之外運作。 在 DirectShow 中,篩選圖形管理員會在應用程式與篩選之間協調。 DirectShow 篩選會執行串流資料所需的大部分工作,包括:

  • 配置緩衝區。
  • 交涉媒體類型和與其他篩選的連線。
  • 透過篩選圖形推送資料。
  • 將事件傳送至 Filter Graph 管理員。
  • 同步處理多個執行緒。

相反地,DMO 不會執行這些動作。 相反地,這類工作是用戶端使用 DMO 的責任。 用戶端會配置緩衝區、填入資料,並將其傳遞至 DMO。 DMO 會處理資料,而用戶端會擷取產生的輸出緩衝區。

關於 DMO