Compartilhar via


Interface IMFExtendedCameraControl (mfidl.h)

Essa interface é usada para configurar as propriedades estendidas de um dispositivo de captura. As propriedades e os recursos com suporte são definidos no arquivo de cabeçalho definido em ksmedia.h como constantes com a convenção de nomenclatura KSCAMERA_EXTENDEDPROP_.

Herança

A interface IMFExtendedCameraControl herda da interface IUnknown.

Métodos

A interface IMFExtendedCameraControl tem esses métodos.

 
IMFExtendedCameraControl::CommitSettings

Confirma as configurações de controle definidas para o driver da câmera.
IMFExtendedCameraControl::GetCapabilities

Consultas para recursos de propriedade compatíveis com o dispositivo de captura.
IMFExtendedCameraControl::GetFlags

Consulta sinalizadores de propriedade no dispositivo de captura.
IMFExtendedCameraControl::LockPayload

Bloqueia o buffer de conteúdo interno contido no controle de dispositivo de captura para habilitar a consulta ou a alteração do conteúdo.
IMFExtendedCameraControl::SetFlags

Define os sinalizadores de uma propriedade no dispositivo de captura.
IMFExtendedCameraControl::UnlockPayload

Desbloqueia o conteúdo bruto contido no controle de dispositivo de captura.

Comentários

Obter uma instância dessa interface chamando IMFExtendedCameraController::GetExtendedCameraControl

Propriedades sem suporte

Observe que algumas KSCAMERA_EXTENDEDPROP_ propriedades não têm suporte para essa API. Sua funcionalidade só pode ser acessada por aplicativos cliente por meio das APIs de captura de mídia do WinRT.

KSPROPERTY_CAMERACONTROL_EXTENDED_WARMSTART

O comportamento dessa propriedade é exposto por meio das seguintes APIs do WinRT:

Essas APIs fazem com que o pipeline de captura seja configurado com o tipo de mídia selecionado e coloque o pino do driver em um estado pausado, o que informa ao driver para obter os recursos de hardware alocados/configurados para a operação. Isso ajuda a minimizar a latência carregando antecipadamente a preparação de recursos.

Observe que a funcionalidade de início quente é um controle opcional para dispositivos de captura, portanto, se o controle não estiver disponível, as APIs acima não fornecerão o comportamento de início quente. Essas APIs ainda configurarão o lado do coletor da captura para que haja algum benefício em usá-las.

KSPROPERTY_CAMERACONTROL_EXTENDED_PHOTOMODE

O comportamento dessa propriedade é exposto por meio das seguintes APIs do WinRT:

Essas APIs configuram o lado da captura e do coletor do pipeline e colocam o pino do driver no estado em execução, capturando quadros, mas ainda não passando os quadros para o pipeline. Os quadros começam a passar pelo pipeline quando a operação de captura é iniciada.

Observe que essa funcionalidade é um controle opcional para dispositivos de captura, portanto, se o controle não estiver disponível, as APIs acima retornarão um erro.

Exemplos

O exemplo a seguir demonstra como definir o sinalizador KSCAMERA_EXTENDEDPROP_VIDEOTORCH_ON e confirmar a configuração.

if (FAILED(m_cameraController->GetExtendedCameraControl(MF_CAPTURE_ENGINE_MEDIASOURCE,
    KSPROPERTY_CAMERACONTROL_EXTENDED_TORCHMODE,
    cameraControl.put())))
{
    // Return false to indicate that the Torch Mode control is not available.
    return false;
}

ULONGLONG capabilities = cameraControl->GetCapabilities();

// Check if the torch can be turned on.
if (capabilities & KSCAMERA_EXTENDEDPROP_VIDEOTORCH_ON)
{
    // Check if the torch is off.
    if ((cameraControl->GetFlags() & KSCAMERA_EXTENDEDPROP_VIDEOTORCH_ON) == 0)
    {
        // Torch is off. Tell the camera to turn it on.
        check_hresult(cameraControl->SetFlags(KSCAMERA_EXTENDEDPROP_VIDEOTORCH_ON));
        // Write the changed settings to the driver.
        check_hresult(cameraControl->CommitSettings());
    }
}

Requisitos

   
Cliente mínimo com suporte Windows 10 Build 20348
Servidor mínimo com suporte Windows 10 Build 20348
Cabeçalho mfidl.h