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


Режимы Run-Time MPEG-2 Demux

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

Demultiplexer MPEG-2 ("demux") может работать в режиме принудительной отправки или вытягивания. В режиме принудительной отправки данные поступают из источника трансляции, например из сетевого вещания. В режиме извлечения данные поступают из локального файла.

  • Режим извлечения доступен в Windows XP и более поздних версиях только для программных потоков. На платформах нижнего уровня используйте фильтр разделения MPEG-2 .
  • Режим принудительной отправки доступен на всех платформах как для программных, так и для транспортных потоков.

Таким образом, demux поддерживает три возможных режима: программные потоки в режиме извлечения, программные потоки в режиме принудительной отправки и транспортные потоки в режиме принудительной отправки. Demux определяет, какой режим следует использовать во время выполнения. Режим определяется при подключении входного контакта или при настройке первого выходного контакта в зависимости от того, что произойдет первым.

  • Когда входной контакт подключается: в Windows XP и более поздних версиях demux запрашивает фильтр вышестоящий для интерфейса IAsyncReader. Если фильтр вышестоящий предоставляет этот интерфейс, demux настраивает себя для потоков программ в режиме извлечения. В противном случае демукс использует режим принудительной отправки, а тип мультимедиа определяет тип потока (программный или транспортный поток). Список типов входных данных см. в разделе Типы мультимедиа демультиплексера MPEG-2 .
  • При настройке первого выходного контакта. Если вы создаете выходной контакт и запрашиваете его для IMPEG2PIDMap, demux настраивает себя для транспортных потоков в режиме принудительной отправки. При запросе пин-кода IMPEG2StreamIdMap demux настраивает себя для программных потоков, а также в режиме принудительной отправки. Все последующие запросы для другого интерфейса завершаются ошибкой, так как demux не может работать в двух режимах одновременно.

После того как demux настроит себя для определенного режима, он остается в этом режиме. Чтобы использовать другой режим, необходимо создать новый экземпляр demux.

Использование демультиплексера MPEG-2