Dukungan Sampel yang Dialokasikan Pengguna

[Fitur yang terkait dengan halaman ini, Windows Media Format 11 SDK, adalah fitur warisan. Ini telah digantikan oleh Pembaca Sumber dan Penulis Sink. Pembaca Sumber dan Penulis Sink telah dioptimalkan untuk Windows 10 dan Windows 11. Microsoft sangat menyarankan agar kode baru menggunakan Pembaca Sumber dan Penulis Sink alih-alih Windows Media Format 11 SDK, jika memungkinkan. Microsoft menyarankan agar kode yang ada yang menggunakan API warisan ditulis ulang untuk menggunakan API baru jika memungkinkan.]

Dalam keadaan normal, objek pembaca dan objek pembaca sinkron membuat objek buffer baru untuk setiap sampel yang dikirimkan ke aplikasi Anda. Ini karena objek bacaan tidak memiliki cara untuk mengetahui apa yang dilakukan aplikasi Anda dengan sampel setelah mendapatkannya. Meskipun banyak aplikasi membaca sampel hanya untuk segera merendernya, beberapa aplikasi mungkin perlu mempertahankan sampel untuk waktu yang lama. Oleh karena itu, objek baca tidak dapat menggunakan kembali salah satu buffer yang dialokasikannya; ini mengirimkannya ke aplikasi Anda, yang kemudian memiliki kontrol atasnya.

Masalah dengan pendekatan ini adalah bahwa file dapat berisi sejumlah besar sampel. Jika masing-masing memerlukan objek buffer baru untuk dibuat, banyak waktu prosesor terbuang sia-sia mengalokasikan dan melepaskan memori. Dalam aplikasi yang sensitif terhadap waktu seperti pemutar media, overhead ini bisa sangat merugikan performa.

Untuk meringankan masalah performa sampel yang dialokasikan pembaca, pembaca dan pembaca sinkron mendukung sampel yang dialokasikan pengguna. Untuk menggunakan sampel yang dialokasikan oleh aplikasi Anda, objek baca melakukan panggilan ke metode panggilan balik alokasi sampel yang Anda terapkan. Logika yang digunakan oleh panggilan balik untuk mengirimkan buffer ke objek baca sepenuhnya terserah Anda. Anda dapat menggunakan kumpulan buffer untuk seluruh file atau menggunakan beberapa kumpulan buffer, satu untuk setiap output atau aliran, atau skema lain yang berfungsi untuk aplikasi Anda.

Mengalokasikan Buffer untuk Pembacaan File

Fitur Pembacaan File