Bagikan melalui


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

Bagian ini menjelaskan arsitektur keseluruhan DMO.

Stream

DMO adalah objek yang mengambil input m dan menghasilkan output n. Input dan output disebut aliran . Setiap DMO memiliki setidaknya satu aliran. Aliran bukan objek; mereka hanya dirujuk pada DMO berdasarkan nomor indeks. Jumlah aliran diperbaiki pada waktu desain.

Jenis Media

Semua data ditik menggunakan jenis media , yang menentukan cara menginterpretasikan konten data. Misalnya, video RGB 320 x 240 24-bit adalah satu jenis; 44.1-kilohertz (kHz) 16-bit stereo PCM audio adalah jenis lain. Jenis media dijelaskan menggunakan struktur DMO_MEDIA_TYPE. Sebelum klien dapat memproses data apa pun, klien harus mengatur jenis media untuk setiap aliran di DMO.

Biasanya, aliran dapat menerima berbagai jenis media. Beberapa DMO mendukung berbagai jenis yang lebih luas daripada yang lain. Antarmuka DMO menentukan metode bagi klien untuk menemukan jenis yang didukung. Misalnya, satu DMO mungkin mendukung video RGB pada kedalaman bit apa pun, sementara yang lain mungkin hanya mendukung RGB 24-bit. Selain itu, DMO mungkin terbatas pada kombinasi input dan output tertentu. Misalnya, jika jenis input adalah video 16-bit, aliran output mungkin memerlukan kedalaman bit yang sama. Klien dapat menghitung jenis pilihan setiap aliran dan kemudian menguji kombinasi tertentu.

Buffer

Dalam model DMO default, klien mengalokasikan buffer input dan buffer output terpisah. Ini mengisi buffer input dengan data dan mengirimkannya ke DMO, dan DMO menulis data baru ke dalam buffer output.

Secara opsional, DMO dapat mendukung pemrosesan "di tempat". Dengan pemrosesan di tempat, DMO menulis output langsung ke buffer input, melalui data asli. Pemrosesan di tempat menghilangkan kebutuhan akan buffer terpisah. Di sisi lain, ini mengubah data asli, yang mungkin tidak dapat diterima untuk beberapa aplikasi.

Model buffering default (non-tempat) didukung melalui antarmukaIMediaObject. Semua DMO harus mengimplementasikan antarmuka ini. Jika DMO mendukung pemrosesan di tempat, DMO juga mengekspos antarmuka IMediaObjectInPlace. Klien bertanggung jawab untuk mengalokasikan semua buffer, baik input maupun output.

Tentang DMO