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