[amirus] Re: ffmpeg - продолжение следует =)

  • From: AmiS <amis@xxxxxxxxxxxx>
  • To: amirus@xxxxxxxxxxxxx
  • Date: Thu, 03 Jul 2003 18:42:45 +0400

Hi!

On 03/07/03, Vladimir Alaev wrote:


> Докладываю о новых успехах :)

> 1. Удалось скомпилить ffmpeg и он даже работает :D

Было бы странно еесли бы он не работал.

> 2. Покопался в его исходниках - вроде как будет несложно сделать из это
>  то что нам нужно - сделано достаточно унифицированно, единственное что
>  все форматы которые понимает ффмпег захардкодены. То есть для каждого
>  кодека есть отделный модуль (компилящийся в .o), но вся инфа о них жестко 
> прописана
>  в исходниках более высокого уровня. Но я думаю это не большая проблема :)

Не понял что значит "захардкорены"...  Не вижу проблему.... Наоборот, то что 
все кодеки
отдельно и унифицированы нам только на руку.

> 3. Покопался в исходниках xpk :) думаю что действительно надо сделать по ее 
> подобию.

Достаточно было бы глянуть в автодоки. ;l)

> 4. Теперь о том как я представляю себе то что должно получится на данный 
> момент.
>    a) есть главная либа, собственно с которой и работают приложения, о том 
> что она делает ниже.
>    б) есть либы кодеков - такие же стандартные shared library как и 
> главная библиотека.
>    в) каждый кодек имеет ряд стандартных вызовов: init(вызывается первым 
> понятно для чего :)),     finalyze (вызывается последним после окончания 
> работы), decode_frame (может быть "пустым"

Для чего инит?  Имея список кодеков мы можем бежать по нему определяя к какому 
из них
принадлежит поток.  Посмотри как это сделано в XAD.

А вообще мне нравится как сделана работа с молулями в XAD. Там есть функция 
getInfo
которая возвращает структуру с указателями на присутсвующие функции и 
дополнительную
информацию...  А далее всё ясно.

>     если кодек не поддерживает декодирование - в этом случае возращает 
> соответствующую ошибку),
>     encode_frame (аналогично decode_frame). Кроме этого должна быть некоторая 
> функция, возращающая
>     одинаковую для всех кодеков структуру, содержащую информацию о кодеке 
> (его 
> тип - видео/аудио, fcc код итд).
>    г) главная либа имеет следующие вызовы: exemine (определят тип потока), 
> decode_frame, encode_frame, get_error (возращает

Examine . А лучше что0то типа getInfo.

>     текст ошибки если таковая произошла). Первые три принимают параметры в 
> виде тэгов (как в xpk), что позволяет
>     указать откуда брать данные: из файла (по его имени), из открытого файла 
> (по ссылке на файл), из памяти (по указателю на
>     область памяти) и куда выводить данные. Теперь об exemine. На данный 
> момент не знаю каким образом главная библиотека
>     будет "знать" об именах кодеков, которые существуют. Когда они их знает 
> то 
> все просто - открывает их поочереди, запрашивает
>     инфу и сравнивает fcc код в полученной структуре с кодом в переданном 
> потоке. Если он совпал, значит подходящий кодек найден.

Дык так-же как в xad, xpk, xfd. своя дирректория типа codecs.

> Вроде пока все :)
> Жду ваших отзывов и предложений.

Подумай над тем как сделать библиотеку кодеков так чтобы не менять кода 
ffmpegовских
кодеков....


Regards


Other related posts: