Поделиться через


Режим устройства

[Функция, связанная с этой страницей, DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngineи аудио и видеозахват в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать новый код MediaPlayer, IMFMediaEngine и аудио-видеозахват в Media Foundation вместо DirectShowпо возможности. Корпорация Майкрософт предлагает, что существующий код, использующий устаревшие API, будет перезаписан для использования новых API, если это возможно.]

IEEE 1394 и USB-камеры могут переключаться между режимом камеры и режимом видеозаписи (VTR). Когда режимы camcorder IEEE 1394 переключаются, устройство сбрасывается, а приложение должно снова перечислить его. Приложение не может переключить режим программным способом. С другой стороны, USB-камеры могут переключаться между режимами камеры и VTR без сброса, а приложение может изменить режим.

драйвер MSDV

Чтобы получить текущий режим на устройстве IEEE 1394, вызовите метод IAMExtDevice::GetCapability со значением ED_DEVCAP_DEVICE_TYPE. Если метод возвращает значение ED_DEVTYPE_VCR, устройство находится в режиме VTR и имеет такие функции, как пауза, остановка, быстрая переадресация и перемотка. В противном случае, если метод возвращает ED_DEVTYPE_CAMERA, устройство находится в режиме камеры. В следующем примере кода показано, как запрашивать тип устройства:

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.
    }
}

Если камкордер переходит в автономный режим, его следует запросить снова, когда он станет доступным. Диспетчер графов фильтров отправляет событие EC_DEVICE_LOST при удалении устройства.

драйвер UVC

Так как USB-видеоустройства могут переключать режимы без сброса, код, показанный в предыдущих примерах, не является надежным для USB-устройств. Вместо этого используйте интерфейс ISelector для получения текущего режима. Этот интерфейс также можно использовать для программного переключения режимов, если устройство поддерживает его.

управление DV Camcorder