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.]
Vários subtipos de mídia para destinos de renderização Direct3D são definidos para uso com o VMR-7 e o VMR-9. Quando um filtro upstream propõe uma conexão com um desses subtipos, ele indica ao VMR que a renderização deve ser executada em um destino de renderização Direct3D. Para VMR-7, este será um destino de renderização DirectX 7 Direct3D e, para VMR-9, será um destino de renderização DirectX 9 Direct3D. Se o VMR estiver no modo de mistura, a superfície também será uma superfície de textura Direct3D. Se o VMR não estiver no modo de mistura, a superfície será uma superfície Direct3D normal. Os formatos de pixel ARGB só são suportados quando o VMR está no modo de mistura. Os subtipos de destino de renderização são:
| VMR-7 | VMR-9 |
|---|---|
| MEDIASUBTYPE_RGB32_D3D_DX7_RT | MEDIASUBTYPE_RGB32_D3D_DX9_RT |
| MEDIASUBTYPE_RGB16_D3D_DX7_RT | MEDIASUBTYPE_RGB16_D3D_DX9_RT |
| MEDIASUBTYPE_ARGB32_D3D_DX7_RT | MEDIASUBTYPE_ARGB32_D3D_DX9_RT |
| MEDIASUBTYPE_ARGB4444_D3D_DX7_RT | MEDIASUBTYPE_ARGB4444_D3D_DX9_RT |
| MEDIASUBTYPE_ARGB1555_D3D_DX7_RT | MEDIASUBTYPE_ARGB1555_D3D_DX9_RT |
Esses tipos são definidos no arquivo de cabeçalho uuids.h. Os tipos de mídia MEDIASUBTYPE_RGB32 são um formato RGBx888 e os tipos de mídia MEDIASUBTYPE_RGB16 são um formato RGB565. Para obter mais informações sobre esses formatos de pixel, consulte a documentação de gráficos DirectX.
Solicitar um Surface desbloqueado
Bloquear e desbloquear superfícies DirectDraw são operações computacionalmente caras. Ao usar os subtipos de mídia de destino de renderização Direct3D, o filtro upstream precisa que as superfícies sejam desbloqueadas para que possa operar nelas com o hardware gráfico. Para evitar uma operação de bloqueio e desbloqueio desnecessária, o VMR suporta um novo sinalizador no método IMemAllocator::GetBuffer, AM_GBF_NODDSURFACELOCK, que instrui o VMR a não bloquear a superfície do DirectDraw antes de passar uma amostra para o filtro upstream. Quando esse sinalizador é usado, as chamadas para IMediaSample::GetPointer falharão porque não há nenhum ponteiro bloqueado. Para obter acesso à superfície DirectDraw, o filtro deve chamar QueryInterface no objeto deIMediaSample retornadoe solicitar a interfaceIVMRSurface. Obviamente, o filtro a montante deve garantir que a superfície não seja bloqueada quando liberar a amostra de volta para a lista livre.