KSPROPERTY_CAMERACONTROL_EXTENDED_OPTIMIZATIONHINT (otimização de hardware expandida)

KSPROPERTY_CAMERACONTROL_EXTENDED_OPTIMIZATIONHINT é usado para controlar o caso de uso primário da captura de fotos versus captura de vídeo. Em Windows 10, esse controle é estendido para dar suporte a dicas de otimização de hardware expandidas.

Tabela de resumo de uso

Escopo Control Tipo
Versão 1 Filtrar Síncrono

Os sinalizadores a seguir podem ser colocados no KSCAMERA_EXTENDEDPROP_HEADER. Sinaliza o campo para dicas de otimização de hardware no driver.

#define KSCAMERA_EXTENDEDPROP_OPTIMIZATION_DEFAULT      0x0000000000000000
#define KSCAMERA_EXTENDEDPROP_OPTIMIZATION_PHOTO        0x0000000000000001
#define KSCAMERA_EXTENDEDPROP_OPTIMIZATION_VIDEO        0x0000000000000002
#define KSCAMERA_EXTENDEDPROP_OPTIMIZATION_QUALITY      0x0000000000000004
#define KSCAMERA_EXTENDEDPROP_OPTIMIZATION_LATENCY      0x0000000000000008
#define KSCAMERA_EXTENDEDPROP_OPTIMIZATION_POWER        0x0000000000000010

As dicas PHOTO e VIDEO continuarão a ser usadas para especificar o caso de uso primário.

Por Windows 10, sinalizadores de bits adicionais auxiliam na compensação de qualidade, velocidade e consumo de energia no driver. Por padrão, o driver deve ter KSCAMERA_EXTENDEDPROP_OPTIMIZATION_PHOTO.

Se o driver der suporte a esse controle, ele deverá dar suporte a KSCAMERA_EXTENDEDPROP_OPTIMIZATION_PHOTO e KSCAMERA_EXTENDEDPROP_OPTIMIZATION_VIDEO.

Se o driver não der suporte a dicas de otimização, o driver não deverá implementar esse controle.

A tabela a seguir descreve os recursos de sinalizador.

Sinalizador Descrição
KSCAMERA_EXTENDEDPROP_OPTIMIZATION_DEFAULT Essa é uma funcionalidade obrigatória. Quando especificado, o driver deve limpar as dicas definidas anteriormente no driver e aplicar a troca de potência, qualidade e latência padrão do driver.
KSCAMERA_EXTENDEDPROP_OPTIMIZATION_PHOTO Essa é uma funcionalidade obrigatória. Quando especificado, o caso de uso principal é a captura de fotos e o driver deve priorizar a captura de fotos em vez da gravação de vídeo. Esse sinalizador pode ser especificado quando o pino de visualização está no estado parado para selecionar um modo de sensor em favor da qualidade da foto ou no estado de execução para captura de fotos somente durante a gravação de vídeo. Quando especificado para captura de fotos durante a gravação de vídeo, a falha no fluxo de vídeo é aceitável em favor de uma melhor qualidade de foto. Esse sinalizador é mutuamente exclusivo com o sinalizador VIDEO e pode ser usado com qualquer um ou dois dos sinalizadores QUALITY, LATENCY e POWER.
KSCAMERA_EXTENDEDPROP_OPTIMIZATION_VIDEO Essa é uma funcionalidade obrigatória. Quando especificado, o caso de uso principal é a captura de vídeo e o driver deve priorizar a gravação de vídeo em vez da captura de fotos. Esse sinalizador pode ser especificado quando o pino de visualização está no estado parado para selecionar um modo de sensor em favor da gravação de vídeo ou no estado de execução para captura de fotos somente durante a gravação de vídeo. Quando especificado para captura de fotos durante a gravação de vídeo, a falha no fluxo de vídeo não é permitida. Esse sinalizador é mutuamente exclusivo com o sinalizador PHOTO e pode ser usado com qualquer um ou dois dos sinalizadores QUALITY, LATENCY e POWER.
KSCAMERA_EXTENDEDPROP_OPTIMIZATION_QUALITY Essa funcionalidade é opcional. Quando especificado, o driver deve otimizar a qualidade da imagem para a captura de fotos e a qualidade do vídeo para a gravação de vídeo. Esse sinalizador pode ser especificado antes do início da captura de fotos (incluindo foto regular, VPS e PS sem quadros de histórico) e/ou gravação de vídeo, ou quando o pino está no estado parado. Esse sinalizador pode ser usado com o sinalizador PHOTO ou com sinalizadores DE LATÊNCIA ou DE ENERGIA, juntamente com o sinalizador VIDEO.
KSCAMERA_EXTENDEDPROP_OPTIMIZATION_LATENCY Essa funcionalidade é opcional. Quando especificado, o driver deve otimizar a velocidade e a latência para a captura de fotos e a gravação de vídeo. Esse sinalizador pode ser especificado antes da captura de fotos (incluindo foto regular, VPS e PS sem quadros de histórico) e\ou a gravação de vídeo é iniciada ou quando o pino está no estado parado. Esse sinalizador pode ser usado com o sinalizador PHOTO ou com sinalizadores QUALITY ou POWER junto com o sinalizador VIDEO.
KSCAMERA_EXTENDEDPROP_OPTIMIZATION_POWER Essa funcionalidade é opcional. Quando especificado, o driver deve otimizar o consumo de energia para a captura de fotos e a gravação de vídeo. Esse sinalizador pode ser especificado antes do início da captura de fotos (incluindo foto regular, VPS e PS sem histórico) e/ou gravação de vídeo, ou quando o pino está no estado parado. Esse sinalizador pode ser usado com o sinalizador QUALITY ou LATENCY, juntamente com o sinalizador VIDEO.

A tabela a seguir contém as descrições e os requisitos para os campos de estrutura KSCAMERA_EXTENDEDPROP_HEADER ao usar o controle .

Membro Valor
Versão 1
PinId KSCAMERA_EXTENDEDPROP_FILTERSCOPE (0xFFFFFFFF)
Tamanho sizeof(KSCAMERA_EXTENDEDPROP_HEADER) + sizeof(KSCAMERA_EXTENDEDPROP_VALUE)
Result Indica os resultados do erro da última operação SET. Se nenhuma operação SET tiver ocorrido, ela deverá ser 0.
Funcionalidade Deve ser um OR bit a bit dos sinalizadores KSCAMERA_EXTENDEDPROP_OPTIMIZATION_* com suporte, conforme definido acima.
Flags Este é um campo de leitura/gravação. Pode ser qualquer combinação válida dos sinalizadores KSCAMERA_EXTENDEDPROP_OPTIMIZATION_* com suporte definidos acima.

Comentários

Lembre-se dos seguintes itens ao usar dicas de otimização:

  • QUALITY/LATENCY/POWER e PHOTO/VIDEO são dois conjuntos de dicas independentes. Eles podem ser especificados juntos ao mesmo tempo ou independentemente em um momento diferente. Definir QUALIDADE/LATÊNCIA/ENERGIA não substitui PHOTO/VIDEO e vice-versa. Quando especificado em um momento diferente, o driver deve retornar as configurações atuais de ambos os conjuntos de dicas em uma chamada GET.

  • Para QUALITY/LATENCY/POWER, quando as dicas são definidas, o driver deve otimizar dentro de suas restrições. Se nenhuma otimização estiver disponível, o driver deverá ignorar as dicas.

  • Quando duas dicas são especificadas ao mesmo tempo para o caso de uso de vídeo, a otimização de cada dica pode ser menor do que quando apenas uma dica é especificada. Mais especificamente:

    • LATÊNCIA tem precedência sobre QUALIDADE ou ENERGIA quando QUALITY ou POWER também é especificado. Nesses casos, a qualidade pode ser menor do que quando apenas QUALITY é especificado e o consumo de energia pode ser maior do que quando apenas POWER é especificado.

    • Quando QUALITY e POWER são especificados, a qualidade pode ser menor do que quando apenas QUALITY é especificado, e o consumo de energia pode ser maior do que quando apenas POWER é especificado.

  • Uma dica de otimização só é fornecida como uma dica para o driver facilitar as compensações de processamento em 3A, processamento de ISP, seleção de sensor etc., dentro das restrições dos cenários de captura especificados pelo aplicativo. É importante que o desenvolvedor do aplicativo selecione e configure os controles e APIs mais adequados para um cenário de captura específico para obter os melhores resultados. Caso contrário, as dicas de otimização por si só podem ter um efeito reduzido. Por exemplo, para captura de fotos de alta qualidade, VPS ou LowLagPhoto/TakePhoto devem ser usados em vez de PS em determinadas plataformas IHV para usar a dica QUALITY. Da mesma forma, a estabilização de vídeo deverá ser desabilitada se houver uma latência ou consumo de energia ainda menor.

  • As dicas de otimização deverão ser ignoradas se forem recebidas no momento/estado diferente do especificado em cada sinalizador de capacidade.

Quando o controle de estabilização de vídeo também está habilitado no driver (ON ou AUTO):

  • O driver pode aplicar a menor estabilização agressiva de vídeo, que inclui baixa latência e/ou algoritmo de estabilização de vídeo de baixa potência para reduzir a latência de processamento e/ou o consumo de energia se a dica LATENCY e/ou POWER estiver definida. Quando a estabilização de vídeo é definida como AUTO, o driver pode desativar a estabilização de vídeo para reduzir ainda mais a latência e/ou o consumo de energia.

  • O driver pode aplicar a estabilização de vídeo agressiva mais alta para melhorar a qualidade do vídeo se a dica QUALITY estiver definida.

Requisitos

Cabeçalho: Ksmedia.h (inclua Ksmedia.h)