DirectShow и отсутствующие кодеки
От: adontz Грузия http://adontz.wordpress.com/
Дата: 21.11.06 19:33
Оценка:
Есть некоторый файл для которого lpGraphBuilder->RenderFile обламывается.
Как понять каких конкретно кодеков не хватает? Ну там CLSID их получить или ещё что-то...
A journey of a thousand miles must begin with a single step © Lau Tsu
Re: DirectShow и отсутствующие кодеки
От: aik Австралия  
Дата: 21.11.06 19:54
Оценка: 39 (1)
Здравствуйте, adontz, Вы писали:

A>Есть некоторый файл для которого lpGraphBuilder->RenderFile обламывается.

A>Как понять каких конкретно кодеков не хватает? Ну там CLSID их получить или ещё что-то...

Нет такого понятия там. Вопрос ставить надо иначе — "как понять для каких медиатипов не нашлось фильтров". После RenderFile надо перебрать все фильтры в графе, найти те, у которых выходные пины не законнечены и посмотреть какие типы на пинах поддержаны. И то не факт что там будет что то внятное, потому что фильтр может их не показывать, но при этом пытаться перебирать некие типы при коннекте с вероятно подходящим фильтром.

Самое простое (по юзерски) — это взять media player classic, который в случае неудачи пишет что и у какого фильтра он не смог законнектить.
Re[2]: DirectShow и отсутствующие кодеки
От: adontz Грузия http://adontz.wordpress.com/
Дата: 22.11.06 02:36
Оценка:
Здравствуйте, aik, Вы писали:

aik>Нет такого понятия там. Вопрос ставить надо иначе — "как понять для каких медиатипов не нашлось фильтров". После RenderFile надо перебрать все фильтры в графе, найти те, у которых выходные пины не законнечены и посмотреть какие типы на пинах поддержаны. И то не факт что там будет что то внятное, потому что фильтр может их не показывать, но при этом пытаться перебирать некие типы при коннекте с вероятно подходящим фильтром.


Ну вот мне на незаконнекченном выходном пине показывается GUID от AVI. А хочется не AVI, а что-то более определённое типа DivX. Media Player Classic так умеет, но непонятно как. Он выдаёт содержимое pbformat в котором я вижу строку DivX, а у меня в pbformat возвращается NULL (
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[3]: DirectShow и отсутствующие кодеки
От: aik Австралия  
Дата: 22.11.06 07:18
Оценка: 39 (1)
Здравствуйте, adontz, Вы писали:

aik>>Нет такого понятия там. Вопрос ставить надо иначе — "как понять для каких медиатипов не нашлось фильтров". После RenderFile надо перебрать все фильтры в графе, найти те, у которых выходные пины не законнечены и посмотреть какие типы на пинах поддержаны. И то не факт что там будет что то внятное, потому что фильтр может их не показывать, но при этом пытаться перебирать некие типы при коннекте с вероятно подходящим фильтром.


A>Ну вот мне на незаконнекченном выходном пине показывается GUID от AVI. А хочется не AVI, а что-то более определённое типа DivX. Media Player Classic так умеет, но непонятно как. Он выдаёт содержимое pbformat в котором я вижу строку DivX, а у меня в pbformat возвращается NULL (


В случаях обычных VFW/FCC кодеков, первые 4 байта guid'а медиатипа (вроде его) содержат FCC — DIVX/MP43/... Это не совсем честный guid, это комбинация 12 неких стандартных байтов + FCC. Но это только для FCC и канает. Если контейнер не AVI, то и типы могут быть гораздо богаче, чем просто FCC.
Со звуком аналогично, только там не FCC, а свои какие то ID, для mp3 что то вроде первого байта 53h.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.