Экстримальное использование AVI Decoder
От: deadsy Россия  
Дата: 07.12.04 07:52
Оценка:
Господа, есть приложение — многоканальный проигрыватель видео. Написано на DShow.
Граф приложения имеет вид:

-------------
|%%%%%%%|-->[AVI Decompressor]-->[Video Renderer]
|Source Filter|-->[AVI Decompressor]-->[Video Renderer]
|%%%%%%%|-->[AVI Decompressor]-->[Video Renderer]
-------------

т.е. есть свой Source фильтр, который может работать с N выходных пинов. И каждый выходной пин рендерится через AVI Decompressor. Видеосигнал пожат своим алгоритмом и для этого алгоритма написан VFW кодек. Как многие знают фильтр AVI Decompressor представляет собой DirectShow Wrapper над VCM (Video Compresson Manager) механизмом, что позволяет пользоваться VFW кодеками в приложениях DirectShow.

Проблема заключается вот в чем, если рендерить допустим 16 выходных пинов на Source Filter и рендерить их в экстримальном режиме (т.е. постоянно разрушать/создавать ветки графа), то где-то на 50 операции рендеринга пина AVI Decompressor отвергает соединение. Всё что можно уже проверил, оттрейсил выходной медиа формат пина перед соединением с AVI Decompressor — всё валидно, и VIDEOINFO и BITMAPINFOHEADER. Протрейсил вызовы VFW кодека, не валидно подставляемых типов нет.
Если коннектить пины используя COnnect то сообщается что Граф Менеджер не может найти промежуточные фильтры, если соединять ConnectDirect (и с указанием и без указания медиа типа) то сообщается что фильтры не смогли договориться о медиа типе.
Возможно это проблема фильтра AVI Decompressor, а точнее его такое экстримальное условие эксплуатации?
Может кто сталкивался с такой проблемой?
Может мне пока не поздно переписать кодек, сделать его как Transform DirectShow Filter ?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.