Fundacja Mediów

Media Foundation ( MF ) to potok multimedialny oparty na modelu COM i platforma infrastruktury dla multimediów cyfrowych w systemach Windows Vista , Windows 7 , Windows 8 , Windows 8.1 , Windows 10 i Windows 11 . Jest zamierzonym zamiennikiem Microsoft DirectShow , Windows Media SDK , DirectX Media Objects (DMO) i wszystkich innych tak zwanych „starszych” multimedialnych interfejsów API, takich jak Menedżer kompresji audio (ACM) i wideo dla Windows (VfW) . Istniejąca DirectShow ma być stopniowo zastępowana przez Media Foundation, zaczynając od kilku funkcji. Przez jakiś czas będzie współistnienie Media Foundation i DirectShow. Media Foundation nie będzie dostępne dla poprzednich wersji systemu Windows, w tym dla systemu Windows XP .

Pierwsza wersja, obecna w systemie Windows Vista , koncentruje się na jakości odtwarzania audio i wideo, zawartości wysokiej rozdzielczości (tj. HDTV ), ochronie treści i bardziej ujednoliconym podejściu do kontroli dostępu do danych cyfrowych na potrzeby zarządzania prawami cyfrowymi (DRM) i jego interoperacyjności. Integruje DXVA 2.0 do przeniesienia większej części potoku przetwarzania wideo na sprzęt w celu uzyskania lepszej wydajności. Filmy są przetwarzane w przestrzeni kolorów, w której zostały zakodowane, i są przekazywane do sprzętu, który komponuje obraz w swojej natywnej przestrzeni kolorów. Zapobiega to pośrednim konwersjom przestrzeni kolorów w celu poprawy wydajności. MF zawiera nowy mechanizm renderowania wideo o nazwie Enhanced Video Renderer (EVR), który jest kolejną iteracją VMR 7 i 9 . EVR ma lepszą obsługę czasu odtwarzania i synchronizacji. Korzysta z nowej usługi Multimedia Class Scheduler Service (MMCSS). który nadaje priorytet przetwarzaniu multimediów w czasie rzeczywistym, aby zarezerwować zasoby wymagane do odtwarzania, bez rozrywania i zakłóceń.

Druga wersja zawarta w systemie Windows 7 wprowadza rozszerzoną obsługę formatów multimediów oraz DXVA HD do akceleracji treści HD, jeśli używane są sterowniki WDDM 1.1.

Architektura

Architektura Fundacji Mediów

Architektura MF jest podzielona na warstwę kontroli , warstwę rdzenia i warstwę platformy . Warstwa rdzenia zawiera większość funkcji Media Foundation. Składa się z potoku fundacji mediów, który składa się z trzech komponentów: Media Source , Media Sink i Media Foundation Transforms (MFT). Źródło multimediów to obiekt, który działa jako źródło danych multimedialnych, skompresowanych lub nieskompresowanych. Może hermetyzować różne źródła danych, takie jak plik, serwer sieciowy, a nawet kamera, z funkcjami specyficznymi dla źródła wyabstrahowane przez wspólny interfejs . Obiekt źródłowy może wykorzystywać źródłowy obiekt tłumaczący , który tworzy źródło multimediów na podstawie identyfikatora URI , pliku lub strumienia bajtów. Można dodać obsługę niestandardowych protokołów, tworząc dla nich źródłowy program tłumaczący. Obiekt źródłowy może również wykorzystywać sekwencera do korzystania z sekwencji źródeł ( lista odtwarzania ) lub do łączenia wielu źródeł w jedno źródło logiczne. Media sink to odbiorca przetworzonych danych multimedialnych. Ujście multimediów może być ujściem renderowania , który renderuje zawartość na urządzeniu wyjściowym, lub ujście archiwum , które zapisuje zawartość w trwałym systemie przechowywania, takim jak plik. Ujście modułu renderowania pobiera nieskompresowane dane jako dane wejściowe, podczas gdy ujście archiwum może przyjmować dane skompresowane lub nieskompresowane, w zależności od typu danych wyjściowych. Dane ze źródeł mediów do ujścia są przetwarzane przez MFT; MFT to pewne funkcje, które przekształcają dane w inną formę. MFT mogą zawierać multipleksery i demultipleksery, kodeki lub efekty DSP, takie jak pogłos . Warstwa rdzenia korzysta z usług, takich jak dostęp do plików i sieci oraz synchronizacja zegara do synchronizacji renderowania multimediów. Są one częścią warstwy platformy , która zapewnia usługi niezbędne do uzyskiwania dostępu do strumieni bajtów źródłowych i ujścia, zegarów prezentacji i modelu obiektowego, który umożliwia asynchroniczne działanie komponentów warstwy rdzenia i jest generalnie implementowana jako usługi systemu operacyjnego. Wstrzymywanie, zatrzymywanie, szybkie przewijanie do przodu, do tyłu lub kompresję czasu można uzyskać, sterując zegarem prezentacji.

Jednak komponenty potoku mediów nie są połączone; raczej są one po prostu przedstawiane jako dyskretne komponenty. Aplikacja działająca w warstwie kontrolnej musi wybrać, które typy źródeł, przekształcenia i ujścia są potrzebne do konkretnego zadania przetwarzania wideo oraz skonfigurować „połączenia” między komponentami ( topologię ), aby zakończyć potok przepływu danych. Na przykład, aby odtworzyć skompresowany plik audio/wideo, potok będzie się składał z obiektu źródłowego pliku, demultipleksera dla określonego formatu kontenera plików do rozdzielania strumieni audio i wideo, kodeków do dekompresji strumieni audio i wideo, procesorów DSP dla efektów audio i wideo, a na koniec renderer EVR, w sekwencji. Lub w przypadku aplikacji do przechwytywania wideo, kamera będzie działać jako źródło wideo i audio, na którym będą działać kodeki MFT w celu kompresji danych i przesyłania ich do multipleksera, który łączy strumienie w kontener; i wreszcie ujście pliku lub ujście sieci zapisze to do pliku lub strumienia przez sieć. Aplikacja musi również koordynować przepływ danych pomiędzy elementami potoku. Warstwa kontrolna musi „pobrać” (zażądać) próbki z jednego komponentu potoku i przekazać je do następnego komponentu, aby uzyskać przepływ danych w potoku. Jest to w przeciwieństwie do DirectShow , w którym składnik potoku wypycha dane do następnego składnika. Media Foundation umożliwia ochronę treści poprzez hostowanie potoku w chronionym środowisku wykonawczym, zwanym Protected Media Path . Komponenty warstwy kontrolnej są wymagane do propagowania danych w potoku z szybkością synchronizacji renderowania z zegarem prezentacji. Szybkość (lub czas) renderowania jest osadzona jako część strumienia multimedialnego jako metadane. Obiekty źródłowe wyodrębniają metadane i przekazują je. Metadane są dwojakiego rodzaju: metadane kodowane , które zawierają informacje o szybkości transmisji i czasie prezentacji, oraz metadane opisowe , takie jak tytuł i nazwisko autora. Zakodowane metadane są przekazywane do obiektu, który kontroluje sesję potoku, a metadane opisowe są udostępniane aplikacji do użycia, jeśli zdecyduje się na to.

Media Foundation zapewnia obiekt Media Session , którego można użyć do skonfigurowania topologii i ułatwienia przepływu danych bez wyraźnego działania aplikacji. Istnieje w warstwie kontrolnej i udostępnia program ładujący topologię obiekt. Aplikacja określa wymaganą topologię potoku do modułu ładującego, który następnie tworzy niezbędne połączenia między komponentami. Obiekt sesji medialnej zarządza zadaniem synchronizacji z zegarem prezentacji. Tworzy obiekt zegara prezentacji i przekazuje odwołanie do niego do ujścia. Następnie wykorzystuje zdarzenia licznika czasu z zegara do propagacji danych wzdłuż potoku. Zmienia również stan zegara w celu obsługi żądań wstrzymania, zatrzymania lub wznowienia z aplikacji.

Praktyczne architektury MF

Teoretycznie istnieje tylko jedna architektura Media Foundation i jest to model Media Session, Pipeline, Media Source, Transform i Media Sink. Jednak ta architektura może być złożona w konfiguracji i istnieje znaczne pole dla lekkich, stosunkowo łatwych w konfiguracji komponentów MF zaprojektowanych do obsługi przetwarzania danych multimedialnych dla prostych rozwiązań punktowych. W związku z tym względy praktyczne wymagały wdrożenia odmian podstawowego projektu Pipeline i opracowano komponenty, takie jak Source Reader i Sink Writer, które działają poza modelem Pipeline. Niektóre źródła dzielą architekturę Media Foundation na trzy ogólne klasy.

  • Architektura rurociągu
  • Architektura czytelnik-pisarz
  • Hybrydy między architekturami Pipeline i Reader-Writer

Architektura Pipeline wyróżnia się wykorzystaniem odrębnego obiektu Media Session i Pipeline. Dane multimedialne przepływają z jednego lub większej liczby źródeł multimediów do jednego lub większej liczby ujścia multimediów i opcjonalnie przez zero lub więcej transformacji multimediów. To sesja medialna zarządza przepływem danych multimedialnych przez potok, który może mieć wiele rozwidleń i rozgałęzień. Aplikacja MF może uzyskać dostęp do danych multimedialnych podczas przechodzenia od źródła mediów do ujścia mediów, implementując niestandardowy komponent Media Transform i wstawiając go w odpowiedniej lokalizacji w potoku.

Architektura Reader-Writer używa komponentu o nazwie Source Reader do dostarczania danych multimedialnych oraz komponentu Sink Writer do ich wykorzystania. Czytnik źródła zawiera rodzaj wewnętrznego potoku, ale nie jest on dostępny dla aplikacji. Odczytujący Źródło nie jest Źródłem Mediów, a Autor Sink nie jest Ujściem Mediów i żaden z nich nie może być bezpośrednio włączony do Potoku ani zarządzany przez Sesję Mediów. Ogólnie rzecz biorąc, dane multimedialne przepływają z czytnika źródła do modułu zapisu zlewu w wyniku działań aplikacji. Aplikacja albo pobierze pakiety danych multimedialnych (tzw. Media Samples) z Source Reader i przekaże je bezpośrednio do Sink Writer, albo skonfiguruje funkcję wywołania zwrotnego na Source Reader, która wykona tę samą operację. W efekcie, zarządzając transportem danych, sama aplikacja pełni podobną rolę jak Media Session w aplikacji Pipeline Architecture. Ponieważ aplikacja MF zarządza transmisją Próbek Mediów między Source Reader a Sink Writer, zawsze będzie miała dostęp do surowych danych medialnych. Komponenty Source Reader i Sink Writer mają ograniczoną możliwość automatycznego ładowania transformacji multimediów, aby pomóc w konwersji formatu danych multimedialnych, jednak odbywa się to wewnętrznie, a aplikacja ma nad tym niewielką kontrolę.

Source Reader i Sink Writer zapewniają łatwość użytkowania, a Pipeline Architecture oferuje niezwykle wyrafinowaną kontrolę nad przepływem danych multimedialnych. Jednak wiele komponentów dostępnych dla Pipeline (takich jak Enhanced Video Renderer) po prostu nie nadaje się do użytku w aplikacjach o architekturze Reader-Writer. Ponieważ struktura Próbki Mediów wytworzonej przez Odczytnika Źródła jest identyczna z tą wyjściową Źródła Mediów, możliwe jest skonfigurowanie Architektury Potoku, w której Próbki Mediów są przechwytywane, gdy przechodzą przez Potok, a kopia jest przekazywana do Zlew mediów. Jest to znane jako architektura hybrydowa i umożliwia posiadanie aplikacji, która wykorzystuje wyrafinowane możliwości przetwarzania sesji medialnej i potoku, jednocześnie wykorzystując łatwość obsługi Sink Writer. Sink Writer nie jest częścią potoku i nie wchodzi w interakcje z sesją medialną. W efekcie dane multimedialne są przetwarzane przez specjalny Media Sink zwany Sample Grabber Sink, który zużywa dane multimedialne i przekazuje kopię do Sink Writer. Możliwe jest również zaimplementowanie architektury hybrydowej z niestandardową transformacją mediów, która kopiuje próbki mediów i przekazuje je do Sink Writer, gdy przechodzą przez potok. W obu przypadkach specjalny komponent w Pipeline skutecznie działa jak prosta aplikacja Reader-Writer i zasila program Sink Writer. Ogólnie rzecz biorąc, architektury hybrydowe używają Pipeline i Sink Writer. Teoretycznie możliwe jest zaimplementowanie mechanizmu, w którym Source Reader mógłby w jakiś sposób wstrzykiwać próbki mediów do Pipeline, ale w przeciwieństwie do Sample Grabber Sink, taki standardowy komponent nie istnieje.

Transformacja Fundacji Mediów

Media Foundation Transforms (MFT) reprezentują ogólny model przetwarzania danych multimedialnych. W Media Foundation są one wykorzystywane przede wszystkim do implementacji dekoderów, koderów, mikserów i cyfrowych procesorów sygnałowych (DSP) – pomiędzy źródłami mediów a ujściami mediów . Media Foundation Transforms to ewolucja modelu transformacji wprowadzonego po raz pierwszy w DirectX Media Objects (DMO). Ich zachowania są wyraźniej określone. Można również tworzyć hybrydowe obiekty DMO/MFT. Aplikacje mogą używać tabel MFT w potoku Media Foundation lub używać ich bezpośrednio jako obiektów autonomicznych. MFT mogą być dowolnego typu:

  • Kodeki audio i wideo
  • Efekty audio i wideo
  • Multipleksery i demultipleksery
  • Koszulki
  • Konwertery przestrzeni barw
  • Konwertery częstotliwości próbkowania
  • Skalery wideo

Firma Microsoft zaleca programistom napisanie transformacji Media Foundation zamiast filtra DirectShow dla systemów Windows Vista , Windows 7 i Windows 8 . Do edycji wideo i przechwytywania wideo firma Microsoft zaleca korzystanie z DirectShow, ponieważ nie są one głównym celem Media Foundation w systemie Windows Vista. Począwszy od systemu Windows 7, MFT obsługują również przyspieszane sprzętowo przetwarzanie wideo, kodowanie i dekodowanie dla urządzeń multimedialnych opartych na AVStream.

Ulepszony renderer wideo

Media Foundation używa Enhanced Video Renderer (EVR) do renderowania treści wideo, które działa również jako mikser. Może miksować do 16 równoczesnych strumieni, przy czym pierwszy strumień jest strumieniem odniesienia . Wszystkie strumienie z wyjątkiem strumienia referencyjnego mogą zawierać informacje o przezroczystości na piksel , a także dowolną określoną kolejność Z . Strumień referencyjny nie może mieć przezroczystych pikseli i ma stałą pozycję w osi Z, z tyłu wszystkich strumieni. Ostateczny obraz jest łączony na pojedynczej powierzchni przez kolorowanie każdego piksela zgodnie z kolorem i przezroczystością odpowiedniego piksela we wszystkich strumieniach.

Wewnętrznie EVR używa obiektu miksera do miksowania strumieni. W razie potrzeby może również usunąć przeplot z wydruku i zastosować korekcję kolorów. Złożona klatka jest przekazywana do prezentera , który planuje ich renderowanie na urządzeniu Direct3D, które udostępnia DWM i innym aplikacjom korzystającym z urządzenia. Liczba klatek na sekundę wyjściowego wideo jest zsynchronizowana z liczbą klatek na sekundę strumienia referencyjnego. Jeśli którykolwiek z pozostałych strumieni (nazywanych strumieniami podrzędnymi ) mają inną liczbę klatek na sekundę, EVR odrzuca dodatkowe klatki (jeśli podstrumień ma wyższą liczbę klatek na sekundę) lub używa tej samej klatki więcej niż jeden raz (jeśli ma niższą liczbę klatek na sekundę).

Obsługiwane formaty multimediów

Windows Media Audio i Windows Media Video to jedyne domyślnie obsługiwane formaty kodowania za pośrednictwem Media Foundation w systemie Windows Vista . Do dekodowania MP3 jest dostępne w systemie Windows Vista do odczytu strumieni MP3, ale ujście pliku MP3 do wyjścia MP3 jest dostępne tylko w systemie Windows 7. Obsługa formatu jest jednak rozszerzalna; programiści mogą dodać obsługę innych formatów, pisząc MFT kodera / dekodera i / lub niestandardowe źródła / ujścia multimediów.

Windows 7 rozszerza obsługę kodeków dostępną w systemie Windows Vista. Obejmuje AVI , WAV , AAC/ADTS do odczytu odpowiednich formatów, źródło plików MPEG-4 do odczytu formatów kontenerów MP4 , M4A, M4V, MP4V, MOV i 3GP oraz ujście plików MPEG-4 do wyjścia do formatu MP4 .

Podobnie jak w systemie Windows Vista, obsługa transkodowania (kodowania) nie jest udostępniana przez żadną wbudowaną aplikację systemu Windows, ale kilka kodeków jest dołączonych jako Media Foundation Transforms (MFT). Oprócz Windows Media Audio i Windows Media Video oraz ujścia i źródła plików ASF wprowadzonych w systemie Windows Vista, system Windows 7 zawiera koder H.264 z obsługą profilu Baseline poziomu 3 i profilu głównego oraz AAC Low Complexity ( AAC -LC ) koder profilu

Do odtwarzania różnych formatów multimediów system Windows 7 wprowadza również dekoder H.264 z obsługą Baseline, Main i High-profile, do poziomu 5.1, wielokanałowy AAC-LC i HE-AAC v1 ( SBR ), HE-AAC v2 ( PS ) dekodery stereo, dekodery MPEG-4 Part 2 Simple Profile i Advanced Simple Profile , które obejmują dekodowanie popularnych implementacji kodeków, takich jak DivX , Xvid i Nero Digital , a także MJPEG i DV Dekodery MFT dla AVI. Program Windows Media Player 12 domyślnie używa wbudowanych koderów-dekoderów Media Foundation do odtwarzania tych formatów.

MIDI również nie jest jeszcze obsługiwane przez Media Foundation.

Wsparcie aplikacji

Aplikacje obsługujące Media Foundation obejmują:

Każda aplikacja, która korzysta z Protected Media Path w systemie Windows, również korzysta z Media Foundation.

Linki zewnętrzne