From 934aa9c24d34f8203744b56e4ac6e8599446ca02 Mon Sep 17 00:00:00 2001
From: Rinat Ibragimov <ibragimovrinat@mail.ru>
Date: Tue, 26 Dec 2017 16:16:39 +0300
Subject: [PATCH] ppb_video_decoder: use AV_ prefixed macros

Looks like newer FFmpeg versions have droped old definitions.
---
 cmake/ffmpeg-compat/CMakeLists.txt     |  1 +
 cmake/ffmpeg-compat/cfg_avcodecflags.c |  4 ++++
 cmake/ffmpeg-compat/ffmpeg_compat.h.in |  1 +
 src/ppb_video_decoder.c                | 11 ++++++++---
 4 files changed, 14 insertions(+), 3 deletions(-)
 create mode 100644 cmake/ffmpeg-compat/cfg_avcodecflags.c

diff --git a/cmake/ffmpeg-compat/CMakeLists.txt b/cmake/ffmpeg-compat/CMakeLists.txt
index 732a71ee..8f67c581 100644
--- a/cmake/ffmpeg-compat/CMakeLists.txt
+++ b/cmake/ffmpeg-compat/CMakeLists.txt
@@ -29,6 +29,7 @@ MACRO_C_SOURCE_CHECK(cfg_av_pix_fmt_vdpau.c HAVE_AV_PIX_FMT_VDPAU)
 MACRO_C_SOURCE_CHECK(cfg_avcodecid.c HAVE_AVCodecID)
 MACRO_C_SOURCE_CHECK(cfg_avcodeccontext_get_buffer2.c HAVE_AVCodecContext_get_buffer2)
 MACRO_C_SOURCE_CHECK(cfg_AVVDPAUContext.c HAVE_AVVDPAUContext)
+MACRO_C_SOURCE_CHECK(cfg_avcodecflags.c HAVE_AV_CODEC_FLAGS)
 
 MACRO_SYMBOL_CHECK(av_frame_alloc "libavcodec/avcodec.h" HAVE_av_frame_alloc)
 MACRO_SYMBOL_CHECK(av_frame_free "libavcodec/avcodec.h" HAVE_av_frame_free)
diff --git a/cmake/ffmpeg-compat/cfg_avcodecflags.c b/cmake/ffmpeg-compat/cfg_avcodecflags.c
new file mode 100644
index 00000000..d04de55b
--- /dev/null
+++ b/cmake/ffmpeg-compat/cfg_avcodecflags.c
@@ -0,0 +1,4 @@
+#include <libavcodec/avcodec.h>
+int main(void) {
+    return AV_CODEC_FLAG_TRUNCATED + AV_CODEC_CAP_TRUNCATED;
+}
diff --git a/cmake/ffmpeg-compat/ffmpeg_compat.h.in b/cmake/ffmpeg-compat/ffmpeg_compat.h.in
index dd40922c..da7834b1 100644
--- a/cmake/ffmpeg-compat/ffmpeg_compat.h.in
+++ b/cmake/ffmpeg-compat/ffmpeg_compat.h.in
@@ -6,3 +6,4 @@
 #define HAVE_av_frame_free              (@HAVE_av_frame_free@)
 #define HAVE_avcodec_free_context       (@HAVE_avcodec_free_context@)
 #define HAVE_AVVDPAUContext             (@HAVE_AVVDPAUContext@)
+#define HAVE_AV_CODEC_FLAGS             (@HAVE_AV_CODEC_FLAGS@)
diff --git a/src/ppb_video_decoder.c b/src/ppb_video_decoder.c
index eb150725..23647cdd 100644
--- a/src/ppb_video_decoder.c
+++ b/src/ppb_video_decoder.c
@@ -70,6 +70,11 @@
 #define AV_CODEC_ID_H264        CODEC_ID_H264
 #endif // !HAVE_AVCodecID
 
+#if !HAVE_AV_CODEC_FLAGS
+#define AV_CODEC_CAP_TRUNCATED  CODEC_CAP_TRUNCATED
+#define AV_CODEC_FLAG_TRUNCATED CODEC_FLAG_TRUNCATED
+#endif // !HAVE_AV_CODEC_FLAGS
+
 enum hwdec_api_e {
     HWDEC_NONE = 0,
     HWDEC_VAAPI,
@@ -620,9 +625,9 @@ initialize_decoder(struct pp_video_decoder_s *vd)
         goto err;
     }
 
-    if (vd->avcodec->capabilities & CODEC_CAP_TRUNCATED) {
-        trace_info("%s, codec have CODEC_CAP_TRUNCATED\n", __func__);
-        vd->avctx->flags |= CODEC_FLAG_TRUNCATED;
+    if (vd->avcodec->capabilities & AV_CODEC_CAP_TRUNCATED) {
+        trace_info("%s, codec have AV_CODEC_CAP_TRUNCATED\n", __func__);
+        vd->avctx->flags |= AV_CODEC_FLAG_TRUNCATED;
     }
 
     vd->avctx->opaque = vd;
