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 processador de vídeo MFT é uma transformação do Microsoft Media Foundation (MFT) que executa conversão de espaço de cores, mapeamento de tom, redimensionamento de vídeo, desentrelaçamento, conversão de taxa de quadros, rotação, corte, descompactação de visualização espacial esquerda e direita, espelhamento, processamento de efeitos de renderizador e mapeamento de esfera.
CLSID
CLSID_VideoProcessorMFT
Interfaces
- IMFRealTimeClientEx
- IMFTransform
- IMFVideoProcessorControl
- IMFVideoProcessorControl2
- IMFVideoProcessorControl3
- IMFVideoRendererEffectControl
Formatos de entrada
Os seguintes formatos são suportados valores para o valor MF_MT_SUBTYPE do tipo de mídia definido via IMFTransform::SetInputType
- MFVideoFormat_ABGR32
- MFVideoFormat_ARGB32
- MFVideoFormat_AYUV
- MFVideoFormat_I420
- MFVideoFormat_I422
- MFVideoFormat_I444
- MFVideoFormat_IYUV
- MFVideoFormat_NV11
- MFVideoFormat_NV12
- MFVideoFormat_RGB24
- MFVideoFormat_RGB32
- MFVideoFormat_RGB555
- MFVideoFormat_RGB565
- MFVideoFormat_RGB8
- MFVideoFormat_UYVY
- MFVideoFormat_v410
- MFVideoFormat_Y216
- MFVideoFormat_Y41P
- MFVideoFormat_Y41T
- MFVideoFormat_Y42T
- MFVideoFormat_YUY2
- MFVideoFormat_YV12
- MFVideoFormat_YVYU
- MFVideoFormat_P010
- MFVideoFormat_P016
- MFVideoFormat_A16B16G16R16F
- MFVideoFormat_A2R10G10B10
- MFVideoFormat_Y210
- MFVideoFormat_Y410
- MFVideoFormat_Y416
- MFVideoFormat_L8
- MFVideoFormat_L16
- MFVideoFormat_D16
Formatos de saída
Os seguintes formatos são suportados valores para o valor MF_MT_SUBTYPE do tipo de mídia definido via IMFTransform::SetOutputType
- MFVideoFormat_ARGB32
- MFVideoFormat_AYUV
- MFVideoFormat_I420
- MFVideoFormat_I422
- MFVideoFormat_I444
- MFVideoFormat_IYUV
- MFVideoFormat_NV12
- MFVideoFormat_RGB24
- MFVideoFormat_RGB32
- MFVideoFormat_RGB555
- MFVideoFormat_RGB565
- MFVideoFormat_UYVY
- MFVideoFormat_Y216
- MFVideoFormat_YUY2
- MFVideoFormat_YV12
- MFVideoFormat_P010
- MFVideoFormat_P016
- MFVideoFormat_A16B16G16R16F
- MFVideoFormat_A2R10G10B10
- MFVideoFormat_Y210
- MFVideoFormat_Y410
- MFVideoFormat_Y416
Nem todas as combinações de formatos de entrada e saída são suportadas. Para testar se uma conversão é suportada, defina o tipo de entrada e chame IMFTransform::GetOutputAvailableType.
Para obter mais informações sobre esses formatos, consulte GUIDs de subtipo de vídeo.
Transformações de espaço de cor
Os seguintes atributos podem ser definidos nos tipos de entrada ou saída para alterar o espaço de cores do conteúdo:
- MF_MT_VIDEO_PRIMARIES
- MF_MT_TRANSFER_FUNCTION
- MF_MT_YUV_MATRIX
- MF_MT_VIDEO_CHROMA_SITING
- MF_MT_VIDEO_NOMINAL_RANGE
- MF_MT_MAX_MASTERING_LUMINANCE
- MF_MT_MAX_LUMINANCE_LEVEL
- MF_MT_CUSTOM_VIDEO_PRIMARIES
- MF_MT_PALETTE
Transformações de imagem
Os seguintes atributos podem ser definidos nos tipos de entrada ou saída para executar transformações espaciais no vídeo:
- MF_MT_PIXEL_ASPECT_RATIO
- MF_MT_VIDEO_ROTATION
- MF_MT_PAN_SCAN_APERTURE
- MF_MT_GEOMETRIC_APERTURE
- MF_MT_MINIMUM_DISPLAY_APERTURE
- MF_MT_VIDEO_3D
- MF_MT_VIDEO_3D_FORMAT
Transformações de taxa de quadros
Os seguintes atributos podem ser definidos nos tipos de entrada ou saída para executar transformações temporais no vídeo:
- MF_MT_INTERLACE_MODE
- MF_MT_FRAME_RATE
Observe que, se MF_XVP_DISABLE_FRC estiver definido como TRUE, a conversão da taxa de quadros será desabilitada, mas o desentrelaçamento ainda será executado.
Transformar atributos
Os seguintes atributos podem ser definidos na transformação usando IMFTransform::GetAttributes:
- MF_XVP_DISABLE_FRC
- MF_XVP_CALLER_ALLOCATES_OUTPUT
- MF_LOW_LATENCY
- MF_XVP_SAMPLE_LOCK_TIMEOUT
- MF_ENABLE_3DVIDEO_OUTPUT
- MF_VIDEO_PROCESSOR_ALGORITHM
Observações
Uma instância do processador de vídeo pode ser criada de uma das seguintes maneiras:
- Chamando MFTEnumEx. O processador de vídeo está registrado na categoria MFT_CATEGORY_VIDEO_PROCESSOR .
- Chamando a função COM CoCreateInstance passando-lhe o CLSID_VideoProcessorMFT CLSID.
As observações a seguir referem-se ao trabalho com retângulos de origem e retângulos de destino no MFT do processador de vídeo. Os retângulos de origem e destino são definidos com IMFVideoProcessorControl::SetDestinationRectangle e SetSourceRectangle e, às vezes, com IMFMediaEngineEx::UpdateVideoStream.
- O retângulo de origem deve ser alinhado e arredondado para corresponder aos requisitos do formato de cor do quadro inserido no processador de vídeo. Isso é importante porque formatos como 420 e 422 têm requisitos sobre as dimensões e deslocamentos que podem ser criados e acessados. Por exemplo, um retângulo de origem de {1, 0, 319, 240} (esquerda, superior, direita, inferior) será arredondado para {2, 0, 320, 240} quando o formato de entrada for 420.
- Tanto o retângulo de destino quanto o de origem sempre serão fixados para caber dentro de seus respetivos quadros — o retângulo de origem para o quadro de origem e o retângulo de destino para o quadro de destino. Isso significa que os valores negativos não são significativos — eles serão sempre fixados em 0.
- O retângulo de origem está no sistema de coordenadas do quadro de destino, menos qualquer retângulo de destino. Isso significa que transformações como a rotação são "desfeitas" no retângulo de origem. Portanto, você não precisa saber se o vídeo foi girado ou 3D descompactado. Por exemplo, você pode desenhar um retângulo em cima da tag de vídeo, pegar as coordenadas relativas (relativas à tag de vídeo), normalizá-las (intervalo de 0 a 1) e passá-las para baixo como o retângulo de origem e elas devem funcionar conforme o esperado, mesmo que o vídeo esteja sendo girado.
O processador de vídeo suporta processamento de vídeo acelerado por GPU, usando o Microsoft Direct3D 11 ou Direct3D 12. Para obter mais informações, consulte MF_SA_D3D11_AWARE e MF_SA_D3D12_AWARE.
O processador de vídeo é usado como o conversor front-end para renderização de vídeo ao usar SVR, que é exposto pelos componentes MediaPlayer e IMFMediaEngine . Descodificadores, plugins ou fontes utilizadas por qualquer um destes componentes
Efeitos do renderizador
O MFT do processador de vídeo é o componente host para efeitos de renderização. Os efeitos de renderização permitem que os aplicativos façam login no processo normal de transformação e renderização de vídeo. Para aplicações típicas, um plugin de vídeo (ver: IMFMediaEngineEx::InsertVideoEffect) é suficiente. Mas alguns cenários exigem mais informações sobre as condições exatas em que um vídeo está sendo renderizado. Considere um efeito de renderizador para as seguintes situações:
- O plugin precisa saber a resolução em que o vídeo é renderizado (por exemplo, para executar uma operação de escala especial como super resolução)
- O plugin precisa saber as propriedades da tela em que o vídeo está sendo renderizado (por exemplo, para executar o mapeamento de tom preciso)
- O plugin precisa saber exatamente o formato de saída final do vídeo apresentado
Para carregar um efeito de renderizador, configure o atributo MF_MT_VIDEO_RENDERER_EXTENSION_PROFILE no tipo de entrada do MFT do processador de vídeo.
Vídeo estereoscópico
O processador de vídeo suporta a operação de descompactação de visualização em quadros de vídeo 3D:
Se o quadro de entrada contiver duas visualizações compactadas no mesmo quadro, o processador de vídeo poderá dividir as visualizações em buffers separados ou extrair a visualização base e descartar a segunda visualização. Para habilitar a descompactação de exibição, defina o atributo MF_ENABLE_3DVIDEO_OUTPUT como MF3DVideoOutputType_Stereo ou MF3DVideoOutputType_BaseView.
Requerimentos
| Requisito | Valor |
|---|---|
| Cabeçalho |
|
Ver também