From e503ac508eb7cb47757609e4a78900ea9563204f Mon Sep 17 00:00:00 2001 From: Vadim Levin Date: Mon, 24 Aug 2020 23:07:25 +0300 Subject: [PATCH 1/2] fix: libavcodec version check for AV_CODEC_FLAG_GLOBAL_HEADER --- modules/videoio/src/cap_ffmpeg_impl.hpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/videoio/src/cap_ffmpeg_impl.hpp b/modules/videoio/src/cap_ffmpeg_impl.hpp index ba21428568..59120d90e6 100644 --- a/modules/videoio/src/cap_ffmpeg_impl.hpp +++ b/modules/videoio/src/cap_ffmpeg_impl.hpp @@ -1949,7 +1949,9 @@ static AVStream *icv_add_video_stream_FFMPEG(AVFormatContext *oc, // some formats want stream headers to be separate if(oc->oformat->flags & AVFMT_GLOBALHEADER) { -#if LIBAVCODEC_BUILD > CALC_FFMPEG_VERSION(56, 35, 0) + // flags were renamed: https://github.com/libav/libav/commit/7c6eb0a1b7bf1aac7f033a7ec6d8cacc3b5c2615 +#if LIBAVCODEC_BUILD >= (LIBAVCODEC_VERSION_MICRO >= 100 \ + ? CALC_FFMPEG_VERSION(56, 60, 100) : CALC_FFMPEG_VERSION(56, 35, 0)) c->flags |= AV_CODEC_FLAG_GLOBAL_HEADER; #else c->flags |= CODEC_FLAG_GLOBAL_HEADER; From f7e524cbe65b2e1aed9cd22905fcb4d372760f04 Mon Sep 17 00:00:00 2001 From: Vadim Levin Date: Mon, 24 Aug 2020 23:12:49 +0300 Subject: [PATCH 2/2] fix: libavcodec version check for AVDISCARD_NONINTRA - AVDISCARD_NONINTRA flag is supported only for FFMPEG libraries pack --- modules/videoio/src/cap_ffmpeg_impl.hpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/modules/videoio/src/cap_ffmpeg_impl.hpp b/modules/videoio/src/cap_ffmpeg_impl.hpp index 59120d90e6..ac6f9448e0 100644 --- a/modules/videoio/src/cap_ffmpeg_impl.hpp +++ b/modules/videoio/src/cap_ffmpeg_impl.hpp @@ -993,7 +993,10 @@ bool CvCapture_FFMPEG::open( const char* _filename ) enc->skip_frame = AVDISCARD_DEFAULT; else if (strcmp(avdiscard_entry->value, "none") == 0) enc->skip_frame = AVDISCARD_NONE; -#if LIBAVCODEC_BUILD >= CALC_FFMPEG_VERSION(54, 59, 100) + // NONINTRA flag was introduced with version bump at revision: + // https://github.com/FFmpeg/FFmpeg/commit/b152152df3b778d0a86dcda5d4f5d065b4175a7b + // This key is supported only for FFMPEG version +#if LIBAVCODEC_VERSION_MICRO >= 100 && LIBAVCODEC_BUILD >= CALC_FFMPEG_VERSION(55, 67, 100) else if (strcmp(avdiscard_entry->value, "nonintra") == 0) enc->skip_frame = AVDISCARD_NONINTRA; #endif