Motion - Bug Report 2016x 09x 11x 140809
You are here: Foswiki>Motion Web>BugReports>BugReport2016x09x11x140809 (11 Sep 2016, MarcoBernardi)Edit Attach

BUG: compiling error with latest ffmpeg on raspberrypi

I recompiled the latest ffmpeg for raspberry pi 3. (see below info) trying to recompile motion with suggested commands (autoreconf -fiv; ./configure; make) i receive an error From my understanding AV_PIX_FMT_YUV420P is not defined. ffmpeg guard used to check enum definition is obsolete https://www.ffmpeg.org/doxygen/2.7/group__depr__guards.html

it compiles if those deprecated guards are in HAVE_FFMPEG block before "#if (LIBAVFORMAT_VERSION_MAJOR >= 56)"

==================== ffmpeg version 3.0.git-1ubuntu2+rpi1~xenial1.8 Copyright (c) 2000-2016 the FFmpeg developers built with gcc 5.4.0 (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.2) 20160609 configuration: --extra-version='1ubuntu2+rpi1~xenial1.8' --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/arm-linux-gnueabihf --incdir=/usr/include/arm-linux-gnueabihf --cc=cc --cxx=g++ --enable-gpl --enable-shared --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-openal --enable-opengl --enable-x11grab --enable-mmal --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-libx264 --extra-cflags=-I/home/fork/ffmpeg_build/include --extra-ldflags=-L/home/fork/ffmpeg_build/lib --enable-shared
   **************************
      Configure status       
      motion 3.4.1+git1a38a37
   **************************

OS             :     Linux
pthread support:     Yes
jpeg support:        Yes
V4L support:         Yes
V4L2 support:        Yes
SDL support:         Yes
MMAL support:        Yes
 ... MMAL_CFLAGS: -std=gnu99 -DHAVE_MMAL -Irasppicam -I/opt/vc/include
 ... MMAL_OBJ: mmalcam.o raspicam/RaspiCamControl.o raspicam/RaspiCLI.o
 ... MMAL_LIBS: -L/opt/vc/lib  -lmmal_core -lmmal_util -lmmal_vc_client -lvcos -lvchostif -lvchiq_arm
FFmpeg support:      Yes
 ... FFMPEG_CFLAGS: -I/usr/include/arm-linux-gnueabihf  
 ... FFMPEG_LIBS: -lavutil-ffmpeg -lavformat-ffmpeg -lavcodec-ffmpeg  -lswscale-ffmpeg  
SQLite3 support:     No
MYSQL support:       No
PostgreSQL support:  No
===================================
Compiling Motion object files...
--------------------------------------------------------------------------------
gcc -g -O2 -D_REENTRANT -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -DMOTION_V4L2 -DMOTION_V4L2_OLD -DTYPE_32BIT="int" -DHAVE_BSWAP   -mcpu=cortex-a53 -mfpu=neon-fp-armv8 -Wall -DVERSION=\"3.4.1+git1a38a37\" -Dsysconfdir=\"/usr/local/etc\" -I/usr/include/arm-linux-gnueabihf   -std=gnu99 -DHAVE_MMAL -Irasppicam -I/opt/vc/include   -c -o netcam_rtsp.o netcam_rtsp.c
In file included from netcam_rtsp.c:27:0:
ffmpeg.h:35:23: warning: ‘enum PixelFormat’ declared inside parameter list
 #define MyPixelFormat PixelFormat
                       ^
ffmpeg.h:105:35: note: in expansion of macro ‘MyPixelFormat’
 int my_image_get_buffer_size(enum MyPixelFormat pix_fmt, int width, int height)
                                   ^
ffmpeg.h:35:23: warning: its scope is only this definition or declaration, which is probably not what you want
 #define MyPixelFormat PixelFormat
                       ^
ffmpeg.h:105:35: note: in expansion of macro ‘MyPixelFormat’
 int my_image_get_buffer_size(enum MyPixelFormat pix_fmt, int width, int height)
                                   ^
ffmpeg.h:35:23: warning: ‘enum PixelFormat’ declared inside parameter list
 #define MyPixelFormat PixelFormat
                       ^
ffmpeg.h:106:69: note: in expansion of macro ‘MyPixelFormat’
 int my_image_copy_to_buffer(AVFrame *frame,uint8_t *buffer_ptr,enum MyPixelForm
                                                                     ^
ffmpeg.h:35:23: warning: ‘enum PixelFormat’ declared inside parameter list
 #define MyPixelFormat PixelFormat
                       ^
ffmpeg.h:107:66: note: in expansion of macro ‘MyPixelFormat’
 int my_image_fill_arrays(AVFrame *frame,uint8_t *buffer_ptr,enum MyPixelFormat 
                                                                  ^
netcam_rtsp.c: In function ‘decode_packet’:
netcam_rtsp.c:138:5: warning: ‘avcodec_decode_video2’ is deprecated [-Wdeprecated-declarations]
     retcd = avcodec_decode_video2(cc, frame, &check, packet);
     ^
In file included from netcam_rtsp.h:5:0,
                 from netcam_rtsp.c:23:
/usr/include/arm-linux-gnueabihf/libavcodec/avcodec.h:4784:5: note: declared here
 int avcodec_decode_video2(AVCodecContext *avctx, AVFrame *picture,
     ^
netcam_rtsp.c:148:43: error: type of formal parameter 1 is incomplete
     frame_size = my_image_get_buffer_size(cc->pix_fmt, cc->width, cc->height);
                                           ^
netcam_rtsp.c:152:67: error: type of formal parameter 3 is incomplete
     retcd = my_image_copy_to_buffer(frame, (uint8_t *)buffer->ptr,cc->pix_fmt,c
                                                                   ^
netcam_rtsp.c: In function ‘netcam_open_codec’:
netcam_rtsp.c:196:5: warning: ‘codec’ is deprecated [-Wdeprecated-declarations]
     dec_ctx = st->codec;
     ^
In file included from netcam_rtsp.h:6:0,
                 from netcam_rtsp.c:23:
/usr/include/arm-linux-gnueabihf/libavformat/avformat.h:882:21: note: declared here
     AVCodecContext *codec;
                     ^
netcam_rtsp.c: In function ‘netcam_rtsp_open_context’:
netcam_rtsp.c:497:5: warning: ‘codec’ is deprecated [-Wdeprecated-declarations]
     netcam->rtsp->codec_context = netcam->rtsp->format_context->streams[netcam-
     ^
In file included from netcam_rtsp.h:6:0,
                 from netcam_rtsp.c:23:
/usr/include/arm-linux-gnueabihf/libavformat/avformat.h:882:21: note: declared here
     AVCodecContext *codec;
                     ^
In file included from netcam_rtsp.c:27:0:
netcam_rtsp.c: In function ‘netcam_rtsp_open_sws’:
ffmpeg.h:18:30: error: type of formal parameter 1 is incomplete
 #define MY_PIX_FMT_YUV420P   AV_PIX_FMT_YUV420P
                              ^
netcam_rtsp.c:582:13: note: in expansion of macro ‘MY_PIX_FMT_YUV420P’
             MY_PIX_FMT_YUV420P
             ^
netcam_rtsp.c: In function ‘netcam_rtsp_resize’:
netcam_rtsp.c:620:10: error: type of formal parameter 3 is incomplete
         ,netcam->rtsp->codec_context->pix_fmt
          ^
In file included from netcam_rtsp.c:27:0:
ffmpeg.h:18:30: error: type of formal parameter 3 is incomplete
 #define MY_PIX_FMT_YUV420P   AV_PIX_FMT_YUV420P
                              ^
netcam_rtsp.c:638:10: note: in expansion of macro ‘MY_PIX_FMT_YUV420P’
         ,MY_PIX_FMT_YUV420P
          ^
ffmpeg.h:18:30: error: type of formal parameter 3 is incomplete
 #define MY_PIX_FMT_YUV420P   AV_PIX_FMT_YUV420P
                              ^
netcam_rtsp.c:670:10: note: in expansion of macro ‘MY_PIX_FMT_YUV420P’
         ,MY_PIX_FMT_YUV420P
          ^
<builtin>: recipe for target 'netcam_rtsp.o' failed

Environment

Motion version: 3.4.1+git1a38a37
ffmpeg version: 3.0.git-1ubuntu2+rpi1~xenial1.8
Shared libraries: ffmpeg
Server OS: ubuntu mate, raspberry pi, 4.4.20-v7+
-- MarcoBernardi - 11 Sep 2016

Follow up

Fix record

Topic revision: r1 - 11 Sep 2016, MarcoBernardi
Copyright © 1999-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Please do not email Kenneth for support questions (read why). Use the Support Requests page or join the Mailing List.
This website only use harmless session cookies. See Cookie Policy for details. By using this website you accept the use of these cookies.