Udostępnij przez


Architektura DMO

[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 ogólną architekturę dmo.

strumieni

DmO to obiekt, który pobiera dane wejściowe m i generuje n danych wyjściowych. Dane wejściowe i wyjściowe są nazywane strumieniami . Każdy obiekt DMO ma co najmniej jeden strumień. Strumienie nie są obiektami; są one po prostu przywołyne na DMO według numeru indeksu. Liczba strumieni jest stała w czasie projektowania.

typy multimediów

Wszystkie dane są wpisywane przy użyciu typu nośnika, który definiuje sposób interpretowania zawartości danych. Na przykład 320 x 240 24-bitowe wideo RGB jest jednym z typów; 44,1 kilohertz (kHz) 16-bitowy dźwięk stereo PCM jest innym typem. Typy multimediów są opisywane przy użyciu struktury DMO_MEDIA_TYPE. Zanim klient będzie mógł przetworzyć dowolne dane, musi ustawić typ nośnika dla każdego strumienia w obiekcie DMO.

Zazwyczaj strumień może akceptować szereg typów multimediów. Niektóre obiekty DMO obsługują szerszy zakres typów niż inne. Interfejsy DMO definiują metody odnajdywania obsługiwanych typów przez klienta. Na przykład jeden DMO może obsługiwać wideo RGB w dowolnej głębi bitowej, podczas gdy inny może obsługiwać tylko 24-bitowy RGB. Ponadto dmo może być ograniczone do niektórych kombinacji danych wejściowych i wyjściowych. Jeśli na przykład typ danych wejściowych to 16-bitowe wideo, strumień wyjściowy może wymagać tej samej głębokości bitu. Klient może wyliczyć preferowane typy każdego strumienia, a następnie przetestować konkretne kombinacje.

W domyślnym modelu DMO klient przydziela oddzielne wejściowe i wyjściowe. Wypełnia on wejściowe danymi i dostarcza je do DMO, a funkcja DMO zapisuje nowe dane w wyjściowych.

Opcjonalnie dmO może obsługiwać przetwarzanie "w miejscu". W przypadku przetwarzania w miejscu funkcja DMO zapisuje dane wyjściowe bezpośrednio w buforze wejściowym na podstawie oryginalnych danych. Przetwarzanie w miejscu eliminuje potrzebę oddzielnych. Z drugiej strony zmienia oryginalne dane, które mogą nie być akceptowalne dla niektórych aplikacji.

Domyślny (bez miejsca) model buforowania jest obsługiwany za pośrednictwem interfejsu IMediaObject. Wszystkie obiekty DMO muszą zaimplementować ten interfejs. Jeśli funkcja DMO obsługuje przetwarzanie w miejscu, uwidacznia również interfejs IMediaObjectInPlace. Klient jest odpowiedzialny za przydzielanie wszystkich, zarówno danych wejściowych, jak i wyjściowych.

informacje o dmos