Compartilhar via


Processador de vídeo MFT

O MFT do processador de vídeo é uma MFT (transformação do Microsoft Media Foundation) que executa conversão de colorspace, mapeamento de tom, redimensionamento de vídeo, desinterlacagem, conversão de taxa de quadros, rotação, corte, desempacotamento de exibição espacial esquerda e direita, espelhamento, processamento de efeitos do renderizador e mapeamento de esfera.

CLSID

CLSID_VideoProcessorMFT

Interfaces

Formatos de entrada

Os seguintes formatos têm suporte para valores para o valor MF_MT_SUBTYPE do tipo de mídia definido por meio de 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 têm suporte para valores para o valor MF_MT_SUBTYPE do tipo de mídia definido por meio de 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 têm suporte. Para testar se há suporte para uma conversão, 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 cores

Os atributos a seguir podem ser definidos nos tipos de entrada ou saída para alterar o espaço de cor 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 atributos a seguir 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 de taxa de quadros será desabilitada, mas a desinterlacização ainda será executada.

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 é registrado na categoria MFT_CATEGORY_VIDEO_PROCESSOR .
  • Chamando a função COM CoCreateInstance passando a 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. 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.
  • O retângulo de destino e de origem sempre será fixado para caber dentro de seus respectivos 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 a 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 rotação são "desfeitas" no retângulo de origem. Portanto, você não precisa saber se o vídeo foi girado ou desempacotado em 3D. Por exemplo, você pode desenhar um retângulo na parte superior da marca de vídeo, pegar as coordenadas relativas (em relação à marca 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 dá suporte ao processamento de vídeo acelerado por GPU, usando o Microsoft Direct3D 11 ou o Direct3D 12. Para obter mais informações, consulte MF_SA_D3D11_AWARE e MF_SA_D3D12_AWARE.

O processador de vídeo é usado como conversor de front-end para renderização de vídeo ao usar SVR que é exposto pelos componentes MediaPlayer e IMFMediaEngine . Decodificadores, plug-ins ou fontes usadas por qualquer um desses componentes

Efeitos do renderizador

O MFT do Processador de Vídeo é o componente host para efeitos do Renderizador. Os efeitos do renderizador permitem que os aplicativos conectem-se ao processo normal de transformação e renderização de vídeo. Para aplicativos típicos, um plug-in de vídeo (consulte: 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 plug-in precisa saber a resolução em que o vídeo é renderizado (por exemplo, para executar uma operação de dimensionamento especial, como super resolução)
  • O plug-in precisa saber as propriedades da exibição em que o vídeo está sendo renderizado (por exemplo, para executar um mapeamento de tom preciso)
  • O plug-in 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 dá suporte à operação de desempacotamento de exibição em quadros de vídeo 3D:

Se o quadro de entrada contiver dois modos de exibição embalados no mesmo quadro, o processador de vídeo poderá dividir as exibições em buffers separados ou extrair a exibição base e descartar a segunda exibição. Para habilitar o desempacotar a exibição, defina o atributo MF_ENABLE_3DVIDEO_OUTPUT como MF3DVideoOutputType_Stereo ou MF3DVideoOutputType_BaseView.

Requisitos

Requisito Valor
Cabeçalho
Camerauicontrol.h

Consulte também

processadores de sinal digital