Udostępnij przez


Korzystanie z rozszerzeń jednostki danych (Microsoft Media Foundation)

Koderi audio i wideo w systemie Windows Media zostały zaprojektowane tak, aby działały dobrze z kontenerem Advanced Systems Format (ASF). ASF jest formatem ustrukturyzowanym używanym dla plików Windows Media Audio (WMA) i plików Windows Media Video (GUR). Jest to rozszerzalny format przeznaczony do przesyłania strumieniowego danych. Jedną z nietypowych cech struktury ASF jest możliwość dołączania metadanych do poszczególnych próbek i osadzania tych danych wraz z próbkami w strumieniu bitowym. Element metadanych przechowywany w ten sposób jest nazywany rozszerzeniem jednostki danych lub rozszerzeniem próbki.

Rozszerzenie jednostki danych może zawierać informacje wymagane przez koder, dekoder lub aplikację odtwarzacza. Większość typów rozszerzeń jednostek danych implementowanych w kodekach serii Windows Media 9 zawiera dane przeznaczone dla aplikacji, która dekoduje i renderuje nośnik. Można na przykład zachować kody czasu SMPTE z danych źródłowych, dodając je jako rozszerzenia jednostek danych. Jednak następujące funkcje kodera-dekodera wymagają rozszerzeń jednostek danych.

  • wymuszone wstawianie kluczowej ramki
  • Kodowanie wideo z przeplotem
  • Trudności z używaniem rozszerzeń jednostek danych podczas uzyskiwania bezpośredniego dostępu do kodeka wynikają z mechanizmu, za pomocą którego obiekt odbiera dane rozszerzenia. Jest to osiągane przez obiekty zestawu SDK formatu Windows Media przy użyciu obiektów buforu zaprojektowanych do obsługi tej funkcji. Zaleca się użycie zestawu SDK formatu Windows Media do aktywowania funkcji koderów, które wymagają rozszerzeń jednostek danych, ale te funkcje mogą współdziałać z autonomicznymi obiektami koderowymi.

Przekazywanie rozszerzonych przykładów do obiektów kodeka

Pakiet SDK formatu multimedialnego Windows używa obiektów bufora, które eksponują interfejsy INSSBuffer. Najnowszy interfejs to INSSBuffer4. Aby przekazać próbki do obiektu kodeka z rozszerzeniami jednostki danych, należy użyć obiektu buforu, który implementuje interfejs IMediaBuffer lub IMFMediaBuffer oraz interfejs INSSBuffer. Aby to osiągnąć, można użyć obiektów buforu utworzonych przez zestaw SDK formatu Windows Media Lub microsoft Media Foundation. Możesz też utworzyć własną klasę buforu spełniającą wymagania. Aby utworzyć własną klasę buforu, należy stosować się do prototypów metod dla interfejsów INSSBuffer. Te definicje interfejsu można znaleźć w pliku nagłówkowym wmsbuffer.h zainstalowanym przy użyciu zestawu WINDOWS Media Format SDK.

Kodeki Windows Media