Interfacce di dispositivo esterne per le videocamere DV

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, FMMediaEngine e Audio/Video Capture in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer, FMMediaEngine e Audio/Video Capture 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.

Il filtro Di acquisizione video WDM espone tre interfacce per controllare una videocamera.

Etichetta Valore
IAMExtDevice Interfaccia di base per il controllo del dispositivo esterno.
IAMExtTransport Controlla le funzioni del registro virtuale.
IAMTimecodeReader Legge il codice temporale dal dispositivo.

 

Nota

Per usare queste interfacce con il driver di videocamera MSDV, includere il file di intestazione XPrtDefs.h nel progetto.

 

Dopo aver selezionato un dispositivo di acquisizione e creare un'istanza del filtro di acquisizione, eseguire una query sul filtro per queste interfacce. Nell'esempio seguente viene dichiarata una struttura personalizzata che contiene i puntatori di interfaccia, insieme ai valori booleani che specificano la disponibilità di ogni interfaccia:

struct _MyDevCap
{
    IAMExtDevice       *pDevice;
    IAMExtTransport    *pTransport;
    IAMTimecodeReader  *pTimecode;
    BOOL                bHasDevice;
    BOOL                bHasTransport;
    BOOL                bHasTimecode;
} MyDevCap;

HRESULT hr;
IBaseFilter *pDVCam;  // Pointer to the capture filter.

// Create an instance of the capture filter (not shown).

hr = pDVCam->QueryInterface(IID_IAMExtDevice, (void **)&MyDevCap.pDevice);
MyDevCap.bHasDevice = (SUCCEEDED(hr));

hr = pDVCam->QueryInterface(IID_IAMExtTransport, (void **)&MyDevCap.pTransport);
MyDevCap.bHasTransport = (SUCCEEDED(hr));

hr = pDVCam->QueryInterface(IID_IAMTimecodeReader, (void **)&MyDevCap.pTimecode);
MyDevCap.bHasTimecode = (SUCCEEDED(hr));

Controllo di una videocamera DV