Поделиться через


Обработка конца потока в кодеках AVStream

Когда HW MFT получает образец с установленным флагом конца потока (EOS), он задает KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM в элементе OptionsFlagструктуры KSSTREAM_HEADER , соответствующей данному примеру.

После того как мини-накопитель получит KSSTREAM_POINTER с флагом KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM, установленным в StreamHeader.OptionsFlag, контакт ввода не будет получать новые указатели входного потока, пока мини-накопитель не установит KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM в указателе выходного потока.

Прежде чем мини-диск установит KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM на указатель выходного потока, он должен создать как можно больше выходных кадров с доступными в настоящее время входными данными.

Затем мини-диск должен очистить все кэшированные сведения, связанные с ранее обработанными указателями потока, в дополнение к данным, связанным с этими указателями потока. Затем мини-диск должен установить KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM на выводе.

Мини-накопитель должен обрабатывать новые указатели входного потока, которые поступают впоследствии как часть нового потока. Исключением является, если EOS возникает в результате разрыва в потоке мультимедиа. В этом случае новый указатель потока будет иметь флаги KSSTREAM_HEADER_OPTIONSF_DATADISCONTINUITY, KSSTREAM_HEADER_OPTIONSF_TIMEDISCONTINUITY или и то, и другое, установленное в KSSTREAM_HEADER. OptionsFlags. Если указатели потока с одним из этих флагов поступают во входной контакт, мини-диск должен установить те же флаги для указателя потока соответствующего выходного контакта.