Externe Geräteschnittstellen für DV-Camcorder

[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde von MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation abgelöst. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code mediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet, wenn möglich. Microsoft schlägt vor, dass vorhandener Code, der die Legacy-APIs verwendet, so umgeschrieben wird, dass nach Möglichkeit die neuen APIs verwendet werden.]

Der WDM-Videoaufnahmefilter macht drei Schnittstellen zum Steuern eines Camcorders verfügbar.

Bezeichnung Wert
IAMExtDevice Die Basisschnittstelle für die Steuerung externer Geräte.
IAMExtTransport Steuert die VcR-Funktionen.
IAMTimecodeReader Liest den Timecode vom Gerät.

 

Hinweis

Um diese Schnittstellen mit dem MSDV-Camcordertreiber zu verwenden, schließen Sie die Headerdatei XPrtDefs.h in Ihr Projekt ein.

 

Nachdem Sie ein Aufnahmegerät ausgewählt und eine instance des Erfassungsfilters erstellt haben, fragen Sie den Filter nach diesen Schnittstellen ab. Im folgenden Beispiel wird eine benutzerdefinierte Struktur deklariert, die die Schnittstellenzeiger zusammen mit booleschen Werten enthält, die die Verfügbarkeit der einzelnen Schnittstellen angeben:

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));

Steuern eines DV-Camcorders