KSPROPERTY_CAMERACONTROL_PERFRAMESETTING_SET
El identificador de propiedad KSPROPERTY_CAMERACONTROL_PERFRAMESETTING_SET que se define en KSPROPERTY_CAMERACONTROL_PERFRAMESETTING_PROPERTY se usa para establecer la configuración por fotograma en el controlador.
Resumen de uso
Para establecer la configuración de cada fotograma, el control de propiedad KSPROPERTY_CAMERACONTROL_PERFRAMESETTING_SET se envía al controlador junto con una carga de configuración por fotograma.
Esta propiedad se puede leer o escribir. Aunque se puede usar una llamada GET para devolver la última configuración por fotograma que se estableció en el controlador, la llamada GET no se expone al cliente de la aplicación y solo se emite en el momento de la inicialización cuando la canalización MF construye el control de configuración por fotograma, donde el controlador debe devolver STATUS_BUFFER_OVERFLOW con el tamaño de búfer de 0.
En una llamada GET, primero se envía un búfer de longitud cero al controlador para averiguar el tamaño de búfer de datos necesario para contener toda la configuración por fotograma que tiene el controlador. En respuesta a esta llamada, el controlador debe devolver STATUS_BUFFER_OVERFLOW con el tamaño de búfer de configuración por fotograma necesario que debe ser 0 si no se ha establecido ninguna configuración por fotograma o al menos el tamaño de KSCAMERA_PERFRAMESETTING_HEADER de lo contrario.
La carga de configuración por fotograma debe comenzar con una KSCAMERA_PERFRAMESETTING_HEADER, seguida de una o varias configuraciones de fotogramas. El número de configuraciones de marco se especifica en FrameCount. La configuración de cada fotograma debe comenzar con un KSCAMERA_PERFRAMESETTING_FRAME_HEADER, seguido de cero o más valores de configuración de elementos. El número de configuraciones de elemento se especifica en ItemCount. La configuración de cada elemento, si existe, debe comenzar con un KSCAMERA_PERFRAMESETTING_ITEM_HEADER.
Para la configuración de cada elemento, si hay una carga de valor, el KSCAMERA_PERFRAMESETTING_ITEM_HEADER debe seguir un KSCAMERA_EXTENDEDPROP_VALUE. Si hay un elemento personalizado, KSCAMERA_PERFRAMESETTING_ITEM_HEADER debe seguir un KSCAMERA_PERFRAMESETTING_CUSTOM_ITEM, seguido de los datos personalizados asociados al identificador guid especificado en KSCAMERA_PERFRAMESETTING_CUSTOM_ITEM.
Si FrameCount es 0, el controlador debe rechazar la carga de configuración por fotograma. Si ItemCount es 0, no se especifica ninguna configuración de marco. El controlador debe aplicar la configuración global al marco asociado. Por ejemplo, FrameCount = 1 y ItemCount = 0 implica una secuencia de fotos de variable de marco única con la configuración global.
En la ilustración siguiente se muestra el diseño de la estructura de datos de una configuración de carga de configuración por fotograma. En el ejemplo siguiente, una configuración por fotograma para cuatro fotogramas se configura con el marco 0 que contiene tres elementos, dos sin carga útil y uno con una carga de valor; marco 1 que contiene dos elementos, uno sin carga útil y otro con una carga útil de valor; marco 2 que contiene 0 elemento que implica la configuración global del marco 2; marco 3 que contiene cuatro elementos, uno con una carga de valor, dos cada uno con un elemento personalizado y una carga de datos personalizada, y otra sin carga útil.
El tamaño del encabezado de configuración por fotograma representa el tamaño total de carga que se rellenará en KSCAMERA_PERFRAMESETTING_HEADER. Tamaño
El tamaño del marco de configuración por fotograma representa el tamaño que se va a rellenar en KSCAMERA_PERFRAMESETTING_FRAME_HEADER. Tamaño de un marco.
El tamaño del elemento representa el tamaño que se va a rellenar en KSCAMERA_PERFRAMESETTING_ITEM_HEADER. Tamaño de un elemento.
El tamaño del elemento personalizado representa el tamaño que se va a rellenar en KSCAMERA_PERFRAMESETTING_CUSTOM_ITEM. Tamaño de un elemento personalizado.
Tiempo de exposición de la configuración por fotograma
Si se especifica el tiempo de exposición manual en cada configuración de fotogramas, KSCAMERA_EXTENDEDPROP_VALUE. Value.ll contendrá el tiempo de exposición deseado en una llamada SET y el tiempo de exposición actual en uso en una llamada GET .
Compensación de la configuración por fotograma
Si se especifica la compensación de la configuración manual en cada configuración de fotogramas, KSCAMERA_EXTENDEDPROP_VALUE. Value.l contendrá la compensación de exposición deseada en una llamada SET y la compensación de exposición actual en uso en una llamada GET .
Enfoque de configuración por fotograma
Si la configuración manual por fotograma se especifica en la configuración de cada fotograma, KSCAMERA_EXTENDEDPROP_VALUE. Value.ul contendrá la posición de lente deseada en una llamada SET y la posición actual de la lente en uso en una llamada GET .
ISO de configuración por fotograma
Si el controlador no admite KSCAMERA_EXTENDEDPROP_ISO_MANUAL, no se incluye la carga de valor. De lo contrario, el encabezado de elemento de configuración por fotograma debe seguir un KSCAMERA_EXTENDEDPROP_VALUE. En una llamada SET , KSCAMERA_EXTENDEDPROP_VALUE. Value.ul contiene la velocidad ISO deseada si se admite KSCAMERA_EXTENDEDPROP_ISO_MANUAL y se especifica en KSCAMERA_PERFRAMESETTING_ITEM_HEADER. Marcas.
A continuación se muestra el aspecto que debe tener el encabezado de elemento y la carga de valor cuando la funcionalidad ISO de configuración por fotograma es KSCAMERA_EXTNDEDPROP_ISO_AUTO, KSCAMERA_EXTENDEDPROP_ISO_MANUAL (min = 30, max = 210, paso =20) como se indica a continuación:
KSCAMERA_EXTNDEDPROP_ISO_AUTO,
KSCAMERA_EXTENDEDPROP_ISO_MANUAL (min = 30, max = 210, step =20)
Si la velocidad ISO es 70
KSCAMERA_PERFRAMESETTING_ITEM_HEADER.Flags = KSCAMERA_EXTENDEDPROP_ISO_MANUAL KSCAMERA_EXTENDEDPROP_VALUE.Value.ul = 70
Si la velocidad ISO es 50
KSCAMERA_PERFRAMESETTING_ITEM_HEADER.Flags = KSCAMERA_EXTENDEDPROP_ISO_MANUAL KSCAMERA_EXTENDEDPROP_VALUE.Value.ul = 50
En la tabla siguiente se resumen los controles y valores disponibles para la configuración por fotograma. La disponibilidad real viene determinada por la funcionalidad real del controlador, que se puede obtener mediante KSPROPERTY_CAMERACONTROL_PERFRAMESETTING_CAPABILITY.
Nombre | Valores disponibles |
---|---|
Tiempo de exposición |
Auto o tiempo en 100 nanosegundos. |
Intermitente |
Encendido/apagado, apagado automático, reducción de ojos rojos encendido/apagado, potencia de flash en porcentaje. |
Compensación de exposición |
Valor del paso de compensación o automático. |
Velocidad ISO |
Automático o manual con valor ISO entero. |
Foco |
Posición de lente automática o lógica. Este valor no tiene una unidad específica. |
Propiedades personalizadas |
El OEM lo define con un GUID personalizado y datos de propiedad. |
Imagen de confirmación |
Activado/Desactivado |
Para pasar los datos de propiedad personalizados a la configuración por fotograma, la aplicación hace lo siguiente:
Llama a QueryInterface en IFrameSettingsControls para obtener la interfaz IMFGetServices asociada a la configuración por fotograma.
Llama a GetService desde la interfaz IMFGetServices para crear una interfaz IMFAttributes personalizada en la configuración por fotograma.
Llama a SetUINT32, SetBlob, etc. en el GUID de propiedad personalizada para establecer los datos de propiedad personalizados en los IMFAttributes asociados a la configuración por fotograma.
El marco buscará los IMFAttributes personalizados para construir las cargas de elementos personalizados si hay alguna al ensamblar la carga de configuración por fotograma que se va a establecer en el controlador.
El campo LoopCount de KSCAMERA_PERFRAMESETTING_HEADER especifica el número de repeticiones que la configuración por fotograma se debe aplicar a los fotogramas futuros que se capturarán en una secuencia de fotos. LoopCount está codificado de forma rígida en 1 por la canalización (por ejemplo, la configuración por fotograma solo se aplicará una vez sin repeticiones adicionales). El campo FrameCount de KSCAMERA_PERFRAMESETTING_HEADER especifica el número de configuraciones de fotograma que se deben aplicar a los fotogramas de cada repetición.
El campo ItemCount de KSCAMERA_PERFRAMESETTING_FRAME_HEADER especifica el número de configuraciones de elementos que se deben aplicar al marco correspondiente. Si ItemCount es 0, la configuración global debe aplicarse al marco correspondiente.
En la tabla siguiente se enumeran las posibles configuraciones y los tipos de secuencia de fotos correspondientes.
LoopCount | FrameCount | ItemCount | Tipo |
---|---|---|---|
L(L=1) |
N(N>0) |
S(S>=0) |
Secuencia de fotos de variable finita |
L(L=1) |
1 |
0 |
Secuencia de fotos de variable finita de marco con configuración global |
L(L=1) |
0 |
S |
Configuración no válida |
La secuencia de fotos variable se ha simplificado para realizar capturas finitas con solo una repetición. La secuencia de fotos con la configuración por fotograma siempre se marcará como una secuencia de fotos variable y siempre se requiere la carga de configuración por fotograma.
Si el recuento de bucles es L (L = 1) y el recuento de fotogramas es N (N > 0), es una secuencia de fotos variable finita. La configuración por fotograma se repetirá L = 1 veces con la configuración del fotograma N aplicada a los siguientes N fotogramas futuros en cada repetición.
Si el recuento de bucles es L (L = 1), el recuento de fotogramas es 1 y el recuento de elementos es 0, es una secuencia de fotos de variable finita de marco con configuración global.
La secuencia de fotos variable se simplifica aún más para no solicitar fotogramas anteriores. La canalización codificará de forma rígida el recuento de fotos anterior solicitado (por ejemplo, RequestedHistoryFrames) en 0. El controlador solo entrega fotogramas futuros en una secuencia de fotos variable. En la ilustración siguiente se muestra el número esperado de fotogramas que el controlador entregará en una secuencia de fotos variable. El recuento de fotos anterior se especifica en KSCAMERA_EXTENDEDPROP_PHOTOMODE. RequestedHistoryFrames por el control de propiedad extendida KSPROPERTY_CAMERACONTROL_EXTENDED_PHOTOMODE codificado de forma rígida en 0 por la canalización.
N : Frame Count
L : Loop Count
P : Past Photos Requested
T : Total number of frame delivered by driver
L = 1
P = 0
T = (N * L) + P
Para la secuencia de fotos de variable finita, el controlador debe marcar la KSSTREAM_HEADER. OptionsFlags para el último fotograma con la marca KSSTREAM_HEADER_OPTIONSF_ENDOFPHOTOSEQUENCE . Si lo hace, se asegurará de que el controlador deje de entregar fotogramas automáticamente a la canalización MF después de que se haya entregado la cantidad de fotogramas futuros esperados. Esto detiene eficazmente la secuencia de fotos y notifica al cliente de la aplicación la finalización de la secuencia de fotos. Esto sucede cuando el controlador termina de capturar el último fotograma de la secuencia de fotos de variable finita.
Requisitos
Encabezado |
Ksmedia.h |