Share via


Modo de dispositivo

[La característica asociada a esta página, DirectShow, es una característica heredada. Se ha reemplazado por MediaPlayer, IMFMediaEngine y Captura de audio/vídeo en Media Foundation. Esas características se han optimizado para Windows 10 y Windows 11. Microsoft recomienda encarecidamente que el nuevo código use MediaPlayer, IMFMediaEngine y Audio/Video Capture en Media Foundation en lugar de DirectShow, siempre que sea posible. Microsoft sugiere que el código existente que usa las API heredadas se reescriba para usar las nuevas API si es posible.

Los videocámaras IEEE 1394 y USB pueden cambiar entre el modo de cámara y la grabadora de cinta de vídeo (VTR). Cuando un videocámara IEEE 1394 cambia los modos, el dispositivo se restablece y la aplicación debe enumerarlo de nuevo. No hay forma de que una aplicación cambie el modo mediante programación. Las videocámaras USB, por otro lado, pueden cambiar entre los modos de cámara y VTR sin restablecer, y la aplicación puede cambiar el modo.

Controlador MSDV

Para obtener el modo actual en un dispositivo IEEE 1394, llame al método IAMExtDevice::GetCapability con el valor ED_DEVCAP_DEVICE_TYPE. Si el método devuelve el valor ED_DEVTYPE_VCR, el dispositivo está en modo VTR y tiene funciones como pausa, detención, avance rápido y rebobinado. De lo contrario, si el método devuelve ED_DEVTYPE_CAMERA, el dispositivo está en modo de cámara. En el ejemplo de código siguiente se muestra cómo consultar el tipo de dispositivo:

if (MyDevCap.bHasDevice) 
{
    LONG lDeviceType = 0;
    MyDevCap.pDevice->GetCapability(ED_DEVCAP_DEVICE_TYPE, &lDeviceType, 0);

    if (lDeviceType == ED_DEVTYPE_VCR) 
    {
        // Device is a VTR. Enable all VTR functions.
    }
    else 
    {
        // Device is a camera. 
        // Enable record and record-pause; disable other functions.
    }
}

Si la videocámara se queda sin conexión, debe consultarla de nuevo cuando esté disponible a continuación. El administrador de gráficos de filtros publica un evento de EC_DEVICE_LOST cuando se quita el dispositivo.

Controlador UVC

Dado que los dispositivos de vídeo USB pueden cambiar los modos sin restablecer, el código que se muestra en los ejemplos anteriores no es confiable para los dispositivos USB. En su lugar, use la interfaz ISelector para obtener el modo actual. También puedes usar esta interfaz para cambiar los modos mediante programación si el dispositivo lo admite.

Control de una videocámara DV