LINUX.ORG.RU

Сборка Linphone 3.12.0 - как побороть ошибку: implicit declaration of function ‘avcodec_free_frame’

 , ,


0

1

Пытаюсь собрать Linphone 3.12.0 на Debian 9 с использованием Qt 5.9.6.

Последовательность действий:

apt-get install gcc c++ make cmake git autoconf autogen automake libtool yasm 
apt-get install libmbedtls10 libmbedtls-dev libcunit1 libcunit1-dev 
apt-get install libx11-xcb-dev libx11-xcb1 libglew-dev
apt-get install libbsd-dev libbsd0 libv4l-dev libv4l-0 
apt-get install python-psycopg2 python-pip python3-pip
pip install pystache

git clone https://gitlab.linphone.org/BC/public/linphone-desktop.git --recursive
cd linphone-desktop
git checkout -b linphone_3_12_0 1b5f0705
git submodule update --init --recursive

export Qt5_DIR="/opt/qt_5_9_6/5.9.6/gcc_64/lib/cmake"
export PATH="/opt/qt_5_9_6/5.9.6/gcc_64/bin/:$PATH"
rm -Rf ./OUTPUT
rm -Rf ./WORK
./prepare.py -DENABLE_V4L=NO -DENABLE_SOUND=NO
make

На этапе make имею ошибку:
In file included from 
/linphone-desktop/linphone-sdk/mediastreamer2/src/videofilters/ffmpegnowebcam.c:32:0: 
/linphone-desktop/linphone-sdk/mediastreamer2/src/videofilters/ffmpegnowebcam.c: In function ‘jpeg2yuv’: 
/linphone-desktop/linphone-sdk/mediastreamer2/src/utils/ffmpeg-priv.h:146:23:

error: implicit declaration of function ‘avcodec_free_frame’ [-Werror=implicit-function-declaration] 

#define av_frame_free avcodec_free_frame 
                      ^ 
/linphone-desktop/linphone-sdk/mediastreamer2/src/videofilters/ffmpegnowebcam.c:117:2: 
note: in expansion of macro ‘av_frame_free’ 
 av_frame_free(&orig); 
 ^~~~~~~~~~~~~ 
cc1: all warnings being treated as errors 

src/CMakeFiles/mediastreamer.dir/build.make:2054: ошибка выполнения рецепта для цели «src/CMakeFiles/mediastreamer.dir/videofilters/ffmpegnowebcam.c.o» 
make[6]: *** [src/CMakeFiles/mediastreamer.dir/videofilters/ffmpegnowebcam.c.o] Ошибка 1

Как эту ошибку можно обойти?

★★★★★

all warnings being treated as errors

У тебя компилятор злючий. Попробуй в файл ffmpegnowebcam.c добавить #include <libavcodec/avcodec.h>

ox55ff ★★★★★
()
Ответ на: комментарий от ox55ff

Попробовал, ошибка та же.

Наверно, надо крутить не ffmpegnowebcam.c, а ffmpeg-priv.h, ибо ошибку дает вот в этом месте:

#ifndef HAVE_FUN_av_frame_free
void av_frame_free (AVFrame** frame);
#elif LIBAVCODEC_VERSION_INT < AV_VERSION_INT(55,45,101)
#define av_frame_free avcodec_free_frame
/*http://git.videolan.org/?p=ffmpeg.git;a=blob;f=doc/APIchanges
 2013-12-11 - 29c83d2 / 
 b9fb59d,409a143 / 
 9431356,44967ab / 
 d7b3ee9 - lavc 55.45.101 / 
 55.28.1 - avcodec.h
   av_frame_alloc(), av_frame_unref() and av_frame_free() now can 
   and should be used instead of avcodec_alloc_frame(), 
   avcodec_get_frame_defaults() and avcodec_free_frame() respectively.
   The latter three functions are deprecated.
*jehan: previous version (55.39.100 at least) might be buggy */
#endif

Пока правда не понял, что нужно сделать.

Xintrea ★★★★★
() автор топика

прям как из басни - обезьяна и очки

ffmpeg не той версии в системе

но аудио но видео, спам звонилка ?

anonymous
()
Ответ на: комментарий от Xintrea

Наверное несовместимость с верссией ffmpeg.

git checkout -b linphone_3_12_0 1b5f0705

А зачем ты выбрал конкретный коммит? Может это промежуточная версия кода, которые не собирается. В сабмодуле неправильная версия ffmpeg, например.

ox55ff ★★★★★
()
Ответ на: комментарий от ox55ff

Потому что раньше я собирал версию 3.12.0 из исходников на Debian 9, и мне нужна именно она. В Debian 9 идет версия 3.6.0, но в ней есть пара багов, поэтому мне пришлось собрать из исходников актуальную на тот момет версию (это было полтора года назад), и это была версия 3.12.0.

Я восстановил примерно дату, на которую я делал сборку. Вот на этот комит я и откатываюсь.

Но видимо за это время что-то поменялось и в Debian 9, потому что ранее такой ошибки небыло.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от ox55ff

Кароч, походу заборол.

Соседний коммит собрался:

git checkout -b linphone_3_12_0_d8f1eea6 d8f1eea6


Как оказалось, GUI-версия и консольная версия друг другу не соответствуют:
./linphone --version
linphone 4.1.1-662-gd8f1eea6

./linphonec --version
version: 3.12.0


Никогда не понимал разработчиков, которые устраивают такой дурдом в версионировании своих разработок.

Xintrea ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.