Reputation: 334
I have been trying to compile ffmpeg on my raspberry-pi, but it gives me a lot of warnings like (codec is deprecated) especially while run sudo make.
pi@raspberrypi:/usr/src/ffmpeg $ sudo make && sudo make install
....... lots of successful execution here ......
CC libavfilter/avf_showfreqs.o
libavfilter/lavfutils.c: In function ‘ff_load_image’:
libavfilter/lavfutils.c:53:5: warning: ‘codec’ is deprecated (declared at ./libavformat/avformat.h:880) [-Wdeprecated-declarations]
codec_ctx = format_ctx->streams[0]->codec;
^
libavfilter/lavfutils.c:79:5: warning: ‘avcodec_decode_video2’ is deprecated (declared at ./libavcodec/avcodec.h:4763) [-Wdeprecated-declarations]
ret = avcodec_decode_video2(codec_ctx, frame, &frame_decoded, &pkt);
^
CC libavfilter/lswsutils.o
CC libavfilter/opencl_allkernels.o
CC libavfilter/pthread.o
CC libavfilter/setpts.o
CC libavfilter/settb.o
CC libavfilter/split.o
CC libavfilter/src_movie.o
libavfilter/src_movie.c: In function ‘movie_push_frame’:
libavfilter/src_movie.c:524:9: warning: ‘avcodec_decode_video2’ is deprecated (declared at ./libavcodec/avcodec.h:4763) [-Wdeprecated-declarations]
ret = avcodec_decode_video2(st->codec_ctx, frame, &got_frame, pkt);
^
libavfilter/src_movie.c:527:9: warning: ‘avcodec_decode_audio4’ is deprecated (declared at ./libavcodec/avcodec.h:4714) [-Wdeprecated-declarations]
ret = avcodec_decode_audio4(st->codec_ctx, frame, &got_frame, pkt);
^
CC libavfilter/transform.o
CC libavfilter/trim.o
CC libavfilter/vaf_spectrumsynth.o
libavfilter/vaf_spectrumsynth.c: In function ‘try_push_frame’:
libavfilter/vaf_spectrumsynth.c:370:19: warning: variable ‘ret’ set but not used [-Wunused-but-set-variable]
int ch, n, i, ret; ^
CC libavfilter/vf_alphamerge.o
CC libavfilter/vf_aspect.o
CC libavfilter/vf_atadenoise.o
CC libavfilter/vf_colorlevels.o
CC libavfilter/vf_colorspace.o
libavfilter/vf_colorspace.c: In function ‘fill_rgb2xyz_table’:
libavfilter/vf_colorspace.c:360:22: warning: passing argument 1 of ‘invert_matrix3x3’ from incompatible pointer type
invert_matrix3x3(rgb2xyz, i);
^
libavfilter/vf_colorspace.c:277:13: note: expected ‘const double (*)[3]’ but argument is of type ‘double (*)[3]’
static void invert_matrix3x3(const double in[3][3], double out[3][3])
^
libavfilter/vf_colorspace.c: In function ‘fill_whitepoint_conv_table’:
libavfilter/vf_colorspace.c:424:21: warning: passing argument 3 of ‘mul3x3’ from incompatible pointer type
mul3x3(tmp, ma, fac);
libavfilter/vf_colorspace.c:376:13: note: expected ‘const double (*)[3]’ but argument is of type ‘double (*)[3]’
static void mul3x3(double dst[3][3], const double src1[3][3], const double src2[3][3])
^
libavfilter/vf_colorspace.c:425:17: warning: passing argument 2 of ‘mul3x3’ from incompatible pointer type
mul3x3(out, tmp, mai);
^
libavfilter/vf_colorspace.c:376:13: note: expected ‘const double (*)[3]’ but argument is of type ‘double (*)[3]’
static void mul3x3(double dst[3][3], const double src1[3][3], const double src2[3][3])
^
libavfilter/vf_colorspace.c:425:22: warning: passing argument 3 of ‘mul3x3’ from incompatible pointer type
mul3x3(out, tmp, mai);
^
libavfilter/vf_colorspace.c:376:13: note: expected ‘const double (*)[3]’ but argument is of type ‘double (*)[3]’
static void mul3x3(double dst[3][3], const double src1[3][3], const double src2[3][3])
^
libavfilter/vf_colorspace.c: In function ‘convert’:
libavfilter/vf_colorspace.c:480:20: warning: passing argument 7 of ‘s->yuv2yuv’ from incompatible pointer type
s->yuv2yuv_coeffs, s->yuv_offset);
^
libavfilter/vf_colorspace.c:480:20: note: expected ‘const int16_t (*)[3][8]’ but argument is of type ‘int16_t (*)[3][8]’
libavfilter/vf_colorspace.c:480:39: warning: passing argument 8 of ‘s->yuv2yuv’ from incompatible pointer type
s->yuv2yuv_coeffs, s->yuv_offset);
^
libavfilter/vf_colorspace.c:480:39: note: expected ‘const int16_t (*)[8]’ but argument is of type ‘int16_t (*)[8]’
libavfilter/vf_colorspace.c:502:20: warning: passing argument 7 of ‘s->yuv2rgb’ from incompatible pointer type
s->yuv2rgb_coeffs, s->yuv_offset[0]);
^
libavfilter/vf_colorspace.c:502:20: note: expected ‘const int16_t (*)[3][8]’ but argument is of type ‘int16_t (*)[3][8]’
libavfilter/vf_colorspace.c:506:62: warning: passing argument 5 of ‘s->dsp.multiply3x3’ from incompatible pointer type
s->dsp.multiply3x3(rgb, s->rgb_stride, w, h, s->lrgb2lrgb_coeffs);
^
libavfilter/vf_colorspace.c:506:62: note: expected ‘const int16_t (*)[3][8]’ but argument is of type ‘int16_t (*)[3][8]’
libavfilter/vf_colorspace.c:511:28: warning: passing argument 7 of ‘s->rgb2yuv_fsb’ from incompatible pointer type
s->rgb2yuv_coeffs, s->yuv_offset[1], s->dither_scratch);
^
libavfilter/vf_colorspace.c:511:28: note: expected ‘const int16_t (*)[3][8]’ but argument is of type ‘int16_t (*)[3][8]’
libavfilter/vf_colorspace.c:514:24: warning: passing argument 7 of ‘s->rgb2yuv’ from incompatible pointer type
s->rgb2yuv_coeffs, s->yuv_offset[1]);
^
libavfilter/vf_colorspace.c:514:24: note: expected ‘const int16_t (*)[3][8]’ but argument is of type ‘int16_t (*)[3][8]’
libavfilter/vf_colorspace.c: In function ‘create_filtergraph’:
libavfilter/vf_colorspace.c:614:30: warning: passing argument 1 of ‘invert_matrix3x3’ from incompatible pointer type
^
and it still continues....
How to solve it? what might be the problem for this warnings?
Upvotes: 2
Views: 873
Reputation: 660
First of all, don't compile as root.
You should run make
as your normal user, without sudo
.
Only run sudo make install
if you're installing in a root-owned location (e.g /usr
or /usr/local
).
As for your question, the warnings seem to come from the ffmpeg code, not something you've done by compiling it.
It could be that you're using a newer gcc than the ffmpeg developers, and your newer version reports warnings for stuff that used to be considered ok. Or it could be that you used some gcc options that turn on some warnings, and the ffmpeg developers have those turned off. Or it could be that the ffmpeg also saw those warnings when compiling, and decided to ignore them.
But those are just warnings, that is the compiler is telling you « this is fishy, you might want to check it, but it's probably going to be ok ». So unless you're identifying actual problems, you can either ignore them, or send a patch upstream that changes the code in a way that the warning disappears (and that the code remains correct, of course).
For example, I see an instance of warning: variable ‘ret’ set but not used [-Wunused-but-set-variable]
. Well, you could send upstream a patch that removes the definition of that variable, and just like that, one warning would be gone. :)
There is no error in the output you provided though, so I assume your compilation succeeded, and you're happily using your fresh build of ffmpeg now.
Or is there an actual error you didn't paste here?
Upvotes: 1