ruflexx (ruflexx) wrote,
ruflexx
ruflexx

Categories:
Убил тучу времени на починку глюка. Ситуация анекдотическая: аппликуха принимает мультикастовый транспортный поток из сети, декодирует и показывает. Все отлично, все работает. Но стоит ей скормить покоцанный поток, сформированный ненавистным VLC (который не понимает используемого формата аудио и, соответственно, его выкидывает), то помимо вполне естественной пропажи звука пропадает еще и видео. Не, все нормально, я понимаю - глюки и все такое, еще не анекдот. А собственно анекдот заключается в том, что если тупо сграбить построенный граф в файл и потом втянуть его в GraphEdit, то видео будет преспокойненько показываться. Ы.

Боже мой, как я извивался, какие позы принимал!.. Дошел до того, что скомпилил GraphStudioNext. Все думал (пролетарское чутье подсказывало), что там с клоками какие-то тонкости (хоть PCR и строго на видео, а аудио в PMT вообще не прописано). До-олго корячился. А потом в безнадежном отчаянии вдруг вместо загрузки готового графа построил его руками и... и увидел, что так тоже не работает. Поскакал еще чуток, пособирал графов разными методами, в конце концов поменял у себя местами две строчки - вместо
CreatePin(pIMpeg2Demultiplexer, L"Audio", 0x86, OUT_AUDIO, MEDIA_ELEMENTARY_STREAM);
CreatePin(pIMpeg2Demultiplexer, L"Video", 0x85, OUT_VIDEO, MEDIA_ELEMENTARY_STREAM);
сделал
CreatePin(pIMpeg2Demultiplexer, L"Video", 0x85, OUT_VIDEO, MEDIA_ELEMENTARY_STREAM);
CreatePin(pIMpeg2Demultiplexer, L"Audio", 0x86, OUT_AUDIO, MEDIA_ELEMENTARY_STREAM);
и все заработало. Бляяя...

Я категорически не понимаю, откуда в MPEG2Demultiplexer такие завязки на порядок создания пинов. Какая ему нахрен разница?! Я в него в свое время долго смотрел в сорсы, перековыривал под себя по-черному и даже местами понимаю, как он работает. Но там и близко нету ничего, что могло бы давать такой эффект. Код там, конечно, сумасшедший, плюс (вернее, минус) его много, но чтоб такое... Надо бы, конечно, поразбираться на досуге, но так влом...

Я порой искренне думаю, все проблемы DirectShow проистекают из того, что его разработкой в M$ руководил мущщина по имени Geraint. Странный такой, яростный поклонник COM, ATL, множественного наследования и прочих занятных технологий. Там в код глянешь и сразу понятно, что на чем-то полегче так ни в жисть не напишешь.
Subscribe

  • (no subject)

    Москвичи из IT сферы все же странные люди. Звонить в 8:58 утра только для того, чтобы бравурным, жизнерадостным голосом сообщить о том, что твое…

  • Dementia Vulgaris

    А у меня ранняя деменция, ля-ля-ля. Я, родившийся в Ленинграде и проживший здесь почти безвыездно всю свою долгую и скушную жисть, третьего дня,…

  • Дитя порока или Этюд в розовых тонах

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 4 comments