Bagikan melalui


Pin Port Video

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

Perangkat tangkap dengan port video perangkat keras mungkin menggunakan ekstensi port video (VPE) di Microsoft® DirectX®. Jika demikian, filter pengambilan akan memiliki pin port video (VP). Tidak ada data video yang melakukan perjalanan dari pin VP melalui grafik filter. Sebaliknya, bingkai video diproduksi dalam perangkat keras dan dikirim langsung ke memori video. Pin VP memungkinkan pesan kontrol dikirim ke perangkat keras.

Penting untuk menyambungkan pin VP, bahkan jika aplikasi Anda hanya melakukan pengambilan file tanpa pratinjau. Jika Anda membiarkan pin tidak tersambung, grafik tidak akan berjalan dengan benar. Ini berbeda dari pin pratinjau, yang tidak harus disambungkan.

Perender video DirectShow yang berbeda memberikan dukungan yang bervariasi untuk pin VP:

  • Perender Video: Sambungkan pin VP untuk menyematkan 0 pada filter Overlay Mixer, dan sambungkan filter Overlay Mixer ke Video Renderer.
  • VMR-7: Sambungkan pin VP ke filter Video Port Manager, dan sambungkan Manajer Port Video ke VMR-7.
  • VMR-9: Anda tidak dapat menggunakan VMR-9 jika perangkat memiliki pin VP, karena Direct3D 9 tidak mendukung port video. Gunakan Video Renderer atau VMR-7.

Untuk skenario port video, Overlay Mixer dan Video Renderer direkomendasikan melalui Manajer Port Video dan VMR-7, karena tidak semua driver mendukung Manajer Port Video. Secara umum, Overlay Mixer adalah opsi yang paling dapat diandalkan untuk port video.

Metode ICaptureGraphBuilder2::RenderStream secara otomatis menyisipkan Overlay Mixer jika ada pin VP. Jika Anda membangun grafik tanpa menggunakan metode ini, Anda harus memeriksa pin port video pada filter pengambilan, dan jika ada, sambungkan ke filter Overlay Mixer, seperti yang ditunjukkan pada diagram berikut.

menyambungkan pin port video ke filter mixer overlay.

Anda dapat menggunakan metode ICaptureGraphBuilder2::FindPin untuk mencari pin VP pada filter pengambilan:

hr = pBuild->FindPin(
    pCap,                    // Pointer to the capture filter.
    PINDIR_OUTPUT,           // Look for an output pin.
    &PIN_CATEGORY_VIDEOPORT, // Look for a video port pin.
    NULL,                    // Any media type.
    FALSE,                   // Pin can be connected.
    0,                       // Retrieve the first matching pin.
    &pVPPin                  // Receives a pointer to the pin.
);

Setelah Anda menambahkan Overlay Mixer ke grafik, panggil FindPin lagi untuk menemukan pin 0 pada Overlay Mixer. Sematkan 0 selalu merupakan pin input pertama pada filter.

pBuild->FindPin(pOvMix, PINDIR_INPUT, NULL, NULL, TRUE, 0, &pOVPin);

Sambungkan dua pin dengan memanggil IGraphBuilder::Connect.

pGraph->Connect(pVPPin, pOvPin);

Kemudian sambungkan pin output Overlay Mixer ke filter Video Renderer. Anda dapat menyembunyikan video dengan memanggil IVideoWindow::p ut_AutoShow dan metode IVideoWindow::p ut_Visible pada Filter Graph Manager.

Untuk penyetel TV, filter pengambilan mungkin juga memiliki pin VBI port video (PIN_CATEGORY_VIDEOPORT_VBI). Jika demikian, sambungkan pin tersebut ke filter VBI Surface Allocator. Untuk informasi selengkapnya, lihat Menampilkan Teks Tertutup.

Topik Pengambilan Tingkat Lanjut

Menggunakan Overlay Mixer di Pengambilan Video