Udostępnij przez


Nowe segmenty

[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.]

Segment to grupa przykładów multimediów, które mają wspólny czas rozpoczęcia, czas zatrzymania i częstotliwość odtwarzania. Metoda IPin::NewSegment sygnalizuje początek nowego segmentu. Umożliwia ona filtrowanie źródła w celu informowania filtrów podrzędnych o zmianie czasu i szybkości informacji. Jeśli na przykład filtr źródłowy szuka nowego punktu w strumieniu, wywołuje NewSegment z nową godziną rozpoczęcia.

Niektóre filtry podrzędne używają informacji o segmencie podczas przetwarzania próbek. Na przykład w formacie, który używa kompresji między ramek, jeśli czas zatrzymania spadnie na ramce różnicowej, filtr źródłowy może wymagać wysłania dodatkowych próbek po czasie zatrzymania. Dzięki temu dekoder może dekodować ostateczną ramkę różnicową. Aby określić poprawną ramkę końcową, dekoder odnosi się do czasu zatrzymania segmentu. Innym przykładem jest użycie współczynnika segmentów wraz z częstotliwością próbkowania audio w celu wygenerowania poprawnych danych wyjściowych dźwięku.

W modelu wypychania filtr źródłowy inicjuje wywołanie NewSegment. W modelu ściągania jest to wykonywane przez filtr analizatora. W obu przypadkach filtr wywołuje NewSegment na podrzędnym numerze pin wejściowym, który propaguje wywołanie do następnego filtru, dopóki wywołanie nie osiągnie modułu renderowania. Filtry muszą serializować newSegment wywołania z innymi wywołaniami przesyłania strumieniowego, takimi jak IMemInputPin::Receive.

Czas strumienia jest resetowany do zera po każdym nowym segmencie. Sygnatury czasowe próbek dostarczonych po rozpoczęciu segmentu od zera.