Udostępnij za pośrednictwem


Mapowanie współrzędnych w usłudze VMR

[Funkcja skojarzona z tą stroną, DirectShow, jest starszą funkcją. Został zastąpiony przez MediaPlayer, IMFMediaEnginei Audio/Video Capture w Media Foundation. Te funkcje zostały zoptymalizowane pod kątem systemów Windows 10 i Windows 11. Firma Microsoft zdecydowanie zaleca, aby nowy kod używał MediaPlayer, IMFMediaEngine i Audio/Video Capture w programie Media Foundation zamiast DirectShow, jeśli to możliwe. Firma Microsoft sugeruje, że istniejący kod, który używa starszych interfejsów API, należy przepisać go do korzystania z nowych interfejsów API, jeśli to możliwe.]

W tej sekcji opisano pięć przekształceń zastosowanych do obrazu źródłowego, zanim zostanie on zamapowany przez maszynę wirtualną na końcowy obraz wyjściowy.

  1. Przekształcenie T(Src) mapuje prostokąt źródłowy na prostokąt docelowy. Są one określane przez rcSource i rcTarget elementów członkowskich VIDEOINFOHEADER lub VIDEOINFOHEADER2 w typie nośnika. To mapowanie wstępnie przetwarza obraz źródłowy podczas jego przejścia do maszyny wirtualnej.
  2. Transformacja T(Flaga) wykonuje wszelkie manipulacje obrazami określone przez flagi w przykładzie multimediów. Obejmowały one przekształcenia, takie jak tłumaczenie pionowe i skalowanie, aby pomieścić flagi przeplatanego boba. Transformacja międzylacyjna podwaja wysokość obrazu i prawdopodobnie tłumaczy obraz o połowę linii wideo, jeśli znajduje się w nieparzysnym polu.
  3. Przekształcenie T(AR) dostosowuje obraz do pikseli kwadratowych na podstawie współczynnika proporcji obrazu. W przypadku typów multimediów VIDEOINFOHEADER współczynnik proporcji zależy od rozmiaru obrazu. W przypadku typów VIDEOINFOHEADER2 współczynnik proporcji jest określany przez dwPictAspectRatioX i dwPictAspectRatioY pól, chyba że ustawiono flagi AMCONTROL_PAD_TO_16x9 lub AMCONTROL_PAD_TO_4x3. W tej transformacji przyjęto założenie, że ustawienie wyświetlania monitora jest zgodne z fizycznym współczynnikiem proporcji monitora. Jeśli na przykład użytkownik ma monitor z współczynnikiem proporcji 4 x 3, ale ustawia ekran na 1280 x 768 pikseli (5 x 3), obraz nie będzie miał poprawnego współczynnika proporcji.
  4. Przekształcenie T(Mix) przekształca obraz w obrębie obrazu docelowego przy użyciu znormalizowanych prostokątów określonych w metodach IVMRMixerControl. Znormalizowane prostokąty umożliwiają aplikacji organizowanie sposobu pozycjonowania i skalowania strumieni źródłowych względem siebie. Usługa VMR oblicza obraz docelowy przez obliczenie maksymalnych wymiarów wszystkich obrazów źródłowych i wyśrodkowanie każdego wewnątrz ogólnego prostokąta ograniczenia. Narożniki prostokąta ograniczenia są przypisywane do zakresu (0,0) do (1,1). Prostokąt ograniczenia jest stały przed uruchomieniem grafu i pozostaje stały, nawet jeśli strumienie są dodawane lub usuwane. Prostokąty docelowe dla każdego strumienia mogą znajdować się poza zakresem (0,0) do (1,1) i nadal być prawidłowe.
  5. Na koniec część obrazu mieszanego może zostać przekształcona przez mapowanie T(Dst), określone przez prostokąty źródłowe i docelowe w interfejsie IBasicVideo maszyny wirtualnej. Jeśli Allocator-Presenter zostanie zastąpiony, a interfejs IBasicVideo nie jest używany, aplikacja musi zaimplementować interfejs IVMRWindowlessControl i mapować współrzędne z powrotem do przestrzeni liniowej 2D. Współrzędne myszy zwrócone do nawigatora DVD muszą również znajdować się w tym miejscu. Jeśli na przykład aplikacja renderuje wideo na przędzającym module, będzie zgłaszać cały ekran dla kontrolki bez okna i zwracać współrzędne myszy względem wyświetlacza.

Ogólna transformacja obrazu z danych źródłowych do końcowego modułu renderowania to:

T = T(Src)* T(Flag)T(Ar)T(Mix)* T(Dst)*

gdzie * wskazuje, że obraz może zostać przycięty do obrazu docelowego na tym etapie. Należy pamiętać, że są to wszystkie przekształcenia affine, więc maszyna wirtualna może połączyć je w jedną transformację.

Odwrotność transformacji to:

odwrotne przekształcenie

Współczynnik T(Src) T(Flaga) T(Ar) jest względny do rozdzielczości źródłowej. W przypadku współczynnika T(Mix) znormalizowany prostokąt źródła jest względny względem obrazu poprawionego aspektem. Znormalizowany prostokąt docelowy jest względny do rozdzielczości wyjściowej. Na poniższym diagramie przedstawiono te relacje.

kroki przekształcania obrazu

używanie maszyny wirtualnej dla deweloperów filtrów DirectShow