Новые сегменты
[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать в новом коде MediaPlayer, IMFMediaEngine и аудио/видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, в котором используются устаревшие API, чтобы по возможности использовать новые API.]
Сегмент — это группа примеров мультимедиа, которые используют общее время начала, время остановки и скорость воспроизведения. Метод IPin::NewSegment сигнализирует о начале нового сегмента. Это позволяет исходному фильтру сообщать подчиненным фильтрам о том, что сведения о времени и скорости изменились. Например, если исходный фильтр ищет новую точку в потоке, он вызывает NewSegment с новым временем начала.
Некоторые подчиненные фильтры используют сведения о сегменте при обработке выборок. Например, в формате, использующего сжатие между кадрами, если время остановки приходится на разностный кадр, фильтру источника может потребоваться отправить дополнительные выборки после времени остановки. Это позволяет декодерам декодировать окончательный разностный кадр. Чтобы определить правильный окончательный кадр, декодер ссылается на время остановки сегмента. В качестве другого примера отрисовщики звука используют частоту сегментов вместе с частотой дискретизации звука для создания правильного вывода звука.
В модели отправки исходный фильтр инициирует вызов NewSegment . В модели извлечения это выполняется фильтром средства синтаксического анализа. В любом случае фильтр вызывает NewSegment на нисходящем входном контакте, который распространяет вызов на следующий фильтр, пока вызов не достигнет отрисовщика. Фильтры должны сериализовать вызовы NewSegment с другими вызовами потоковой передачи, такими как IMemInputPin::Receive.
Время потока сбрасывается до нуля после каждого нового сегмента. Метки времени для образцов, доставленных после сегмента, начинаются с нуля.