Нашли ли вы решение вашей проблемы, сейчас?
Я пишу аналогичный DirectShow фильтр, в настоящее время для воспроизведения только одного файла, но я думаю, что изменив его для воспроизведения несколькихфайлы не должны быть проблемой.
Я создал этот фильтр, начиная с фильтра " Push Source Bitmap ", но мне пришлось внести в него множество изменений.
Мне также пришлось построить график, используя написанное мной приложение (поэтому не используя GraphEdit ), подключить демультиплексор Mpeg-2"к новому фильтру, добавить одно * 1015Выход * PSI (сопоставленный с PID 0 = PAT ) и " Фильтр разделов и таблиц MPEG-2 ", подключенный к этому PSI output.
После этого я использовал « Фильтр разделов и таблиц MPEG-2 » для чтения таблицы PAT и PID PMT. определено внутри.Затем я также сопоставил все PMT PID с одним и тем же фильтром MPEG-2 для секций и таблиц , и проанализировал таблицы PMT для знания элементарных потоков PID и типы мультимедиа, а затем я создал один видеовыход и один аудиовыход на основе этой информации (может быть несколько потоков аудио + видео, но на текущем шаге я сохраняю только первый).Обратите внимание, что для этого необходимо временно запустить частичный график, чтобы иметь возможность анализировать таблицы, а затем остановить его, чтобы иметь возможность создавать выходные выводы видео и аудио (с соответствующими типами мультимедиа) и подключать декодеры и средства визуализации.
В дополнение к этому, у меня есть информация, которую вы можете найти интересной: кажется, что при подключении " Mpeg-2 Demultiplexer " ищет на графике фильтр, выставляющий " IBDA_NetworkProvider"интерфейс, и, если он найден, он регистрируется в нем с помощью IBDA_NetworkProvider :: RegisterDeviceFilter метода.
Я думаю, что вы могли бы использовать это для обнаружения" Mpeg-2 Демультиплексор"вставьте фильтр в график (выставив интерфейс" IBDA_NetworkProvider"из вашего фильтра) и попробуйте выполнить вышеуказанные операции из вашего исходного фильтра, что позволитиспользуйте ваш фильтр внутри GraphEdit и ожидайте, что " Mpeg-2 Demultiplexer " будет иметь значениеот этого фильтра, не беспокоясь о создании приложения для выполнения этих операций.
Gingko