1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
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;
|