Есть MKV и MP4 (ссылка (https://yadi.sk/d/ojdOR-Ti3FaKTx)) с H.264 YUV 4:2:2, сделанные в VirtualDub FilterMod. Наш плеер пытается активировать DXVA, что естественно у него не получается и файлы не воспроизводятся.
В программном режиме играет хорошо. MPC-HC на таких файлах автоматически уходит в софт.
Еще не смотрел - но наверняка там просто нет нужных данных в extradata, поэтому и нет возможности определить тип потока. MPC-HC - просто связка LAV Source+Video Decoder умеют друг с другом работать.
По факту тут ничего не сделать. Ну или при открытии в сплиттере парсить первые пакеты с видео, вытаскивать оттуда SPS/PPS Nalu и ложить в extradata, считаю это излишним ...
AVI файлы играют нормально.
Если MKV прогнать через mkvtoolnix, то появляется элемент CodecPrivate и играет так же хорошо.
[merge_posts_bbcode]Добавлено: 2017-03-12 10:56:01[/merge_posts_bbcode]
А может сделать наоборот?
Если у потока нет extradata, то пуст декодер включает программный режим.
По поводу отсутствия extradata - не надо включать программный, ну бред :)
И так же по ее отсутствие в MKV/MP4 - вот накидал патч, по идее хуже не будет т.к. делается проверка только если extradata пустая, читаем первый фрейм и если удачно парсим - то вставляем нормальный MediaType.
вот патч - https://yadi.sk/d/4VPVGbr13FaaZu
Цитата: Aleksoid1978По поводу отсутствия extradata - не надо включать программный, ну бред :)
Может не стоит все бредом называть?
Имхо, это легко и непринужденно решит вопросы с воспроизведением "непонятных" потоков.
Цитироватьвот патч - https://yadi.sk/d/4VPVGbr13FaaZu
Патч работает.
Я немного доработаю патч, особенно что касается чтения данных на стороне Matroska - и залью ...
[merge_posts_bbcode]Добавлено: 2017-03-12 22:25:22[/merge_posts_bbcode]
Все - залил.