Режим устройства
[Функция, связанная с этой страницей, 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