Nové segmenty

[Funkce přidružená k této stránce DirectShow je starší funkce. Byla nahrazena MediaPlayer, MMFMediaEnginea Audio/Video Capture v Media Foundation. Tyto funkce jsou optimalizované pro Windows 10 a Windows 11. Microsoft důrazně doporučuje, aby nový kód používal MediaPlayer, MMFMediaEngine a Audio/Video Capture v Media Foundation místo DirectShow, pokud je to možné. Microsoft navrhuje, aby se stávající kód, který používá starší rozhraní API, přepsal, aby se nová rozhraní API používala, pokud je to možné.]

segment je skupina ukázek médií, která sdílí společný čas spuštění, čas zastavení a rychlost přehrávání. Metoda IPin::NewSegment signalizuje začátek nového segmentu. Poskytuje způsob, jak zdrojový filtr informovat podřízené filtry, že se změnil čas a informace o rychlosti. Pokud například zdrojový filtr hledá nový bod ve streamu, volá NewSegment s novým časem zahájení.

Některé podřízené filtry používají při zpracování vzorků informace o segmentu. Například ve formátu, který používá kompresi meziframe, pokud doba zastavení spadá na rozdílový rámec, může zdrojový filtr po uplynutí doby zastavení odeslat další vzorky. Dekodér tak dekóduje konečný rozdílový rámec. Chcete-li určit správný konečný rámec, dekodér odkazuje na čas zastavení segmentu. Jako další příklad používají renderery zvuku rychlost segmentů spolu s vzorkovací rychlostí zvuku ke generování správného zvukového výstupu.

V modelu push spustí zdrojový filtr volání NewSegment. V modelu vyžádání je to provedeno filtrem analyzátoru. V obou případech volá filtr NewSegment na vstupním kolíku podřízeného vstupu, který rozšíří volání na další filtr, dokud volání nedosáhne rendereru. Filtry musí serializovat NewSegment volání s jinými voláními streamování, například IMemInputPin::Receive.

Čas streamování se po každém novém segmentu resetuje na nulu. Časová razítka u vzorků doručených po segmentu začínají od nuly.