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


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

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

Видеокамеры IEEE 1394 и USB могут переключаться между режимом камеры и видеомагнитофона (VTR). Когда видеокамера 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