Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die Steuerelementeigenschaften im KSPROPERTYSETID_ExtendedCameraControl Eigenschaftensatz verwenden ein allgemeines Nutzlastformat zum Abrufen und Festlegen der Eigenschaftendaten.
Kopfzeile der erweiterten Kameraeigenschaften
Alle Datenpakete beginnen mit einer KSCAMERA_EXTENDEDPROP_HEADER Struktur. Diese Struktur enthält das PIN-Ziel mit den zugehörigen Steuerelementkennzeichnungen und -funktionen. Abhängig vom jeweiligen Steuerelement enthält das Capabilities-Element eine Reihe von Funktionen, die vom Steuerelement bereitgestellt werden. Das Flags-Element enthält die tatsächlichen Funktionen, die derzeit festgelegt oder für das Steuerelement festgelegt werden sollen.
Das PinId-Element gibt das Ziel an, das entweder die Kamera-PIN oder die Filter-PIN ist. Wenn es sich bei der Eigenschaft um ein Steuerelement auf Filterebene handelt, wird pinId auf KSCAMERA_EXTENDEDPROP_FILTERSCOPE festgelegt.
Ein Eigenschaftselement ist entweder synchron oder asynchron. Wenn das Steuerelement synchron ist, wird das KSCAMERA_EXTENDEDPROP_CAPS_ASYNCCONTROL-Flag in Fähigkeiten festgelegt. Auch, wenn das Steuerelement abgebrochen werden kann, enthält das Capabilities-Element die Flagge KSCAMERA_EXTENDEDPROP_CAPS_CANCELLABLE.
Die Nutzlastgröße wird im Size-Element festgelegt. Der Wert für "Size" ist die gesamte Größe der Nutzlast. Wenn die Eigenschaft nur die Kopfzeile verwendet , dann = sizeof(KSCAMERA_EXTENDEDPROP_HEADER). Andernfalls sizeof = (KSCAMERA_EXTENDEDPROP_HEADER) + sizeof(kontrollspezifische Daten).
Kontrolle über spezifische Daten
Einige Eigenschaftensteuerelemente verwenden eine zusätzliche Struktur, um zusätzliche Daten zu speichern. Wenn einzelne Datenwerte verwendet werden, enthalten die Eigenschaftendaten nach KSCAMERA_EXTENDEDPROP_HEADER eine Struktur vom Typ KSCAMERA_EXTENDEDPROP_VALUE. Mit der KSCAMERA_EXTENDEDPROP_VALUE-Struktur kann die Eigenschaft einen einzelnen Wert als einen von mehreren Datentypen ausdrücken.
Um zusätzliche Daten abzurufen oder festzulegen, verfügt eine Eigenschaft über eine eigene spezielle Datenstruktur nach dem KSCAMERA_EXTENDEDPROP_HEADER. Das folgende Beispiel zeigt ein Treibercodefragment, das die eigenschaftenspezifischen Daten für eine KSPROPERTY_TYPE_GET Anforderung der KSPROPERTY_CAMERACONTROL_EXTENDED_FIELDOFVIEW-Eigenschaft festlegt.
#define FL_WIDE_ANGLE 35
#define FL_NORMAL 50
PBYTE Payload = (PBYTE)PropData;
PKSCAMERA_EXTENDEDPROP_HEADER ExtendedPropHeader = (PKSCAMERA_EXTENDEDPROP_HEADER)Payload;
PKSCAMERA_EXTENDEDPROP_FIELDOFVIEW ExtendedDataFov = (PKSCAMERA_EXTENDEDPROP_FIELDOFVIEW)(Payload + sizeof(KSCAMERA_EXTENDEDPROP_HEADER));
ExtendedPropHeader->Version = 1;
ExtendedPropHeader->PinId = KSCAMERA_EXTENDEDPROP_FILTERSCOPE;
ExtendedPropHeader->Size = sizeof(KSCAMERA_EXTENDEDPROP_HEADER) + sizeof(KSCAMERA_EXTENDEDPROP_FIELDOFVIEW);
ExtendedPropHeader->Result = 0;
ExtendedPropHeader->Flags = 0;
ExtendedPropHeader->Capability = 0;
ExtendedDataFov->NormalizedFocalLengthX = FL_WIDE_ANGLE;
ExtendedDataFov->NormalizedFocalLengthY = FL_WIDE_ANGLE;
ExtendedDataFov->Flag = 0;
ExtendedDataFov->Reserved = 0;