Bagikan melalui


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.
Panggil metode Lock2D untuk mengakses buffer 2-D dalam format aslinya. Format asli mungkin tidak bersebelahan. Metode IMFMediaBuffer::Lock buffer mengembalikan representasi buffer yang berdekatan. Namun, ini mungkin memerlukan salinan internal dari format asli. Oleh karena itu, untuk buffer 2-D, Anda harus menggunakan metode Lock2D dan menghindari metode Lock . Karena metode Lock dapat menyebabkan hingga dua salinan buffer, metode Lock2D umumnya lebih efisien dan harus digunakan jika memungkinkan. Untuk mengetahui apakah buffer yang mendasar berdampingan, panggil IMF2DBuffer::IsContiguousFormat.

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)

Lihat juga

Buffer Media

Antarmuka Media Foundation

Buffer Video Tidak Dikompresi