Проблема - встраивание чужого кода, static переменные

AE169

Суть проблемы следующая. Есть программка ffmpeg, библиотеки под свою хитрую архитектуру я собрал, теперь мне требуется переконвертировать несколько раз один и тот же файл. В этой программке была изменена процедура main в "вызываемую" процедуру, вырезан лишний консольный код. Первый раз функция прорабатывает на ура. Второй раз - падает из-за наличия статических переменных, которые были "запорчены" первым вызовом. Код достаточно пространный, все статические переменные не обнулить. Как быть? Код "транскодера" переписывать своими словами не хочу. Вызывать программу тоже не могу - метода вызова внешних бинарных файлов из кода для данного SDK нет.

katrin2201

Вызывать программу тоже не могу - метода вызова внешних бинарных файлов из кода для данного SDK нет.
Просто форкаться тоже нельзя?

AE169

нет скорее всего его использовать нелья. на самом деле, чтобы отпала часть вопросов - iOS 4.3 и их нативный (не сауриковский)

ppplva

ffmpeg - это библиотека, у нее есть интерфейс который, разумеется, позволяет перекодировать несколько файлов в одном процессе. Функции main там нет.
Похоже, ты взял какую-то обертку (transcode?) и пытаешься ее переделывать. Зря.

Dasar

если ничего другого не получится, то можешь попробовать следующий способ:
найти все static переменные либы, и обнулить (привести к начальному состоянию).
static переменные можно найти утилитой, а не руками.

AE169

Я взял ffmpeg.c . Буду благодарен если дашь наводку на нужный либ из 6

AE169

На самом деле я еще прочел даже все доступные примеры. Если бы все было так просто, то для обычной перекодировки они транскод не совали бы в ffmpeg.c

Dasar

так зачем ты используешь ffmpeg.c , а не используешь либы напрямую?

AE169

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

AE169

На самом деле я смог найти эти злосчастные переменные, которые портили мне жизнь. И да, глюк был почему-то только в Debug версии. Если кто-то найдет материал, как пробрасывать из одного кодека в другой через raw pcm - буду рад почитать, аналогичного материала я не нашел.
Оставить комментарий
Имя или ник:
Комментарий: