Bug #3597
ffmpeg 3.0 on release/4.0
0%
Description
Archlinux recently made ffmpeg 3.0 default.
At the same time Archlinux introduced a ffmpeg2.8 package so it is still possible to build release/4.0 with PKG_CONFIG_PATH=/usr/lib/ffmpeg2.8/pkgconfig but perhaps you want to include the fixes you have done to master on release/4.0, e.g. https://tvheadend.org/issues/3146 .
History
Updated by Lucy Ist over 8 years ago
I can confirm the issue. This is the resulting error when ffmpeg 3.0 is installed (instead of ffmpeg 2.8):
> make
[...]
CC src/plumbing/transcoding.o
src/plumbing/transcoding.c:27:36: fatal error: libavutil/audioconvert.h: No such file or directory
compilation terminated.
Makefile:441: recipe for target '/home/krabbe/tvheadend-4.0.8/build.linux/src/plumbing/transcoding.o' failed
make: *** [/home/krabbe/tvheadend-4.0.8/build.linux/src/plumbing/transcoding.o] Error 1
Appearently, audioconvert.h is obsolete. If I comment it in transcoding.c a bunch of new errors appear:
CC src/plumbing/transcoding.o
In file included from /home/xxxxxx/tvheadend-4.0.8/src/tvheadend.h:43:0,
from src/plumbing/transcoding.c:33:
src/plumbing/transcoding.c: In function 'transcoder_stream_audio':
src/plumbing/transcoding.c:595:29: error: format '%d' expects argument of type 'int', but argument 12 has type 'int64_t {aka long long int}' [-Werror=format=]
tvhtrace("transcode", "%04X: IN : channels=%d, layout=%" PRIi64 ", rate=%d, fmt=%d, bitrate=%d",
^
/home/xxxxxxx/tvheadend-4.0.8/src/tvhlog.h:101:53: note: in definition of macro 'tvhtrace'
_tvhlog(__FILE__, __LINE__, 0, LOG_TRACE, subsys, fmt, ##__VA_ARGS__)
^
src/plumbing/transcoding.c:598:29: error: format '%d' expects argument of type 'int', but argument 12 has type 'int64_t {aka long long int}' [-Werror=format=]
tvhtrace("transcode", "%04X: OUT: channels=%d, layout=%" PRIi64 ", rate=%d, fmt=%d, bitrate=%d",
^
/home/xxxxxxx/tvheadend-4.0.8/src/tvhlog.h:101:53: note: in definition of macro 'tvhtrace'
_tvhlog(__FILE__, __LINE__, 0, LOG_TRACE, subsys, fmt, ##__VA_ARGS__)
^
src/plumbing/transcoding.c: In function 'transcoder_stream_video':
src/plumbing/transcoding.c:1064:30: error: 'PIX_FMT_YUV420P' undeclared (first use in this function)
octx->pix_fmt = PIX_FMT_YUV420P;
^
src/plumbing/transcoding.c:1064:30: note: each undeclared identifier is reported only once for each function it appears in
src/plumbing/transcoding.c:1191:7: error: implicit declaration of function 'avpicture_deinterlace' [-Werror=implicit-function-declaration]
if (avpicture_deinterlace(&deint_pic,
^
src/plumbing/transcoding.c: In function 'transcoder_init_video':
src/plumbing/transcoding.c:1606:23: error: implicit declaration of function 'avcodec_alloc_frame' [-Werror=implicit-function-declaration]
vs->vid_dec_frame = avcodec_alloc_frame();
^
src/plumbing/transcoding.c:1606:21: error: assignment makes pointer from integer without a cast [-Werror=int-conversion]
vs->vid_dec_frame = avcodec_alloc_frame();
^
src/plumbing/transcoding.c:1607:21: error: assignment makes pointer from integer without a cast [-Werror=int-conversion]
vs->vid_enc_frame = avcodec_alloc_frame();
^
src/plumbing/transcoding.c:1609:3: error: implicit declaration of function 'avcodec_get_frame_defaults' [-Werror=implicit-function-declaration]
avcodec_get_frame_defaults(vs->vid_dec_frame);
^
cc1: all warnings being treated as errors
Makefile:441: recipe for target '/home/xxxxxx/tvheadend-4.0.8/build.linux/src/plumbing/transcoding.o' failed
make: *** [/home/xxxxxx/tvheadend-4.0.8/build.linux/src/plumbing/transcoding.o] Error 1