다음을 통해 공유


비디오 프로세서 MFT

비디오 프로세서 MFT는 색 영역 변환, 톤 매핑, 비디오 크기 조정, 디인터레이싱, 프레임 속도 변환, 회전, 자르기, 공간 왼쪽 및 오른쪽 보기 압축 풀기, 미러링, 렌더러 효과 처리 및 구 매핑을 수행하는 MFT(Microsoft Media Foundation 변환)입니다.

CLSID

CLSID_VideoProcessorMFT

인터페이스

입력 형식

다음 형식은 IMFTransform::SetInputType을 통해 설정된 미디어 형식의 MF_MT_SUBTYPE 값에 대해 지원되는 값입니다.

  • 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

출력 형식

다음 형식은 IMFTransform::SetOutputType을 통해 설정된 미디어 형식의 MF_MT_SUBTYPE 값에 대해 지원되는 값입니다.

  • 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

입력 및 출력 형식의 모든 조합이 지원되는 것은 아닙니다. 변환이 지원되는지 여부를 테스트하려면 입력 형식을 설정한 다음 IMFTransform::GetOutputAvailableType을 호출합니다.

이러한 형식에 대한 자세한 내용은 비디오 하위 유형 GUID를 참조하세요.

색 공간 변환

다음 특성을 입력 또는 출력 형식에 설정하여 콘텐츠의 색 공간을 변경할 수 있습니다.

  • 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

이미지 변환

다음 특성을 입력 또는 출력 형식에 설정하여 비디오에서 공간 변환을 수행할 수 있습니다.

  • 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

프레임 전송률 변환

다음 특성을 입력 또는 출력 형식에 설정하여 비디오에서 임시 변환을 수행할 수 있습니다.

  • MF_MT_INTERLACE_MODE
  • MF_MT_FRAME_RATE

MF_XVP_DISABLE_FRC TRUE로 설정된 경우 프레임 속도 변환은 사용하지 않도록 설정되지만 디인터레이싱은 계속 수행됩니다.

변환 특성

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

비고

비디오 프로세서의 인스턴스는 다음 방법 중 하나로 만들 수 있습니다.

  • MFTEnumEx를 호출합니다. 비디오 프로세서는 MFT_CATEGORY_VIDEO_PROCESSOR 범주에 등록됩니다.
  • COM 함수 CoCreateInstance 를 호출하여 CLSID CLSID_VideoProcessorMFT 전달합니다.

다음 설명은 비디오 프로세서 MFT에서 원본 사각형 및 대상 사각형 작업과 관련이 있습니다. 원본 및 대상 사각형은 IMFVideoProcessorControl::SetDestinationRectangleSetSourceRectangle 및 경우에 따라 IMFMediaEngineEx::UpdateVideoStream으로 설정됩니다.

  • 소스 사각형은 비디오 프로세서에 입력된 프레임의 색 형식 요구 사항에 맞게 정렬되고 반올림되어야 합니다. 420 및 422와 같은 형식에는 만들고 액세스할 수 있는 차원 및 오프셋에 대한 요구 사항이 있기 때문에 중요합니다. 예를 들어 입력 형식이 420이면 {1, 0, 319, 240}(왼쪽, 위쪽, 오른쪽, 아래쪽)의 원본 사각형이 {2, 0, 320, 240}으로 반올림됩니다.
  • 대상 및 원본 사각형은 항상 원본 프레임의 원본 사각형과 대상 프레임에 대한 대상 사각형의 각 프레임 내에 맞게 고정됩니다. 즉, 음수 값은 의미가 없으므로 항상 0으로 고정됩니다.
  • 원본 사각형은 대상 프레임의 좌표계에 있으며 대상 사각형을 뺀 값입니다. 즉, 회전과 같은 변환은 원본 사각형에서 "실행 취소"됩니다. 따라서 비디오가 회전되었는지 또는 3D 압축을 풉니까 알 필요가 없습니다. 예를 들어 비디오 태그 위에 직사각형을 그리고, 상대 좌표를 가져와서(비디오 태그를 기준으로) 정규화하고(0~1 범위) 원본 사각형으로 전달하면 비디오가 회전되더라도 예상대로 작동합니다.

비디오 프로세서는 Microsoft Direct3D 11 또는 Direct3D 12를 사용하여 GPU 가속 비디오 처리를 지원합니다. 자세한 내용은 MF_SA_D3D11_AWAREMF_SA_D3D12_AWARE 참조하세요.

비디오 프로세서는 MediaPlayerIMFMediaEngine 구성 요소에 의해 노출되는 SVR을 사용할 때 비디오 렌더링을 위한 프런트 엔드 변환기로 사용됩니다. 이러한 구성 요소 중 하나에서 사용하는 디코더, 플러그 인 또는 원본

렌더러 효과

비디오 프로세서 MFT는 렌더러 효과의 호스트 구성 요소입니다. 렌더러 효과를 사용하면 애플리케이션이 일반 비디오 변환 및 렌더링 프로세스에 연결할 수 있습니다. 일반적인 애플리케이션의 경우 비디오 플러그 인(참조: IMFMediaEngineEx::InsertVideoEffect)으로 충분합니다. 그러나 일부 시나리오에서는 비디오가 렌더링되는 정확한 조건에 대한 자세한 정보가 필요합니다. 다음 상황에 대한 렌더러 효과를 고려합니다.

  • 플러그 인은 비디오가 렌더링되는 해상도를 알고 있어야 합니다(예: 슈퍼 해상도와 같은 특수 크기 조정 작업을 수행하려면).
  • 플러그 인은 비디오가 렌더링되는 디스플레이의 속성을 알고 있어야 합니다(예: 정확한 톤 매핑 수행).
  • 플러그 인은 제공된 비디오의 최종 출력 형식을 정확히 알고 있어야 합니다.

렌더러 효과를 로드하려면 비디오 프로세서 MFT의 입력 형식에서 MF_MT_VIDEO_RENDERER_EXTENSION_PROFILE 특성을 구성합니다.

스테레오스코픽 비디오

비디오 프로세서는 3D 비디오 프레임에서 뷰 압축 풀기 작업을 지원합니다.

입력 프레임에 동일한 프레임에 압축된 두 개의 보기가 포함된 경우 비디오 프로세서는 보기를 별도의 버퍼로 분할하거나 기본 뷰를 추출하고 두 번째 보기를 삭제할 수 있습니다. 뷰 압축 풀기를 사용하도록 설정하려면 MF_ENABLE_3DVIDEO_OUTPUT 특성을 MF3DVideoOutputType_Stereo 또는 MF3DVideoOutputType_BaseView 설정합니다.

요구 사항

요구 사항 가치
헤더
Camerauicontrol.h

참고하십시오

디지털 신호 프로세서