MSDV Driver
[O recurso associado a esta página, DirectShow, é um recurso herdado. Foi substituído por MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation em vez de DirectShow, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]
MSDV é o driver WDM (Modelo de Driver do Microsoft Windows) para filmadoras DV. O driver aparece como um filtro DirectShow quando o dispositivo está conectado. Ele é enumerado em duas categorias de filtro:
- CLSID_VideoInputDeviceCategory ("Fontes de Captura de Vídeo")
- AM_KSCATEGORY_RENDER ("Dispositivos de Renderização de Streaming WDM")
O nome amigável do filtro é Microsoft DV Camera and VCR
ou um equivalente localizado. Em alguns dispositivos, a propriedade Description contém uma descrição do modelo específico, que pode ser usada em vez do nome amigável genérico. Para obter mais informações, consulte Selecionar um dispositivo de captura.
O MSDV tem dois pinos de saída. Um pino fornece quadros DV que contêm dados de áudio e vídeo intercalados. O outro pino fornece quadros somente de vídeo sem áudio. O MSDV não pode transmitir de ambos os pinos ao mesmo tempo, portanto, apenas um pino de saída pode ser conectado por vez. Para obter mais informações sobre como capturar vídeos de um dispositivo DV, consulte Capturar DV para arquivo.
A maioria das câmeras DV tem uma subunidade de gravador de vídeo (VTR), que pode transmitir dados da fita para o computador. Para o aplicativo, a captura de fita funciona da mesma forma que capturar vídeo ao vivo. A única diferença é que o aplicativo deve controlar o transporte de fita externo – iniciar e parar a fita, retroceder e assim por diante. Para essa finalidade, o MSDV expõe as interfaces IAMExtDevice, IAMExtTransport e IAMTimecodeReader . Para obter mais informações sobre como controlar uma VTR, consulte Controlando uma câmera DV.
Você também pode transmitir DV do computador para a câmera. Em seguida, o vídeo pode ser exibido na tela de integração da câmera ou gravado em fita. Para dar suporte a essa funcionalidade, o MSDV tem um pin de entrada que pode receber um fluxo DE DV intercalado. Quando o pino de entrada está conectado, o MSDV atua como um filtro de renderizador em vez de um filtro de captura. O MSDV não dá suporte à busca nesse modo. Para obter mais informações sobre como enviar DV para o dispositivo, consulte Transmitir DV de Arquivo para Fita.
Observe que os pinos de entrada e saída não podem ser conectados ao mesmo tempo, porque o dispositivo não pode transmitir em ambas as direções ao mesmo tempo.
Em muitas câmeras, alternar entre o modo VTR e o modo de câmera faz com que o dispositivo desligue. Portanto, o DirectShow pode perder o dispositivo quando o usuário alterna os modos. Para obter informações sobre eventos de remoção de dispositivo, consulte Notificação de remoção de dispositivo.
Comentários
Para obter informações sobre quais formatos DV são compatíveis com o driver MSDV, consulte Subtipos de vídeo DV.
Algumas dicas sobre como criar grafos de filtro com MSDV:
Não é possível usar IGraphBuilder::Render para renderizar um pino de saída no MSDV. (O Gerenciador de Grafo de Filtro tenta conectar o pino de saída ao pino de entrada do MSDV, o que falha.) Em vez disso, use IGraphBuilder::Connect ou ICaptureGraphBuilder2::RenderStream.
Quando um grafo de filtro contém MSDV, o MSDV deve fornecer o relógio de referência para o grafo. A partir do DirectX 8.0, o Gerenciador de Grafo de Filtro escolherá automaticamente MSDV como o relógio de referência. Com versões anteriores, você deve chamar o método IMediaFilter::SetSyncSource no Gerenciador do Gráfico de Filtros. Para obter mais informações sobre relógios, consulte Hora e relógios no DirectShow.
Dependendo do dispositivo, alguns métodos em IAMExtDevice, IAMExtTransport e IAMTimeCodeReader podem retornar códigos de erro do Windows em vez de valores HRESULT . Os códigos de erro possíveis incluem o seguinte.
Código do Erro Descrição ERROR_TIMEOUT Um comando de dispositivo externo atingiu o tempo limite. ERROR_REQ_NOT_ACCEP O dispositivo não aceitou esse comando de dispositivo externo. ERROR_NOT_SUPPORTED O dispositivo não dá suporte a esse comando de dispositivo externo. ERROR_REQUEST_ABORTED Um comando de dispositivo externo foi anulado. Possivelmente, o dispositivo foi removido ou ocorreu uma redefinição de barramento.
Informações do dispositivo
No Windows Millennium Edition e no Windows XP, o moniker de dispositivo do filtro DV dá suporte a uma propriedade Description , além da propriedade FriendlyName . Essa propriedade retorna uma descrição do dispositivo, obtida do arquivo INF, que geralmente contém o nome da marca do dispositivo. No entanto, essa propriedade não tem suporte para todos os modelos de dispositivo.
Para obter mais informações sobre monikers de dispositivo, consulte Usando o enumerador de dispositivo do sistema.
Horários do Relógio
O driver MSDV usa o relógio de ônibus 1394 contido nos pacotes de dados 1394 para derivar o relógio. Ele usa esses valores para carimbar os exemplos de mídia DV. Como esse relógio de origem não é o relógio do sistema do computador, os horários acabarão sendo descompassos do relógio do sistema do computador. Como observado acima, no entanto, por padrão, o Gerenciador de Grafo de Filtro selecionará MSDV como o relógio de referência do grafo.
A interface IAMDroppedFrames relata a medida atual do driver de quadros descartados; esse valor pode não estar perfeitamente sincronizado com o número real de quadros descartados em um determinado momento. Se os quadros forem removidos, isso indicará que o sistema não está equilibrado (a produção de dados excede o consumo de dados). Por exemplo, o disco rígido do usuário pode não ser rápido o suficiente para dar suporte a taxas de captura de DV.
Tópicos relacionados