Sampel Video
Objek sampel video adalah implementasi khusus dari antarmuka IMFSample untuk digunakan dengan Enhanced Video Renderer (EVR). Untuk membuat instans objek ini, panggil fungsi MFCreateVideoSampleFromSurface . Fungsi ini mengambil pointer ke permukaan Direct3D dan mengembalikan pointer ke antarmuka IMFSample . Jenis objek berikut harus mengalokasikan sampel menggunakan fungsi ini:
Penyaji EVR kustom. Penyaji mengalokasikan sampel video dan mengirimkannya ke metode IMFTransform::P rocessOutput mixer. Untuk informasi selengkapnya, lihat Cara Menulis Penyaji EVR.
Dekode video yang mendukung akselerasi video. Untuk informasi selengkapnya, lihat Mendukung DXVA 2.0 di Media Foundation.
Objek sampel video mengimplementasikan antarmuka berikut:
Jika parameter pUnkSurface dari MFCreateVideoSampleFromSurfacenon-NULL, sampel video yang dihasilkan berisi satu buffer media yang merangkum permukaan Direct3D. Objek buffer ini memiliki fungsionalitas terbatas:
Metode IMFMediaBuffer::Lock buffer mengembalikan E_NOTIMPL.
Buffer tidak mengimplementasikan antarmuka IMF2DBuffer .
Satu-satunya cara untuk mengakses permukaan dari buffer adalah dengan memanggil IMFGetService::GetService, menggunakan pengidentifikasi layanan MR_BUFFER_SERVICE.
Jika parameter pUnkSurface adalah NULL, sampel video dibuat dengan buffer media nol. Untuk menambahkan buffer sampel, lakukan hal berikut:
Buat permukaan Direct3D.
Buat buffer permukaan dengan memanggil MFCreateDXSurfaceBuffer. Untuk informasi selengkapnya, lihat DirectX Surface Buffer.
Tambahkan buffer ke sampel dengan memanggil IMFSample::AddBuffer.
Gunakan pendekatan ini jika Anda memerlukan memori permukaan agar dapat diakses melalui antarmuka IMF2DBuffer .
Topik terkait