Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
[O recurso associado a esta página, DirectShow, é um recurso herdado. Foi substituído por MediaPlayer, IMFMediaEnginee Audio/Video Capture in Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda vivamente que o novo código utilize MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo no 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.]
O filtro Video Renderer é um renderizador de vídeo robusto e polivalente.
Observação
No Windows XP e versões posteriores, o renderizador de vídeo padrão é o Video Mixing Renderer Filter 7 (VMR-7). O VMR-7 e o renderizador de vídeo têm o nome amigável "Video Renderer". Em plataformas anteriores, o renderizador de vídeo é o renderizador padrão. Consulte Escolhendo o renderizador certo.
O renderizador de vídeo usa DirectDraw e superfícies de sobreposição, se a placa de vídeo os suportar. O Filter Graph Manager expõe o interface IVideoWindow, que permite que os aplicativos definam e recuperem propriedades no renderizador de vídeo. Com placas de vídeo mais recentes, o renderizador de vídeo suporta renderização em tela cheia. Caso contrário, o Filter Graph Manager alterna automaticamente para o Renderizador de tela cheia filtro para o modo de tela inteira. Consulte IVideoWindow::p ut_FullScreenMode para obter mais informações.
! [Importante]
Normalmente, a janela de vídeo desse filtro processa mensagens em um thread de trabalho criado pelo Gerenciador de gráficos de filtro. Howerver, se um aplicativo cria diretamente o filtro usando CoCreateInstance, a janela de vídeo processa mensagens no thread do aplicativo. Nesse caso, o thread do aplicativo deve ter um loop de mensagens, para enviar mensagens para a janela de vídeo. Além disso, o thread não deve sair até a chamada final do Release para o renderizador de vídeo, que ocorre quando o Gerenciador de gráficos de filtro é desligado. Caso contrário, o aplicativo pode ficar bloqueado.
| Rótulo | Valor |
|---|---|
| Interfaces de filtro | IBaseFilter, IBasicVideo, IBasicVideo2, IDirectDrawVideo, IKsPropertySet, IMediaPosition, IMediaSeeking, IQualityControl, IQualProp, IVideoWindow |
| Tipos de mídia de pino de entrada | Formatos de vídeo não comprimidos. |
| Interfaces de pino de entrada | IMemInputPin, IOverlay, IPin, IPinConnection, IQualityControl |
| Tipos de mídia de pino de saída | Não aplicável. |
| Interfaces de pino de saída | Não aplicável. |
| Filtrar CLSID | CLSID_VideoRenderer |
| Página de propriedade CLSID | Nenhuma página de propriedade. |
| Executável | quartz.dll |
| Mérito | Windows XP e versões posteriores: MERIT_UNLIKELY |
| Categoria de filtro | CLSID_LegacyAmFilterCategory |
Comentários
Na versão de depuração do Quartz.dll, se o nível de depuração LOG_TRACE estiver definido como 5 ou superior, o Renderizador de vídeo exibirá os carimbos de data/hora de cada quadro na janela de vídeo. Esses números não aparecem na versão comercial da DLL. Para obter mais informações, consulte Debug Output Functions.
As seguintes observações destinam-se aos desenvolvedores de filtros:
O renderizador de vídeo aceita formatos YUV se a placa gráfica de vídeo suportar superfícies de sobreposição YUV. No entanto, quando ele se conecta pela primeira vez ao filtro upstream, o renderizador de vídeo requer um formato RGB que corresponda à profundidade de cor das configurações atuais do monitor. Por exemplo, se a configuração de exibição atual for cor de 24 bits, o filtro upstream deverá ser capaz de fornecer vídeo RGB de 24 bits. Quando o gráfico de filtro muda para um estado de execução, o renderizador de vídeo negocia uma alteração de formato dinâmico para o espaço de cores YUV apropriado.
Ao conectar-se com um tipo RGB, o renderizador de vídeo garante que ele possa usar GDI no caso de DirectDraw não estar disponível. Ele mudará para GDI se outro aplicativo estiver usando a memória de vídeo, se o retângulo de vídeo se estender por dois monitores em um sistema de vários monitores, ou se o retângulo de vídeo estiver completamente obscurecido por outra janela.
Observação
O renderizador de mistura de vídeo não executa esse tipo de alteração de formato dinâmico e não requer um tipo de mídia RGB, porque nunca usa GDI para renderização.
Para negociar uma alteração de formato, o renderizador de vídeo chama IPin::QueryAccept com o novo tipo de mídia. Se o filtro upstream retornar S_OK, o Renderizador de vídeo anexará a nova mídia à próxima amostra. O filtro upstream deve chamar IMediaSample::GetMediaType em cada amostra. Se GetMediaType retornar um valor deNULL não, isso indica uma alteração de formato e o filtro upstream deve responder alternando tipos de saída. (Não alterne tipos no método QueryAccept.) O filtro upstream deve aceitar pelo menos os principais tipos RGB e, idealmente, deve suportar os tipos YUV comuns. Durante o streaming, o renderizador de vídeo pode alternar entre os tipos YUV e RGB qualquer número de vezes. O renderizador de vídeo não aceita alterações de formato dinâmico iniciadas pelo filtro upstream.
Quando o renderizador de vídeo desenha para uma superfície de sobreposição DirectDraw, ele aloca um único buffer para seu pino de entrada. Se o filtro upstream tentar forçar uma conexão usando vários buffers, o renderizador de vídeo não poderá usar a superfície de sobreposição.
Tópicos relacionados