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.
Koder-dekodery MFT przesyłają dane multimedialne w obie strony przy użyciu buforów i próbek multimedialnych.
Bufor multimedialny jest obiektem COM, który zarządza blokiem pamięci, zwykle do przechowywania danych multimedialnych. Gdy dane są przekazywane do lub z MFT, są zawsze przekazywane w postaci buforu multimediów.
Wszystkie bufory multimediów udostępniają interfejs IMFMediaBuffer. Ten interfejs jest przeznaczony dla dowolnego typu danych. Bufory zawierające dane wideo często ujawniają również IMF2DBuffer.
Bufor multimedialny ma maksymalny rozmiar, czyli ilość pamięci przydzielonej dla buforu. Aby znaleźć maksymalny rozmiar, wywołaj IMFMediaBuffer::GetMaxLength. W dowolnym momencie bufor nośnika ma również bieżącą długość, czyli ilość prawidłowych danych w buforze, od zera bajtów do maksymalnego rozmiaru. Aby uzyskać bieżącą długość, wywołaj IMFMediaBuffer::GetCurrentLength. Po utworzeniu buforu bieżąca długość wynosi zero. Jeśli zapisujesz dane w buforze, wywołaj IMFMediaBuffer::SetCurrentLength, aby zaktualizować bieżącą długość.
Aby uzyskać dostęp do pamięci w buforze, wywołaj metodę IMFMediaBuffer::Lock. Ta metoda zwraca wskaźnik na początek bloku pamięci. Po zakończeniu korzystania ze wskaźnika wywołaj metodę IMFMediaBuffer::Unlock. Metoda Lock nie jest mechanizmem synchronizacji wątków; nie gwarantuje, że inne wątki nie mogą uzyskać dostępu do buforu. Metoda Lock służy do zapewnienia, że dostęp do pamięci pozostanie prawidłowy do momentu wywołania metody Unlock.
Próbka obiektu multimedialnego (w kontekście zestawu SDK Media Foundation) jest obiektem, który zawiera uporządkowaną listę zero lub więcej buforów. Próbki multimedialne wystawiają interfejs IMFSample.
Aby utworzyć nowy przykład, wywołaj funkcję MFCreateSample. Początkowo lista buforu próbki jest pusta. Aby dodać bufor na końcu listy, wywołaj IMFSample::AddBuffer.
Tematy pokrewne