summarylogtreecommitdiffstats
path: root/318.patch
blob: 29e8ddd907316f5050bf3edf643d9532841380a1 (plain)
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
From b56a041ca1586ebaac0659892e5ba381e0a4288d Mon Sep 17 00:00:00 2001
From: ericb <eric.bachard@free.fr>
Date: Wed, 3 Jan 2018 18:46:31 +0100
Subject: [PATCH] Proposed fix for the Linux (maybe other OSs)  issue, because
 of deprecated CONSTANTS

---
 CMakeModules/FindFFMPEG.cmake |  4 ++--
 src/video/drivers/ffmpeg.cpp  | 12 ++++++++++++
 2 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/CMakeModules/FindFFMPEG.cmake b/CMakeModules/FindFFMPEG.cmake
index 4f77e5a6..0f3b6cb8 100644
--- a/CMakeModules/FindFFMPEG.cmake
+++ b/CMakeModules/FindFFMPEG.cmake
@@ -60,8 +60,8 @@ IF(AVCODEC_INCLUDE_DIR AND AVFORMAT_INCLUDE_DIR AND AVUTIL_INCLUDE_DIR AND SWSCA
    CHECK_CXX_SOURCE_COMPILES(
      "#include \"${AVCODEC_INCLUDE_DIR}/libavformat/avformat.h\"
       int main() {
-        sizeof(AVFormatContext::max_analyze_duration2);
-      }" HAVE_FFMPEG_MAX_ANALYZE_DURATION2
+        sizeof(AVFormatContext::max_analyze_duration);
+      }" HAVE_FFMPEG_MAX_ANALYZE_DURATION
    )
    CHECK_CXX_SOURCE_COMPILES(
      "#include \"${AVCODEC_INCLUDE_DIR}/libavformat/avformat.h\"
diff --git a/src/video/drivers/ffmpeg.cpp b/src/video/drivers/ffmpeg.cpp
index f0aa6ad5..efd48ddc 100644
--- a/src/video/drivers/ffmpeg.cpp
+++ b/src/video/drivers/ffmpeg.cpp
@@ -40,6 +40,8 @@ extern "C"
 #include <libavutil/mathematics.h>
 }
 
+#define CODEC_FLAG_GLOBAL_HEADER AV_CODEC_FLAG_GLOBAL_HEADER
+
 namespace pangolin
 {
 
@@ -80,8 +82,10 @@ std::string FfmpegFmtToString(const AVPixelFormat fmt)
     TEST_PIX_FMT_RETURN(YUVJ420P);
     TEST_PIX_FMT_RETURN(YUVJ422P);
     TEST_PIX_FMT_RETURN(YUVJ444P);
+#ifdef FF_API_XVMC
     TEST_PIX_FMT_RETURN(XVMC_MPEG2_MC);
     TEST_PIX_FMT_RETURN(XVMC_MPEG2_IDCT);
+#endif
     TEST_PIX_FMT_RETURN(UYVY422);
     TEST_PIX_FMT_RETURN(UYYVYY411);
     TEST_PIX_FMT_RETURN(BGR8);
@@ -101,11 +105,13 @@ std::string FfmpegFmtToString(const AVPixelFormat fmt)
     TEST_PIX_FMT_RETURN(YUV440P);
     TEST_PIX_FMT_RETURN(YUVJ440P);
     TEST_PIX_FMT_RETURN(YUVA420P);
+#ifdef FF_API_VDPAU
     TEST_PIX_FMT_RETURN(VDPAU_H264);
     TEST_PIX_FMT_RETURN(VDPAU_MPEG1);
     TEST_PIX_FMT_RETURN(VDPAU_MPEG2);
     TEST_PIX_FMT_RETURN(VDPAU_WMV3);
     TEST_PIX_FMT_RETURN(VDPAU_VC1);
+#endif
     TEST_PIX_FMT_RETURN(RGB48BE );
     TEST_PIX_FMT_RETURN(RGB48LE );
     TEST_PIX_FMT_RETURN(RGB565BE);
@@ -125,7 +131,9 @@ std::string FfmpegFmtToString(const AVPixelFormat fmt)
     TEST_PIX_FMT_RETURN(YUV422P16BE);
     TEST_PIX_FMT_RETURN(YUV444P16LE);
     TEST_PIX_FMT_RETURN(YUV444P16BE);
+#ifdef FF_API_VDPAU
     TEST_PIX_FMT_RETURN(VDPAU_MPEG4);
+#endif
     TEST_PIX_FMT_RETURN(DXVA2_VLD);
     TEST_PIX_FMT_RETURN(RGB444BE);
     TEST_PIX_FMT_RETURN(RGB444LE);
@@ -578,6 +586,7 @@ void FfmpegVideoOutputStream::WriteFrame(AVFrame* frame)
     int ret;
     int got_packet = 1;
 
+#if FF_API_LAVF_FMT_RAWPICTURE
     // Setup AVPacket
     if (recorder.oc->oformat->flags & AVFMT_RAWPICTURE) {
         /* Raw video case - directly store the picture in the packet */
@@ -587,6 +596,9 @@ void FfmpegVideoOutputStream::WriteFrame(AVFrame* frame)
         pkt.pts           = frame->pts;
         ret = 0;
     } else {
+#else
+    {
+#endif
         /* encode the image */
 #if (LIBAVFORMAT_VERSION_MAJOR >= 54)
         ret = avcodec_encode_video2(stream->codec, &pkt, frame, &got_packet);