Antarmuka IMF2DBuffer (mfobjects.h)
Mewakili buffer yang berisi permukaan dua dimensi, seperti bingkai video.
Warisan
Antarmuka IMF2DBuffer mewarisi dari antarmuka IUnknown . IMF2DBuffer juga memiliki jenis anggota ini:
Metode
Antarmuka IMF2DBuffer memiliki metode ini.
IMF2DBuffer::ContiguousCopyFrom Menyalin data ke buffer ini dari buffer yang memiliki format berdampingan. |
IMF2DBuffer::ContiguousCopyTo Menyalin buffer ini ke dalam buffer pemanggil, mengonversi data menjadi format yang berdampingan. |
IMF2DBuffer::GetContiguousLength Mengambil jumlah byte yang diperlukan untuk menyimpan konten buffer dalam format yang berdampingan. |
IMF2DBuffer::GetScanline0AndPitch Mengambil pointer ke memori buffer dan langkah permukaan. |
IMF2DBuffer::IsContiguousFormat Mengkueri apakah buffer berdampingan dalam format aslinya. |
IMF2DBuffer::Lock2D Memberi pemanggil akses ke memori di buffer. (IMF2DBuffer.Lock2D) |
IMF2DBuffer::Unlock2D Membuka kunci buffer yang sebelumnya dikunci. Panggil metode ini sekali untuk setiap panggilan ke IMF2DBuffer::Lock2D. |
Keterangan
Untuk mendapatkan penunjuk ke antarmuka ini, panggil QueryInterface pada buffer media.
Untuk menggunakan buffer 2-D, penting untuk mengetahui langkahnya, yaitu jumlah byte yang diperlukan untuk pergi dari satu baris piksel ke baris berikutnya. Langkah mungkin lebih besar dari lebar gambar, karena permukaan mungkin berisi byte padding setelah setiap baris piksel. Stride juga bisa negatif, jika piksel berorientasi bottom-up dalam memori. Untuk informasi selengkapnya, lihat Image Stride.
Setiap format video mendefinisikan representasi yang berdekatan atau dikemas . Representasi ini kompatibel dengan tata letak standar permukaan DirectX dalam memori sistem, tanpa padding tambahan. Untuk video RGB, representasi yang berdekatan memiliki nada yang sama dengan lebar gambar dalam byte, dibulatkan ke batas DWORD terdekat. Untuk video YUV, tata letak representasi yang berdampingan tergantung pada format YUV. Untuk format YUV planar, bidang Y mungkin memiliki nada yang berbeda dari bidang Anda dan V.
Jika buffer media mendukung antarmuka IMF2DBuffer, buffer yang mendasar tidak dijamin memiliki representasi yang berdekatan, karena mungkin ada byte padding tambahan setelah setiap baris piksel. Ketika buffer tidak berdekatan, metode Lock dan Lock2D memiliki perilaku yang berbeda:
- Metode Lock2D mengembalikan penunjuk ke buffer yang mendasar. Buffer mungkin tidak berdampingan.
- Metode Lock mengembalikan buffer yang dijamin berdekatan. Jika buffer yang mendasar tidak berdekatan, metode menyalin data ke dalam buffer baru, dan metode Unlock menyalinnya kembali ke buffer asli.
Untuk gambar yang tidak dikompresi, jumlah data yang valid dalam buffer ditentukan oleh lebar, tinggi, dan tata letak piksel gambar. Untuk alasan ini, jika Anda memanggil Lock2D untuk mengakses buffer, jangan mengandalkan nilai yang dikembalikan oleh IMFMediaBuffer::GetCurrentLength atau IMFMediaBuffer::GetMaxLength. Demikian pula, jika Anda memodifikasi data di buffer, Anda tidak perlu memanggil IMFMediaBuffer::SetCurrentLength untuk memperbarui ukuran. Umumnya, Anda harus menghindari pencampuran panggilan ke metode IMF2DBuffer dan IMFMediaBuffer pada buffer media yang sama.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows Vista [aplikasi desktop | Aplikasi UWP] |
Server minimum yang didukung | Windows Server 2008 [aplikasi desktop | Aplikasi UWP] |
Target Platform | Windows |
Header | mfobjects.h (termasuk Mfidl.h) |