Bagikan melalui


Manfaat DMO

[Fitur yang terkait dengan halaman ini, DirectShow, adalah fitur warisan. Ini telah digantikan oleh MediaPlayer, IMFMediaEngine, dan Pengambilan Audio /Video di Media Foundation. Fitur-fitur tersebut telah dioptimalkan untuk Windows 10 dan Windows 11. Microsoft sangat menyarankan agar kode baru menggunakan MediaPlayer, IMFMediaEngine dan Pengambilan Audio/Video di Media Foundation alih-alih DirectShow, jika memungkinkan. Microsoft menyarankan agar kode yang ada yang menggunakan API warisan ditulis ulang untuk menggunakan API baru jika memungkinkan.]

DMO menawarkan keuntungan berikut:

  • Mereka umumnya lebih kecil dan lebih sederhana daripada filter DirectShow, karena mendukung lebih sedikit fungsionalitas.
  • Filter ini lebih fleksibel daripada filter DirectShow karena tidak memerlukan grafik filter. Anda dapat menggunakannya dengan DirectShow saat Anda memerlukan layanan yang disediakan DirectShow, seperti sinkronisasi, koneksi cerdas, penanganan otomatis aliran data, dan manajemen utas. Klien yang tidak memerlukan layanan ini dapat mengakses DMO secara langsung.
  • DMO selalu melakukan pemrosesan data sinkron, yang menghilangkan banyak masalah utas yang harus Anda pertimbangkan jika Anda menulis filter.
  • Tidak seperti codec ACM dan VCM tradisional, DMO didasarkan pada Model Objek Komponen (COM), sehingga dapat diperluas melalui QueryInterface.
  • DMO mendukung model streaming yang lebih umum daripada codec ACM atau VCM. Seperti filter DirectShow, DMO dapat mendukung beberapa input dan beberapa output.

Untuk alasan ini, DMO sekarang direkomendasikan sebagai solusi untuk menulis encoder, decoder, dan efek audio. Banyak skenario lain juga dimungkinkan, tergantung pada kebutuhan aplikasi.

Perbedaan DMO dari Filter DirectShow

Filter DirectShow tidak dapat berfungsi di luar grafik filter DirectShow. Di DirectShow, Filter Graph Manager menengahi antara aplikasi dan filter. Filter DirectShow melakukan sebagian besar pekerjaan yang diperlukan untuk mengalirkan data, termasuk:

  • Mengalokasikan buffer.
  • Menegosiasikan jenis media dan koneksi ke filter lain.
  • Mendorong data melalui grafik filter.
  • Mengirim peristiwa ke Filter Graph Manager.
  • Menyinkronkan beberapa utas.

Sebaliknya, DMO tidak melakukan hal-hal ini. Sebaliknya, jenis tugas ini adalah tanggung jawab klien menggunakan DMO. Klien mengalokasikan buffer, mengisinya dengan data, dan mengirimkannya ke DMO. DMO memproses data, dan klien mengambil buffer output yang dihasilkan.

Tentang DMO