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


Драйвер MSDV

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

MSDV — это драйвер microsoft Windows Driver Model (WDM) для цифровых видеокамер. Драйвер отображается как фильтр DirectShow, когда устройство подключено к сети. Он перечисляется в двух категориях фильтров:

  • CLSID_VideoInputDeviceCategory ("Источники захвата видео")
  • AM_KSCATEGORY_RENDER ("Устройства потоковой отрисовки WDM")

Понятное имя фильтра — Microsoft DV Camera and VCR, или локализованный эквивалент. На некоторых устройствах свойство Description содержит описание конкретной модели, которое можно использовать вместо универсального понятного имени. Дополнительные сведения см. в разделе Выбор устройства захвата.

MSDV имеет два выходных контакта. Один контакт предоставляет видеокадры, содержащие чередующиеся аудио- и видеоданные. Другой контакт предоставляет кадры только для видео без звука. MSDV не может выполнять потоковую передачу из обоих контактов одновременно, поэтому одновременно можно подключить только один выходной контакт. Дополнительные сведения о записи видео с устройства DV см. в разделе Запись DV в файл.

запись dv-данных с устройства

Большинство цифровых видеокамер имеют подсоединитель видеомагнитофона (VTR), который может передавать данные с ленты на компьютер. Для приложения запись с ленты работает так же, как и запись видеотрансляции. Единственное отличие заключается в том, что приложение должно управлять внешним транспортом ленты — запускать и останавливать ленту, перемотка и т. д. Для этой цели MSDV предоставляет интерфейсы IAMExtDevice, IAMExtTransport и IAMTimecodeReader . Дополнительные сведения об управлении VTR см. в разделе Управление цифровой видеокамерой.

Вы также можете передать DV с компьютера на видеокамеру. Затем видео можно просмотреть на экране камеры или записать на ленту. Для поддержки этой функции MSDV имеет входной контакт, который может принимать поток DV с чередованием. Когда входной контакт подключен, MSDV выступает в качестве фильтра отрисовщика, а не фильтра захвата. MSDV не поддерживает поиск в этом режиме. Дополнительные сведения об отправке DV на устройство см. в разделе Передача DV из файла на ленту.

передача данных DV на устройство

Обратите внимание, что входные и выходные контакты не могут быть подключены одновременно, так как устройство не может выполнять потоковую передачу в обоих направлениях одновременно.

Во многих видеокамерах переключение между режимами VTR и режимами камеры приводит к отключению устройства. Таким образом, DirectShow может потерять устройство, когда пользователь переключает режимы. Сведения о событиях удаления устройств см. в разделе Уведомление об удалении устройства.

Комментарии

Сведения о том, какие форматы DV поддерживаются драйвером MSDV, см. в разделе Dv Video Subtypes.

Некоторые советы по созданию графов фильтров с помощью MSDV:

  • IGraphBuilder::Render нельзя использовать для отрисовки выходных выводов в MSDV. (Диспетчер графов фильтров пытается подключить выходной контакт к входному контакту MSDV, что завершается ошибкой.) Вместо этого используйте IGraphBuilder::Connect или ICaptureGraphBuilder2::RenderStream.

  • Если граф фильтров содержит MSDV, MSDV должен предоставить эталонные часы для графа. С Версии DirectX 8.0 диспетчер графов фильтров автоматически выбирает MSDV в качестве эталонных часов. В более ранних версиях следует вызывать метод IMediaFilter::SetSyncSource в диспетчере фильтров Graph. Дополнительные сведения о часах см. в разделе Time и Clocks in DirectShow.

  • В зависимости от устройства некоторые методы в IAMExtDevice, IAMExtTransport и IAMTimeCodeReader могут возвращать коды ошибок Windows вместо значений HRESULT . Возможные коды ошибок включают следующие.

    Код ошибки Описание
    ERROR_TIMEOUT Истекло время ожидания команды внешнего устройства.
    ERROR_REQ_NOT_ACCEP Устройство не приняло эту команду внешнего устройства.
    ERROR_NOT_SUPPORTED Устройство не поддерживает эту команду внешнего устройства.
    ERROR_REQUEST_ABORTED Команда внешнего устройства была прервана. Возможно, устройство было удалено или произошел сброс шины.

     

Сведения об устройстве

В Windows Millennium Edition и Windows XP моникер устройства фильтра DV поддерживает свойство Description в дополнение к свойству FriendlyName . Это свойство возвращает описание устройства, взятое из INF-файла, который обычно содержит торговую марку устройства. Однако это свойство поддерживается не для всех моделей устройств.

Дополнительные сведения о моникерах устройств см. в разделе Использование перечислителя системных устройств.

Время часов

Драйвер MSDV использует часы шины 1394, содержащиеся в пакетах данных 1394, для получения часов. Эти значения используются для отметки времени для примеров мультимедиа DV. Так как эти исходные часы не являются часами компьютерной системы, время в конечном итоге будет отклоняться от компьютерных системных часов. Однако, как отмечалось выше, диспетчер графов фильтров по умолчанию выбирает MSDV в качестве эталонных часов графа.

Интерфейс IAMDroppedFrames сообщает текущую меру отброшенных кадров драйвера; Это значение может быть не полностью синхронизировано с фактическим числом отброшенных кадров в данный момент времени. Если кадры удаляются, это означает, что система не сбалансирована (объем производства данных превышает потребление данных). Например, жесткий диск пользователя может быть недостаточно быстрым для поддержки частоты записи DV.

Фильтры DirectShow

Цифровое видео в DirectShow