Getting this error
```
[ 44%] Building CXX object CMakeFiles/libffmpegthumbnailerobj.dir/libffmpegthumbnailer/pngwriter.cpp.o
In file included from /usr/local/include/libavformat/avformat.h:56,
from /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:34:
/usr/local/include/libavcodec/avcodec.h:475:6: error: multiple definition of ‘enum AVColorPrimaries’
475 | enum AVColorPrimaries{
| ^~~~~~~~~~~~~~~~
In file included from /usr/include/libavutil/avutil.h:303,
from /usr/include/libavutil/mem.h:35,
from /usr/include/libavutil/common.h:530,
from /usr/include/libavutil/display.h:30,
from /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:28:
/usr/include/libavutil/pixfmt.h:455:6: note: previous definition here
455 | enum AVColorPrimaries {
| ^~~~~~~~~~~~~~~~
In file included from /usr/local/include/libavformat/avformat.h:56,
from /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:34:
/usr/local/include/libavcodec/avcodec.h:486:6: error: multiple definition of ‘enum AVColorTransferCharacteristic’
486 | enum AVColorTransferCharacteristic{
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/libavutil/avutil.h:303,
from /usr/include/libavutil/mem.h:35,
from /usr/include/libavutil/common.h:530,
from /usr/include/libavutil/display.h:30,
from /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:28:
/usr/include/libavutil/pixfmt.h:480:6: note: previous definition here
480 | enum AVColorTransferCharacteristic {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/local/include/libavformat/avformat.h:56,
from /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:34:
/usr/local/include/libavcodec/avcodec.h:494:6: error: multiple definition of ‘enum AVColorSpace’
494 | enum AVColorSpace{
| ^~~~~~~~~~~~
In file included from /usr/include/libavutil/avutil.h:303,
from /usr/include/libavutil/mem.h:35,
from /usr/include/libavutil/common.h:530,
from /usr/include/libavutil/display.h:30,
from /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:28:
/usr/include/libavutil/pixfmt.h:509:6: note: previous definition here
509 | enum AVColorSpace {
| ^~~~~~~~~~~~
In file included from /usr/local/include/libavformat/avformat.h:56,
from /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:34:
/usr/local/include/libavcodec/avcodec.h:505:6: error: multiple definition of ‘enum AVColorRange’
505 | enum AVColorRange{
| ^~~~~~~~~~~~
In file included from /usr/include/libavutil/avutil.h:303,
from /usr/include/libavutil/mem.h:35,
from /usr/include/libavutil/common.h:530,
from /usr/include/libavutil/display.h:30,
from /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:28:
/usr/include/libavutil/pixfmt.h:532:6: note: previous definition here
532 | enum AVColorRange {
| ^~~~~~~~~~~~
In file included from /usr/local/include/libavformat/avformat.h:56,
from /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:34:
/usr/local/include/libavcodec/avcodec.h:517:6: error: multiple definition of ‘enum AVChromaLocation’
517 | enum AVChromaLocation{
| ^~~~~~~~~~~~~~~~
In file included from /usr/include/libavutil/avutil.h:303,
from /usr/include/libavutil/mem.h:35,
from /usr/include/libavutil/common.h:530,
from /usr/include/libavutil/display.h:30,
from /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:28:
/usr/include/libavutil/pixfmt.h:554:6: note: previous definition here
554 | enum AVChromaLocation {
| ^~~~~~~~~~~~~~~~
In file included from /usr/local/include/libavformat/avformat.h:56,
from /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:34:
/usr/local/include/libavcodec/avcodec.h:1019:16: error: redefinition of ‘struct AVFrame’
1019 | typedef struct AVFrame {
| ^~~~~~~
In file included from /usr/include/libavfilter/avfilter.h:44,
from /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:31:
/usr/include/libavutil/frame.h:300:16: note: previous definition of ‘struct AVFrame’
300 | typedef struct AVFrame {
| ^~~~~~~
In file included from /usr/local/include/libavformat/avformat.h:56,
from /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:34:
/usr/local/include/libavcodec/avcodec.h:1021:3: error: conflicting declaration ‘typedef int AVFrame’
1021 | } AVFrame;
| ^~~~~~~
In file included from /usr/include/libavfilter/avfilter.h:44,
from /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:31:
/usr/include/libavutil/frame.h:680:3: note: previous declaration as ‘typedef struct AVFrame AVFrame’
680 | } AVFrame;
| ^~~~~~~
In file included from /usr/local/include/libavformat/avformat.h:56,
from /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:34:
/usr/local/include/libavcodec/avcodec.h:1125:10: error: use of enum ‘PixelFormat’ without previous declaration
1125 | enum PixelFormat pix_fmt;
| ^~~~~~~~~~~
/usr/local/include/libavcodec/avcodec.h:1824:10: error: use of enum ‘PixelFormat’ without previous declaration
1824 | enum PixelFormat (*get_format)(struct AVCodecContext *s, const enum PixelFormat * fmt);
| ^~~~~~~~~~~
/usr/local/include/libavcodec/avcodec.h:1824:73: error: use of enum ‘PixelFormat’ without previous declaration
1824 | enum PixelFormat (*get_format)(struct AVCodecContext *s, const enum PixelFormat * fmt);
| ^~~~~~~~~~~
/usr/local/include/libavcodec/avcodec.h:2687:16: error: use of enum ‘PixelFormat’ without previous declaration
2687 | const enum PixelFormat *pix_fmts; ///< array of supported pixel formats, or NULL if unknown, array is terminated by -1
| ^~~~~~~~~~~
/usr/local/include/libavcodec/avcodec.h:2728:10: error: use of enum ‘PixelFormat’ without previous declaration
2728 | enum PixelFormat pix_fmt;
| ^~~~~~~~~~~
/usr/local/include/libavcodec/avcodec.h:3012:46: error: use of enum ‘PixelFormat’ without previous declaration
3012 | int avpicture_alloc(AVPicture *picture, enum PixelFormat pix_fmt, int width, int height);
| ^~~~~~~~~~~
/usr/local/include/libavcodec/avcodec.h:3039:25: error: use of enum ‘PixelFormat’ without previous declaration
3039 | enum PixelFormat pix_fmt, int width, int height);
| ^~~~~~~~~~~
/usr/local/include/libavcodec/avcodec.h:3040:49: error: use of enum ‘PixelFormat’ without previous declaration
3040 | int avpicture_layout(const AVPicture* src, enum PixelFormat pix_fmt, int width, int height,
| ^~~~~~~~~~~
/usr/local/include/libavcodec/avcodec.h:3055:29: error: use of enum ‘PixelFormat’ without previous declaration
3055 | int avpicture_get_size(enum PixelFormat pix_fmt, int width, int height);
| ^~~~~~~~~~~
/usr/local/include/libavcodec/avcodec.h:3056:41: error: use of enum ‘PixelFormat’ without previous declaration
3056 | void avcodec_get_chroma_sub_sample(enum PixelFormat pix_fmt, int *h_shift, int *v_shift);
| ^~~~~~~~~~~
/usr/local/include/libavcodec/avcodec.h:3057:43: error: use of enum ‘PixelFormat’ without previous declaration
3057 | const char *avcodec_get_pix_fmt_name(enum PixelFormat pix_fmt);
| ^~~~~~~~~~~
/usr/local/include/libavcodec/avcodec.h:3074:27: error: use of enum ‘PixelFormat’ without previous declaration
3074 | attribute_deprecated enum PixelFormat avcodec_get_pix_fmt(const char* name);
| ^~~~~~~~~~~
/usr/local/include/libavcodec/avcodec.h:3082:48: error: use of enum ‘PixelFormat’ without previous declaration
3082 | unsigned int avcodec_pix_fmt_to_codec_tag(enum PixelFormat pix_fmt);
| ^~~~~~~~~~~
/usr/local/include/libavcodec/avcodec.h:3108:35: error: use of enum ‘PixelFormat’ without previous declaration
3108 | int avcodec_get_pix_fmt_loss(enum PixelFormat dst_pix_fmt, enum PixelFormat src_pix_fmt,
| ^~~~~~~~~~~
/usr/local/include/libavcodec/avcodec.h:3108:65: error: use of enum ‘PixelFormat’ without previous declaration
3108 | int avcodec_get_pix_fmt_loss(enum PixelFormat dst_pix_fmt, enum PixelFormat src_pix_fmt,
| ^~~~~~~~~~~
/usr/local/include/libavcodec/avcodec.h:3133:6: error: use of enum ‘PixelFormat’ without previous declaration
3133 | enum PixelFormat avcodec_find_best_pix_fmt(int64_t pix_fmt_mask, enum PixelFormat src_pix_fmt,
| ^~~~~~~~~~~
/usr/local/include/libavcodec/avcodec.h:3133:71: error: use of enum ‘PixelFormat’ without previous declaration
3133 | enum PixelFormat avcodec_find_best_pix_fmt(int64_t pix_fmt_mask, enum PixelFormat src_pix_fmt,
| ^~~~~~~~~~~
/usr/local/include/libavcodec/avcodec.h:3147:60: error: use of enum ‘PixelFormat’ without previous declaration
3147 | void avcodec_pix_fmt_string (char *buf, int buf_size, enum PixelFormat pix_fmt);
| ^~~~~~~~~~~
/usr/local/include/libavcodec/avcodec.h:3157:29: error: use of enum ‘PixelFormat’ without previous declaration
3157 | enum PixelFormat pix_fmt, int width, int height);
| ^~~~~~~~~~~
/usr/local/include/libavcodec/avcodec.h:3162:32: error: use of enum ‘PixelFormat’ without previous declaration
3162 | enum PixelFormat pix_fmt, int width, int height);
| ^~~~~~~~~~~
/usr/local/include/libavcodec/avcodec.h:3339:6: error: use of enum ‘PixelFormat’ without previous declaration
3339 | enum PixelFormat avcodec_default_get_format(struct AVCodecContext *s, const enum PixelFormat * fmt);
| ^~~~~~~~~~~
/usr/local/include/libavcodec/avcodec.h:3339:82: error: use of enum ‘PixelFormat’ without previous declaration
3339 | enum PixelFormat avcodec_default_get_format(struct AVCodecContext *s, const enum PixelFormat * fmt);
| ^~~~~~~~~~~
/usr/local/include/libavcodec/avcodec.h:3839:7: error: conflicting declaration of C function ‘void* av_fast_realloc(void*, unsigned int*, unsigned int)’
3839 | void *av_fast_realloc(void *ptr, unsigned int *size, unsigned int min_size);
| ^~~~~~~~~~~~~~~
In file included from /usr/include/libavutil/common.h:530,
from /usr/include/libavutil/display.h:30,
from /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:28:
/usr/include/libavutil/mem.h:376:7: note: previous declaration ‘void* av_fast_realloc(void*, unsigned int*, size_t)’
376 | void *av_fast_realloc(void *ptr, unsigned int *size, size_t min_size);
| ^~~~~~~~~~~~~~~
In file included from /usr/local/include/libavformat/avformat.h:56,
from /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:34:
/usr/local/include/libavcodec/avcodec.h:3853:6: error: conflicting declaration of C function ‘void av_fast_malloc(void*, unsigned int*, unsigned int)’
3853 | void av_fast_malloc(void *ptr, unsigned int *size, unsigned int min_size);
| ^~~~~~~~~~~~~~
In file included from /usr/include/libavutil/common.h:530,
from /usr/include/libavutil/display.h:30,
from /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:28:
/usr/include/libavutil/mem.h:407:6: note: previous declaration ‘void av_fast_malloc(void*, unsigned int*, size_t)’
407 | void av_fast_malloc(void *ptr, unsigned int *size, size_t min_size);
| ^~~~~~~~~~~~~~
In file included from /usr/local/include/libavformat/avformat.h:56,
from /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:34:
/usr/local/include/libavcodec/avcodec.h:3859:27: error: use of enum ‘PixelFormat’ without previous declaration
3859 | enum PixelFormat pix_fmt, int width, int height);
| ^~~~~~~~~~~
/usr/local/include/libavcodec/avcodec.h:3865:26: error: use of enum ‘PixelFormat’ without previous declaration
3865 | enum PixelFormat pix_fmt, int top_band, int left_band);
| ^~~~~~~~~~~
/usr/local/include/libavcodec/avcodec.h:3870:86: error: use of enum ‘PixelFormat’ without previous declaration
3870 | int av_picture_pad(AVPicture *dst, const AVPicture *src, int height, int width, enum PixelFormat pix_fmt,
| ^~~~~~~~~~~
In file included from /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:34:
/usr/local/include/libavformat/avformat.h:223:10: error: use of enum ‘PixelFormat’ without previous declaration
223 | enum PixelFormat pix_fmt;
| ^~~~~~~~~~~
/home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp: In member function ‘void ffmpegthumbnailer::MovieDecoder::initialize(const string&, bool)’:
/home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:75:5: error: ‘avformat_network_init’ was not declared in this scope
75 | avformat_network_init();
| ^~~~~~~~~~~~~~~~~~~~~
/home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:80:39: error: ‘avformat_open_input’ was not declared in this scope
80 | if ((!m_FormatContextWasGiven) && avformat_open_input(&m_pFormatContext, inputFile.c_str(), nullptr, nullptr) != 0)
| ^~~~~~~~~~~~~~~~~~~
/home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:86:9: error: ‘avformat_find_stream_info’ was not declared in this scope; did you mean ‘av_find_stream_info’?
86 | if (avformat_find_stream_info(m_pFormatContext, nullptr) < 0)
| ^~~~~~~~~~~~~~~~~~~~~~~~~
| av_find_stream_info
/home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp: In member function ‘void ffmpegthumbnailer::MovieDecoder::destroy()’:
/home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:106:9: error: ‘avformat_close_input’ was not declared in this scope
106 | avformat_close_input(&m_pFormatContext);
| ^~~~~~~~~~~~~~~~~~~~
/home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:111:9: error: ‘av_packet_unref’ was not declared in this scope; did you mean ‘av_frame_unref’?
111 | av_packet_unref(m_pPacket);
| ^~~~~~~~~~~~~~~
| av_frame_unref
/home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:123:5: error: ‘avformat_network_deinit’ was not declared in this scope
123 | avformat_network_deinit();
| ^~~~~~~~~~~~~~~~~~~~~~~
/home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp: At global scope:
/home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:141:31: error: ‘AVCodecID’ was not declared in this scope; did you mean ‘AVCodec’?
141 | static bool isStillImageCodec(AVCodecID codecId)
| ^~~~~~~~~
| AVCodec
/home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp: In member function ‘int32_t ffmpegthumbnailer::MovieDecoder::findPreferedVideoStream(bool)’:
/home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:158:76: error: ‘ffmpegthumbnailer::isStillImageCodec’ cannot be used as a function
158 | if (!preferEmbeddedMetadata || !isStillImageCodec(ctx->codec_id))
| ^
/home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:167:51: error: cannot convert ‘AVMetadata*’ to ‘const AVDictionary*’
167 | while ((tag = av_dict_get(stream->metadata, "", tag, AV_DICT_IGNORE_SUFFIX)))
| ~~~~~~~~^~~~~~~~
| |
| AVMetadata*
In file included from /usr/include/libavutil/opt.h:32,
from /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:30:
/usr/include/libavutil/dict.h:103:52: note: initializing argument 1 of ‘AVDictionaryEntry* av_dict_get(const AVDictionary*, const char*, const AVDictionaryEntry*, int)’
103 | AVDictionaryEntry *av_dict_get(const AVDictionary *m, const char *key,
| ~~~~~~~~~~~~~~~~~~~~^
In file included from /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:34:
/usr/local/include/libavformat/avformat.h:129:16: note: class type ‘AVMetadata’ is incomplete
129 | typedef struct AVMetadata AVMetadata;
| ^~~~~~~~~~
/home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp: In member function ‘void ffmpegthumbnailer::MovieDecoder::initializeVideo(bool)’:
/home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:219:9: error: ‘avcodec_open2’ was not declared in this scope; did you mean ‘avcodec_open’?
219 | if (avcodec_open2(m_pVideoCodecContext, m_pVideoCodec, nullptr) < 0)
| ^~~~~~~~~~~~~
| avcodec_open
/home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp: In member function ‘std::string ffmpegthumbnailer::MovieDecoder::createScaleString(const string&, bool)’:
/home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:317:26: error: ‘av_guess_sample_aspect_ratio’ was not declared in this scope; did you mean ‘av_buffersink_get_sample_aspect_ratio’?
317 | AVRational par = av_guess_sample_aspect_ratio(m_pFormatContext, m_pVideoStream, m_pFrame);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
| av_buffersink_get_sample_aspect_ratio
/home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp: In member function ‘void ffmpegthumbnailer::MovieDecoder::initializeFilterGraph(const AVRational&, const string&, bool)’:
/home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:392:100: warning: ‘AVBufferSinkParams* av_buffersink_params_alloc()’ is deprecated [-Wdeprecated-declarations]
392 | std::unique_ptr buffersinkParams(av_buffersink_params_alloc(), del);
| ^
In file included from /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:32:
/usr/include/libavfilter/buffersink.h:76:21: note: declared here
76 | AVBufferSinkParams *av_buffersink_params_alloc(void);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:394:27: warning: ‘void avfilter_register_all()’ is deprecated [-Wdeprecated-declarations]
394 | avfilter_register_all();
| ^
In file included from /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:31:
/usr/include/libavfilter/avfilter.h:714:6: note: declared here
714 | void avfilter_register_all(void);
| ^~~~~~~~~~~~~~~~~~~~~
/home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp: In member function ‘bool ffmpegthumbnailer::MovieDecoder::getVideoPacket()’:
/home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:577:9: error: ‘av_packet_unref’ was not declared in this scope; did you mean ‘av_frame_unref’?
577 | av_packet_unref(m_pPacket);
| ^~~~~~~~~~~~~~~
| av_frame_unref
/home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:591:17: error: ‘av_packet_unref’ was not declared in this scope; did you mean ‘av_frame_unref’?
591 | av_packet_unref(m_pPacket);
| ^~~~~~~~~~~~~~~
| av_frame_unref
/home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp: In member function ‘int32_t ffmpegthumbnailer::MovieDecoder::getStreamRotation()’:
/home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:647:90: error: ‘AV_PKT_DATA_DISPLAYMATRIX’ was not declared in this scope; did you mean ‘AV_FRAME_DATA_DISPLAYMATRIX’?
647 | int32_t* matrix = reinterpret_cast(av_stream_get_side_data(m_pVideoStream, AV_PKT_DATA_DISPLAYMATRIX, nullptr));
| ^~~~~~~~~~~~~~~~~~~~~~~~~
| AV_FRAME_DATA_DISPLAYMATRIX
/home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:647:50: error: ‘av_stream_get_side_data’ was not declared in this scope; did you mean ‘av_frame_get_side_data’?
647 | int32_t* matrix = reinterpret_cast(av_stream_get_side_data(m_pVideoStream, AV_PKT_DATA_DISPLAYMATRIX, nullptr));
| ^~~~~~~~~~~~~~~~~~~~~~~
| av_frame_get_side_data
make[2]: *** [CMakeFiles/libffmpegthumbnailerobj.dir/build.make:82: CMakeFiles/libffmpegthumbnailerobj.dir/libffmpegthumbnailer/moviedecoder.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [CMakeFiles/Makefile2:203: CMakeFiles/libffmpegthumbnailerobj.dir/all] Error 2
make: *** [Makefile:182: all] Error 2
==> ERROR: A failure occurred in build().
Aborting...
```
Same happens for compiling from the master tree (source). I think this is might have to do something with ffmpeg version installed in the system (I have the 4.3.1) but I am totally unsure if it's possible to overcome this problem without using another (empty) system or docker.
I am trying to build either "normal" or "static" build for ffmpegthumnailer on Manjaro Linux recent from this PKGBUILD:
https://github.com/archlinux/svntogit-packages/blob/packages/ffmpegthumbnailer/trunk/PKGBUILD
Getting this error
``` [ 44%] Building CXX object CMakeFiles/libffmpegthumbnailerobj.dir/libffmpegthumbnailer/pngwriter.cpp.o In file included from /usr/local/include/libavformat/avformat.h:56, from /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:34: /usr/local/include/libavcodec/avcodec.h:475:6: error: multiple definition of ‘enum AVColorPrimaries’ 475 | enum AVColorPrimaries{ | ^~~~~~~~~~~~~~~~ In file included from /usr/include/libavutil/avutil.h:303, from /usr/include/libavutil/mem.h:35, from /usr/include/libavutil/common.h:530, from /usr/include/libavutil/display.h:30, from /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:28: /usr/include/libavutil/pixfmt.h:455:6: note: previous definition here 455 | enum AVColorPrimaries { | ^~~~~~~~~~~~~~~~ In file included from /usr/local/include/libavformat/avformat.h:56, from /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:34: /usr/local/include/libavcodec/avcodec.h:486:6: error: multiple definition of ‘enum AVColorTransferCharacteristic’ 486 | enum AVColorTransferCharacteristic{ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/libavutil/avutil.h:303, from /usr/include/libavutil/mem.h:35, from /usr/include/libavutil/common.h:530, from /usr/include/libavutil/display.h:30, from /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:28: /usr/include/libavutil/pixfmt.h:480:6: note: previous definition here 480 | enum AVColorTransferCharacteristic { | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from /usr/local/include/libavformat/avformat.h:56, from /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:34: /usr/local/include/libavcodec/avcodec.h:494:6: error: multiple definition of ‘enum AVColorSpace’ 494 | enum AVColorSpace{ | ^~~~~~~~~~~~ In file included from /usr/include/libavutil/avutil.h:303, from /usr/include/libavutil/mem.h:35, from /usr/include/libavutil/common.h:530, from /usr/include/libavutil/display.h:30, from /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:28: /usr/include/libavutil/pixfmt.h:509:6: note: previous definition here 509 | enum AVColorSpace { | ^~~~~~~~~~~~ In file included from /usr/local/include/libavformat/avformat.h:56, from /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:34: /usr/local/include/libavcodec/avcodec.h:505:6: error: multiple definition of ‘enum AVColorRange’ 505 | enum AVColorRange{ | ^~~~~~~~~~~~ In file included from /usr/include/libavutil/avutil.h:303, from /usr/include/libavutil/mem.h:35, from /usr/include/libavutil/common.h:530, from /usr/include/libavutil/display.h:30, from /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:28: /usr/include/libavutil/pixfmt.h:532:6: note: previous definition here 532 | enum AVColorRange { | ^~~~~~~~~~~~ In file included from /usr/local/include/libavformat/avformat.h:56, from /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:34: /usr/local/include/libavcodec/avcodec.h:517:6: error: multiple definition of ‘enum AVChromaLocation’ 517 | enum AVChromaLocation{ | ^~~~~~~~~~~~~~~~ In file included from /usr/include/libavutil/avutil.h:303, from /usr/include/libavutil/mem.h:35, from /usr/include/libavutil/common.h:530, from /usr/include/libavutil/display.h:30, from /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:28: /usr/include/libavutil/pixfmt.h:554:6: note: previous definition here 554 | enum AVChromaLocation { | ^~~~~~~~~~~~~~~~ In file included from /usr/local/include/libavformat/avformat.h:56, from /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:34: /usr/local/include/libavcodec/avcodec.h:1019:16: error: redefinition of ‘struct AVFrame’ 1019 | typedef struct AVFrame { | ^~~~~~~ In file included from /usr/include/libavfilter/avfilter.h:44, from /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:31: /usr/include/libavutil/frame.h:300:16: note: previous definition of ‘struct AVFrame’ 300 | typedef struct AVFrame { | ^~~~~~~ In file included from /usr/local/include/libavformat/avformat.h:56, from /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:34: /usr/local/include/libavcodec/avcodec.h:1021:3: error: conflicting declaration ‘typedef int AVFrame’ 1021 | } AVFrame; | ^~~~~~~ In file included from /usr/include/libavfilter/avfilter.h:44, from /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:31: /usr/include/libavutil/frame.h:680:3: note: previous declaration as ‘typedef struct AVFrame AVFrame’ 680 | } AVFrame; | ^~~~~~~ In file included from /usr/local/include/libavformat/avformat.h:56, from /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:34: /usr/local/include/libavcodec/avcodec.h:1125:10: error: use of enum ‘PixelFormat’ without previous declaration 1125 | enum PixelFormat pix_fmt; | ^~~~~~~~~~~ /usr/local/include/libavcodec/avcodec.h:1824:10: error: use of enum ‘PixelFormat’ without previous declaration 1824 | enum PixelFormat (*get_format)(struct AVCodecContext *s, const enum PixelFormat * fmt); | ^~~~~~~~~~~ /usr/local/include/libavcodec/avcodec.h:1824:73: error: use of enum ‘PixelFormat’ without previous declaration 1824 | enum PixelFormat (*get_format)(struct AVCodecContext *s, const enum PixelFormat * fmt); | ^~~~~~~~~~~ /usr/local/include/libavcodec/avcodec.h:2687:16: error: use of enum ‘PixelFormat’ without previous declaration 2687 | const enum PixelFormat *pix_fmts; ///< array of supported pixel formats, or NULL if unknown, array is terminated by -1 | ^~~~~~~~~~~ /usr/local/include/libavcodec/avcodec.h:2728:10: error: use of enum ‘PixelFormat’ without previous declaration 2728 | enum PixelFormat pix_fmt; | ^~~~~~~~~~~ /usr/local/include/libavcodec/avcodec.h:3012:46: error: use of enum ‘PixelFormat’ without previous declaration 3012 | int avpicture_alloc(AVPicture *picture, enum PixelFormat pix_fmt, int width, int height); | ^~~~~~~~~~~ /usr/local/include/libavcodec/avcodec.h:3039:25: error: use of enum ‘PixelFormat’ without previous declaration 3039 | enum PixelFormat pix_fmt, int width, int height); | ^~~~~~~~~~~ /usr/local/include/libavcodec/avcodec.h:3040:49: error: use of enum ‘PixelFormat’ without previous declaration 3040 | int avpicture_layout(const AVPicture* src, enum PixelFormat pix_fmt, int width, int height, | ^~~~~~~~~~~ /usr/local/include/libavcodec/avcodec.h:3055:29: error: use of enum ‘PixelFormat’ without previous declaration 3055 | int avpicture_get_size(enum PixelFormat pix_fmt, int width, int height); | ^~~~~~~~~~~ /usr/local/include/libavcodec/avcodec.h:3056:41: error: use of enum ‘PixelFormat’ without previous declaration 3056 | void avcodec_get_chroma_sub_sample(enum PixelFormat pix_fmt, int *h_shift, int *v_shift); | ^~~~~~~~~~~ /usr/local/include/libavcodec/avcodec.h:3057:43: error: use of enum ‘PixelFormat’ without previous declaration 3057 | const char *avcodec_get_pix_fmt_name(enum PixelFormat pix_fmt); | ^~~~~~~~~~~ /usr/local/include/libavcodec/avcodec.h:3074:27: error: use of enum ‘PixelFormat’ without previous declaration 3074 | attribute_deprecated enum PixelFormat avcodec_get_pix_fmt(const char* name); | ^~~~~~~~~~~ /usr/local/include/libavcodec/avcodec.h:3082:48: error: use of enum ‘PixelFormat’ without previous declaration 3082 | unsigned int avcodec_pix_fmt_to_codec_tag(enum PixelFormat pix_fmt); | ^~~~~~~~~~~ /usr/local/include/libavcodec/avcodec.h:3108:35: error: use of enum ‘PixelFormat’ without previous declaration 3108 | int avcodec_get_pix_fmt_loss(enum PixelFormat dst_pix_fmt, enum PixelFormat src_pix_fmt, | ^~~~~~~~~~~ /usr/local/include/libavcodec/avcodec.h:3108:65: error: use of enum ‘PixelFormat’ without previous declaration 3108 | int avcodec_get_pix_fmt_loss(enum PixelFormat dst_pix_fmt, enum PixelFormat src_pix_fmt, | ^~~~~~~~~~~ /usr/local/include/libavcodec/avcodec.h:3133:6: error: use of enum ‘PixelFormat’ without previous declaration 3133 | enum PixelFormat avcodec_find_best_pix_fmt(int64_t pix_fmt_mask, enum PixelFormat src_pix_fmt, | ^~~~~~~~~~~ /usr/local/include/libavcodec/avcodec.h:3133:71: error: use of enum ‘PixelFormat’ without previous declaration 3133 | enum PixelFormat avcodec_find_best_pix_fmt(int64_t pix_fmt_mask, enum PixelFormat src_pix_fmt, | ^~~~~~~~~~~ /usr/local/include/libavcodec/avcodec.h:3147:60: error: use of enum ‘PixelFormat’ without previous declaration 3147 | void avcodec_pix_fmt_string (char *buf, int buf_size, enum PixelFormat pix_fmt); | ^~~~~~~~~~~ /usr/local/include/libavcodec/avcodec.h:3157:29: error: use of enum ‘PixelFormat’ without previous declaration 3157 | enum PixelFormat pix_fmt, int width, int height); | ^~~~~~~~~~~ /usr/local/include/libavcodec/avcodec.h:3162:32: error: use of enum ‘PixelFormat’ without previous declaration 3162 | enum PixelFormat pix_fmt, int width, int height); | ^~~~~~~~~~~ /usr/local/include/libavcodec/avcodec.h:3339:6: error: use of enum ‘PixelFormat’ without previous declaration 3339 | enum PixelFormat avcodec_default_get_format(struct AVCodecContext *s, const enum PixelFormat * fmt); | ^~~~~~~~~~~ /usr/local/include/libavcodec/avcodec.h:3339:82: error: use of enum ‘PixelFormat’ without previous declaration 3339 | enum PixelFormat avcodec_default_get_format(struct AVCodecContext *s, const enum PixelFormat * fmt); | ^~~~~~~~~~~ /usr/local/include/libavcodec/avcodec.h:3839:7: error: conflicting declaration of C function ‘void* av_fast_realloc(void*, unsigned int*, unsigned int)’ 3839 | void *av_fast_realloc(void *ptr, unsigned int *size, unsigned int min_size); | ^~~~~~~~~~~~~~~ In file included from /usr/include/libavutil/common.h:530, from /usr/include/libavutil/display.h:30, from /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:28: /usr/include/libavutil/mem.h:376:7: note: previous declaration ‘void* av_fast_realloc(void*, unsigned int*, size_t)’ 376 | void *av_fast_realloc(void *ptr, unsigned int *size, size_t min_size); | ^~~~~~~~~~~~~~~ In file included from /usr/local/include/libavformat/avformat.h:56, from /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:34: /usr/local/include/libavcodec/avcodec.h:3853:6: error: conflicting declaration of C function ‘void av_fast_malloc(void*, unsigned int*, unsigned int)’ 3853 | void av_fast_malloc(void *ptr, unsigned int *size, unsigned int min_size); | ^~~~~~~~~~~~~~ In file included from /usr/include/libavutil/common.h:530, from /usr/include/libavutil/display.h:30, from /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:28: /usr/include/libavutil/mem.h:407:6: note: previous declaration ‘void av_fast_malloc(void*, unsigned int*, size_t)’ 407 | void av_fast_malloc(void *ptr, unsigned int *size, size_t min_size); | ^~~~~~~~~~~~~~ In file included from /usr/local/include/libavformat/avformat.h:56, from /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:34: /usr/local/include/libavcodec/avcodec.h:3859:27: error: use of enum ‘PixelFormat’ without previous declaration 3859 | enum PixelFormat pix_fmt, int width, int height); | ^~~~~~~~~~~ /usr/local/include/libavcodec/avcodec.h:3865:26: error: use of enum ‘PixelFormat’ without previous declaration 3865 | enum PixelFormat pix_fmt, int top_band, int left_band); | ^~~~~~~~~~~ /usr/local/include/libavcodec/avcodec.h:3870:86: error: use of enum ‘PixelFormat’ without previous declaration 3870 | int av_picture_pad(AVPicture *dst, const AVPicture *src, int height, int width, enum PixelFormat pix_fmt, | ^~~~~~~~~~~ In file included from /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:34: /usr/local/include/libavformat/avformat.h:223:10: error: use of enum ‘PixelFormat’ without previous declaration 223 | enum PixelFormat pix_fmt; | ^~~~~~~~~~~ /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp: In member function ‘void ffmpegthumbnailer::MovieDecoder::initialize(const string&, bool)’: /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:75:5: error: ‘avformat_network_init’ was not declared in this scope 75 | avformat_network_init(); | ^~~~~~~~~~~~~~~~~~~~~ /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:80:39: error: ‘avformat_open_input’ was not declared in this scope 80 | if ((!m_FormatContextWasGiven) && avformat_open_input(&m_pFormatContext, inputFile.c_str(), nullptr, nullptr) != 0) | ^~~~~~~~~~~~~~~~~~~ /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:86:9: error: ‘avformat_find_stream_info’ was not declared in this scope; did you mean ‘av_find_stream_info’? 86 | if (avformat_find_stream_info(m_pFormatContext, nullptr) < 0) | ^~~~~~~~~~~~~~~~~~~~~~~~~ | av_find_stream_info /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp: In member function ‘void ffmpegthumbnailer::MovieDecoder::destroy()’: /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:106:9: error: ‘avformat_close_input’ was not declared in this scope 106 | avformat_close_input(&m_pFormatContext); | ^~~~~~~~~~~~~~~~~~~~ /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:111:9: error: ‘av_packet_unref’ was not declared in this scope; did you mean ‘av_frame_unref’? 111 | av_packet_unref(m_pPacket); | ^~~~~~~~~~~~~~~ | av_frame_unref /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:123:5: error: ‘avformat_network_deinit’ was not declared in this scope 123 | avformat_network_deinit(); | ^~~~~~~~~~~~~~~~~~~~~~~ /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp: At global scope: /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:141:31: error: ‘AVCodecID’ was not declared in this scope; did you mean ‘AVCodec’? 141 | static bool isStillImageCodec(AVCodecID codecId) | ^~~~~~~~~ | AVCodec /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp: In member function ‘int32_t ffmpegthumbnailer::MovieDecoder::findPreferedVideoStream(bool)’: /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:158:76: error: ‘ffmpegthumbnailer::isStillImageCodec’ cannot be used as a function 158 | if (!preferEmbeddedMetadata || !isStillImageCodec(ctx->codec_id)) | ^ /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:167:51: error: cannot convert ‘AVMetadata*’ to ‘const AVDictionary*’ 167 | while ((tag = av_dict_get(stream->metadata, "", tag, AV_DICT_IGNORE_SUFFIX))) | ~~~~~~~~^~~~~~~~ | | | AVMetadata* In file included from /usr/include/libavutil/opt.h:32, from /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:30: /usr/include/libavutil/dict.h:103:52: note: initializing argument 1 of ‘AVDictionaryEntry* av_dict_get(const AVDictionary*, const char*, const AVDictionaryEntry*, int)’ 103 | AVDictionaryEntry *av_dict_get(const AVDictionary *m, const char *key, | ~~~~~~~~~~~~~~~~~~~~^ In file included from /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:34: /usr/local/include/libavformat/avformat.h:129:16: note: class type ‘AVMetadata’ is incomplete 129 | typedef struct AVMetadata AVMetadata; | ^~~~~~~~~~ /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp: In member function ‘void ffmpegthumbnailer::MovieDecoder::initializeVideo(bool)’: /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:219:9: error: ‘avcodec_open2’ was not declared in this scope; did you mean ‘avcodec_open’? 219 | if (avcodec_open2(m_pVideoCodecContext, m_pVideoCodec, nullptr) < 0) | ^~~~~~~~~~~~~ | avcodec_open /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp: In member function ‘std::string ffmpegthumbnailer::MovieDecoder::createScaleString(const string&, bool)’: /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:317:26: error: ‘av_guess_sample_aspect_ratio’ was not declared in this scope; did you mean ‘av_buffersink_get_sample_aspect_ratio’? 317 | AVRational par = av_guess_sample_aspect_ratio(m_pFormatContext, m_pVideoStream, m_pFrame); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ | av_buffersink_get_sample_aspect_ratio /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp: In member function ‘void ffmpegthumbnailer::MovieDecoder::initializeFilterGraph(const AVRational&, const string&, bool)’: /home/sw/ffmpegthumb/src/ffmpegthumbnailer-2.2.2/libffmpegthumbnailer/moviedecoder.cpp:392:100: warning: ‘AVBufferSinkParams* av_buffersink_params_alloc()’ is deprecated [-Wdeprecated-declarations] 392 | std::unique_ptrSame happens for compiling from the master tree (source). I think this is might have to do something with ffmpeg version installed in the system (I have the 4.3.1) but I am totally unsure if it's possible to overcome this problem without using another (empty) system or docker.
Thank you. D