Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ten temat zawiera wskazówki dotyczące implementowania dekodera lub kodera jako transformacji programu Media Foundation (MFT).
- Kodery
- Dekodatory
- Transcode-Only dekodatory
- atrybuty Telecine
- Tematy pokrewne
Enkodery
Negocjowanie formatu kodera
Poniższa procedura służy do inicjowania kodera:
- Zrób zapytanie dotyczące MFT dla interfejsu ICodecAPI.
- Wywołaj ICodecAPI::SetValue, aby ustawić właściwości kodowania.
- Wywołaj IMFTransform::SetOutputType, aby ustawić format kodowania.
- Wywołaj IMFTransform::GetInputAvailableType, aby uzyskać listę zgodnych typów danych wejściowych. (Ten krok może zostać pominięty).
- Wywołaj IMFTransform::SetInputType, aby ustawić nieskompresowany format wejściowy.
Po ustawieniu typu danych wyjściowych w kroku 3 metoda GetInputAvailableType musi zwrócić listę typów wejściowych, które są zgodne z bieżącym typem danych wyjściowych. Innymi słowy, wszystkie typy zwrócone przez GetInputAvailableType w tym momencie muszą być prawidłowe dla SetInputType.
W przypadku dekodatorów kolejność ustawiania typów jest odwrócona: typ danych wejściowych jest ustawiany jako pierwszy, a następnie typ danych wyjściowych. Po ustawieniu typu danych wejściowych metoda IMFTransform::GetOutputAvailableType musi zwrócić listę typów, które można przekazać do metody IMFTransform::SetOutputType.
Kodery i dekodatory powinny obsługiwać nv12 jako wspólny format nieskompresowany. Dzięki temu składniki potoku mogą współdziałać przy minimalnej liczbie konwersji przestrzeni kolorów. Oczywiście inne formaty mogą być również obsługiwane.
Dekodery
Transcode-Only Dekodery
Niektóre dekodatory są zoptymalizowane pod kątem transkodowania (dekodowania, a następnie ponownego kodowania strumienia) i nie są odpowiednie do użycia podczas odtwarzania.
Jeśli dekoder MFT jest przeznaczony tylko do transkodowania, ustaw flagę MFT_ENUM_FLAG_TRANSCODE_ONLY podczas rejestrowania MFT. (Zobacz MFTRegister.)
Domyślnie dekodatory transkodowania nie są zwracane przez funkcję MFTEnumEx. Aby wyliczyć dekodatory transkodowania, wywołaj MFTEnumEx i ustaw flagę MFT_ENUM_FLAG_TRANSCODE_ONLY w parametrze Flags. W przypadku użycia w funkcji MFTEnumEx ta flaga wyliczała zarówno transkodujące dekodery, jak i inne dekodery.
| MFTRegister MFT_ENUM_FLAG_TRANSCODE_ONLY | MFTEnumEx MFT_ENUM_FLAG_TRANSCODE_ONLY | Czy MFT jest wyliczany? |
|---|---|---|
| 1 | 1 | Tak |
| 1 | 0 | Nie |
| 0 | 1 | Tak |
| 0 | 0 | Tak |
Atrybuty telecine
Źródło multimediów może dołączać do dostarczanych próbek multimediów następujące atrybuty telecine.
| Atrybut | Opis |
|---|---|
| MFSampleExtension_RepeatFirstField | Odpowiednik flagi "repeat first field" (RFF). |
| MFSampleExtension_BottomFieldFirst | Odwrotność znacznika "top field first" (TFF). |
Te flagi zawierają wskazówkę dla ulepszonego modułu renderowania wideo (EVR) podczas wykonywania deinterlacingu. Dekoder powinien propagować te flagi, kopiując je do próbek wyjściowych, tak aby dotarły do EVR.
Tematy pokrewne