Bagikan melalui


Bekerja dengan Bingkai Video

[Fitur yang terkait dengan halaman ini, DirectShow, adalah fitur warisan. Ini telah digantikan oleh MediaPlayer, IMFMediaEngine, dan Tangkapan 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 Audio/Video Capture 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.]

Video yang tidak dikompresi adalah urutan bitmap yang diputar berturut-turut dengan cepat, biasanya dengan kecepatan sekitar 30 bingkai per detik. Karena sebagian besar video memasukkan grafik filter DirectShow dalam format terkompresi, aliran video umumnya melalui dekoder untuk dekompresi. Banyak dekode menghasilkan data dalam format YUV dan meninggalkan konversi akhir ke RGB untuk perangkat keras video tepat sebelum penyajian. Jika dekoder menggunakan DirectX Video Acceleration, perangkat keras video melakukan pekerjaan tambahan untuk mendekode gambar. Dengan demikian, dekompresi akhir bitmap mungkin tidak dilakukan sampai data mencapai perangkat keras video.

Tetapi untuk melakukan banyak jenis analisis, pemrosesan, atau pengeditan video, sering kali perlu untuk mengerjakan bitmap yang tidak dikompresi dalam beberapa jenis format RGB atau YUV sebelum dirender atau ditulis ke file. Pekerjaan ini biasanya dilakukan dalam filter transformasi berdasarkan kelas dasar CTransformFilter , khususnya dalam metode Transformasi . Metode ini menerima pointer ke objek IMediaSample yang merangkum data video. Metode IMediaSample::GetPointer mengembalikan penunjuk ke byte pertama data mentah. Untuk bingkai yang tidak dikompresi, data ini terdiri dari piksel yang dapat diakses atau dimodifikasi langsung oleh filter. Bagian berikut ini menyediakan informasi latar belakang yang akan membantu Anda bekerja secara efektif dengan data DIB dengan cara ini.

Catatan

Anda juga dapat memodifikasi bit dengan menggunakan fungsi GDI, GDI+, DirectDraw, atau Direct3D, tetapi teknik ini berada di luar cakupan artikel ini.

 

Bagian ini berisi topik berikut: