Bagikan melalui


Pemrosesan In-Place

[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.]

Transformasi data tertentu dapat dicapai dengan langsung memodifikasi data. Ini disebut pemrosesan di tempat . Banyak efek audio dan video dapat dilakukan dengan cara ini. Jika DMO mendukung pemrosesan di tempat, DMO akan mengekspos antarmuka IMediaObjectInPlace . Pemrosesan di tempat umumnya lebih efisien daripada menggunakan buffer terpisah untuk output. (Satu pengecualian utama adalah ketika buffer berada di memori video. Dalam situasi itu, operasi baca jauh lebih lambat daripada operasi tulis, sehingga pemrosesan di tempat tidak disarankan.)

Untuk memproses data di tempat, klien melakukan satu panggilan ke metode IMediaObjectInPlace::P rocess , daripada panggilan terpisah ke ProcessInput dan ProcessOutput. Metode Proses sinkron; semua pemrosesan terjadi di dalam panggilan. Selain itu, pemrosesan di tempat tidak menggunakan objek IMediaBuffer . Metode Proses mengambil penunjuk langsung ke buffer memori.

DMO yang mendukung pemrosesan di tempat masih harus mengimplementasikan antarmuka IMediaObject , termasuk metode ProcessInput dan ProcessOutput . Klien dapat memilih apakah akan menggunakan pemrosesan di tempat atau menggunakan buffer terpisah. Namun, jangan mencampur dua jenis pemrosesan. Jika Anda memanggil Proses, jangan panggil ProcessInput atau ProcessOutput, dan sebaliknya.

Ekor Efek

DMO di tempat mungkin membuat beberapa output tambahan setelah input berhenti. Ini disebut ekor efek. Misalnya, efek reverb berlanjut setelah input mencapai keheningan. Jika ada ekor efek, metode Proses mengembalikan S_FALSE. Setelah aplikasi memproses semua datanya, aplikasi dapat menghasilkan ekor efek dengan mengirim buffer kosong ke metode Proses .

Langsung Hosting DMO