Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
[Fitur yang terkait dengan halaman ini, DirectShow, adalah fitur warisan. Ini telah digantikan oleh MediaPlayer, IMFMediaEngine, dan Perekaman 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 Pengambilan Audio/Video 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.]
Jika Anda membuat grafik pengambilan video tanpa menggunakan antarmukaICaptureGraphBuilder2, dan Anda mempratinjau video menggunakan filter Video Renderer lama, maka Anda harus mengambil alih penanganan default untuk peristiwa EC_REPAINT. Meminta Filter Graph Manager untuk antarmuka IMediaEvent dan panggil metode IMediaEvent::CancelDefaultHandling dengan nilai EC_REPAINT:
IMediaEvent *pEvent = 0;
hr = pGraph->QueryInterface(IID_IMediaEvent, (void**)&pEvent);
if (SUCCEEDED(hr))
{
pEvent->CancelDefaultHandling (EC_REPAINT);
pEvent->Release();
}
Ini mencegah kemungkinan kesalahan yang dapat merusak file pengambilan Anda. Jika pengguna mencakup dan mengungkap jendela pratinjau, filter Video Renderer menerima pesan WM_PAINT. Secara default, Video Renderer meminta bingkai baru, dan Filter Graph Manager menjeda grafik untuk menyiapkan bingkai video lain. Jika itu terjadi saat grafik menulis file, grafik akan merusak file. Mengesampingkan perilaku EC_REPAINT default mencegah perender meminta bingkai baru.
Anda tidak perlu melakukan langkah ini jika Anda menggunakan antarmuka ICaptureGraphBuilder2, karena Capture Graph Builder melakukannya untuk Anda secara otomatis. Selain itu, tidak diperlukan jika Anda menggunakan Video Mixing Renderer (VMR) untuk pratinjau. VMR selalu menyediakan frame terkini, sehingga tidak mengirimkan event EC_REPAINT.
Topik terkait
-
Pemberitahuan Peristiwa di DirectShow