Udostępnij przez


Procesor wideo MFT

Procesor wideo MFT to transformacja platformy Microsoft Media Foundation (MFT), która wykonuje konwersję przestrzeni kolorów, mapowanie tonów, zmienianie rozmiaru wideo, deinterlacing, konwersję szybkości klatek, rotację, przycinanie, rozpakowywanie widoku przestrzennego po lewej i prawej stronie, dublowanie, przetwarzanie efektu renderowania i mapowanie sfer.

identyfikator klasy

CLSID_VideoProcessorMFT

Interfejsy

Formaty wejściowe

Następujące formaty są obsługiwanymi wartościami dla wartości MF_MT_SUBTYPE typu nośnika ustawionego za pośrednictwem funkcji 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

Formaty danych wyjściowych

Następujące formaty są obsługiwanymi wartościami dla wartości MF_MT_SUBTYPE typu nośnika ustawionego za pośrednictwem funkcji 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

Nie każda kombinacja formatów wejściowych i wyjściowych jest obsługiwana. Aby sprawdzić, czy konwersja jest obsługiwana, ustaw typ danych wejściowych, a następnie wywołaj metodę IMFTransform::GetOutputAvailableType.

Aby uzyskać więcej informacji na temat tych formatów, zobacz Video Subtype GUIDs (Identyfikatory GUID podtypu wideo).

Przekształcenia przestrzeni kolorów

Dla typów wejściowych lub wyjściowych można ustawić następujące atrybuty, aby zmienić przestrzeń kolorów zawartości:

  • 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

Przekształcenia obrazów

Następujące atrybuty można ustawić na typach danych wejściowych lub wyjściowych w celu wykonania przekształceń przestrzennych w filmie wideo:

  • 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

Przekształcenia szybkości ramek

Następujące atrybuty można ustawić na typach danych wejściowych lub wyjściowych, aby wykonywać przekształcenia czasowe na wideo:

  • MF_MT_INTERLACE_MODE
  • MF_MT_FRAME_RATE

Należy pamiętać, że jeśli MF_XVP_DISABLE_FRC jest ustawiona na wartość TRUE, konwersja współczynnika klatek jest wyłączona, ale nadal będzie wykonywane filtrowanie.

Przekształć atrybuty

Następujące atrybuty można ustawić w przekształceniu przy użyciu funkcji 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

Uwagi

Wystąpienie procesora wideo można utworzyć w jeden z następujących sposobów:

  • Wywołując MFTEnumEx. Procesor wideo jest zarejestrowany w kategorii MFT_CATEGORY_VIDEO_PROCESSOR .
  • Wywołując funkcję COM CoCreateInstance przekazując ją CLSID_VideoProcessorMFT CLSID.

Poniższe uwagi dotyczą pracy z prostokątami źródłowymi i prostokątami docelowymi w MFT procesora wideo. Prostokąty źródłowe i docelowe są ustawiane za pomocą kontrolek IMFVideoProcessorControl::SetDestinationRectangle i SetSourceRectangle , a czasami z IMFMediaEngineEx::UpdateVideoStream.

  • Prostokąt źródłowy powinien być wyrównany i zaokrąglony w celu dopasowania do wymagań formatu koloru ramki wprowadzonej do procesora wideo. Jest to ważne, ponieważ formaty, takie jak 420 i 422, mają wymagania dotyczące wymiarów i przesunięć, do których można utworzyć i uzyskać dostęp. Na przykład prostokąt źródłowy {1, 0, 319, 240} (lewy, górny, prawy, dolny) zostanie zaokrąglony do {2, 0, 320, 240}, gdy format wejściowy wynosi 420.
  • Zarówno docelowy, jak i źródłowy prostokąt będą zawsze zaciśnięte, aby mieściły się wewnątrz odpowiednich ramek — prostokąt źródłowy do ramki źródłowej i prostokąt docelowy do ramki docelowej. Oznacza to, że wartości ujemne nie mają znaczenia — będą zawsze zaciskane do 0.
  • Prostokąt źródłowy znajduje się w układzie współrzędnych ramki docelowej, pomniejszonego o dowolny prostokąt docelowy. Oznacza to, że przekształcenia, takie jak rotacja, są "cofnięte" na prostokątze źródłowym. W związku z tym nie musisz wiedzieć, czy wideo zostało obrócone lub rozpakowane 3D. Można na przykład narysować prostokąt u góry tagu wideo, użyć współrzędnych względnych (względem tagu wideo), znormalizować je (zakres od 0 do 1) i przekazać je jako prostokąt źródłowy i powinny działać zgodnie z oczekiwaniami, nawet jeśli wideo jest obracane.

Procesor wideo obsługuje przyspieszone przetwarzanie wideo z procesorem GPU przy użyciu usługi Microsoft Direct3D 11 lub Direct3D 12. Aby uzyskać więcej informacji, zobacz MF_SA_D3D11_AWARE i MF_SA_D3D12_AWARE.

Procesor wideo jest używany jako konwerter frontonu do renderowania wideo podczas korzystania z SVR, który jest udostępniany przez składniki MediaPlayer i IMFMediaEngine . Dekodatory, wtyczki lub źródła używane przez jeden z tych składników

Efekty renderowania

Procesor wideo MFT jest składnikiem hosta dla efektów renderowania. Efekty renderowania umożliwiają aplikacjom wtyczkę do normalnego procesu przekształcania i renderowania wideo. W przypadku typowych aplikacji wystarczy wtyczka wideo (zobacz : IMFMediaEngineEx::InsertVideoEffect). Jednak niektóre scenariusze wymagają dodatkowych informacji na temat dokładnych warunków renderowania filmu wideo. Rozważ efekt renderowania w następujących sytuacjach:

  • Wtyczka musi wiedzieć, że rozdzielczość wideo jest renderowana pod adresem (np. w celu wykonania specjalnej operacji skalowania, takiej jak super rozdzielczość)
  • Wtyczka musi wiedzieć o właściwościach wyświetlania, na których jest renderowany film wideo (np. w celu wykonania dokładnego mapowania tonu)
  • Wtyczka musi znać dokładnie ostateczny format danych wyjściowych przedstawionego wideo

Aby załadować efekt renderatora, skonfiguruj atrybut MF_MT_VIDEO_RENDERER_EXTENSION_PROFILE dla typu wejściowego procesora wideo MFT.

Wideo stereoskopowe

Procesor wideo obsługuje operację rozpakowywania widoku na klatkach wideo 3D:

Jeśli ramka wejściowa zawiera dwa widoki pakowane w tej samej ramce, procesor wideo może podzielić widoki na oddzielne lub wyodrębnić widok podstawowy i odrzucić drugi widok. Aby włączyć rozpakowywanie widoku, ustaw atrybut MF_ENABLE_3DVIDEO_OUTPUT na MF3DVideoOutputType_Stereo lub MF3DVideoOutputType_BaseView.

Wymagania

Wymaganie Wartość
Nagłówek
Camerauicontrol.h

Zobacz także

cyfrowych procesorów sygnałów