Pin porta video
[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, IMFMediaEnginee Acquisizione audio/video in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente di usare un nuovo codice MediaPlayer, IMFMediaEngine e Acquisizione audio/video in Media Foundation anziché DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.
Un dispositivo di acquisizione con una porta video hardware potrebbe usare le estensioni delle porte video (VPE) in Microsoft® DirectX®. In tal caso, il filtro di acquisizione avrà un pin di porta video (VP). Non viene eseguito alcun viaggio di dati video dal pin VP attraverso il grafico del filtro. I fotogrammi video vengono invece prodotti nell'hardware e inviati direttamente alla memoria video. Il pin VP consente di inviare messaggi di controllo all'hardware.
È importante connettere il pin VP, anche se l'applicazione esegue solo l'acquisizione di file senza anteprima. Se si lascia il pin non connesso, il grafico non verrà eseguito correttamente. Questo è diverso dai pin di anteprima, che non devono essere connessi.
I diversi renderer video DirectShow offrono supporto variabile per i pin VP:
- Video Renderer: connettere il pin VP per aggiungere 0 al filtro mixer di sovrimpressione e connettere il filtro Mixer di sovrimpressione al renderer video.
- VMR-7: connettere il pin VP al filtro gestione porte video e connettere Gestione porte video a VMR-7.
- VMR-9: non è possibile usare VMR-9 se il dispositivo ha un pin VP, perché Direct3D 9 non supporta le porte video. Usare il renderer video o VMR-7.
Per gli scenari di porte video, il mixer di sovrimpressione e il renderer video sono consigliati tramite Gestione porte video e VMR-7, perché non tutti i driver supportano Gestione porte video. In generale, overlay mixer è l'opzione più affidabile per le porte video.
Il metodo ICaptureGraphBuilder2::RenderStream inserisce automaticamente overlay mixer se è presente un pin VP. Se si compila il grafico senza usare questo metodo, è consigliabile verificare la presenza di un pin di porta video nel filtro di acquisizione e, se presente, connetterlo al filtro Mixer di sovrapposizione, come illustrato nel diagramma seguente.
È possibile usare il metodo ICaptureGraphBuilder2::FindPin per cercare un pin VP nel filtro di acquisizione:
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.
);
Dopo aver aggiunto overlay mixer al grafico, chiama FindPin di nuovo per trovare il pin 0 nel mixer di sovrimpressione. Il pin 0 è sempre il primo pin di input nel filtro.
pBuild->FindPin(pOvMix, PINDIR_INPUT, NULL, NULL, TRUE, 0, &pOVPin);
Connettere i due pin chiamando IGraphBuilder::Connect.
pGraph->Connect(pVPPin, pOvPin);
Connettere quindi il pin di output di Overlay Mixer al filtro Video Renderer. È possibile nascondere il video chiamando i metodi IVideoWindow::p ut_AutoShow e IVideoWindow::p ut_Visible in Filter Graph Manager.
Per i sintonizzatori TV, il filtro di acquisizione potrebbe avere anche un pin VBI della porta video (PIN_CATEGORY_VIDEOPORT_VBI). In tal caso, connettere il pin al filtro allocatore surface VBI. Per altre informazioni, vedere Visualizzazione di sottotitoli chiusi.
Argomenti correlati