summaryrefslogtreecommitdiff
blob: c790d6e97741145986c3d134c70d03c79a458dc3 (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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
https://bugs.gentoo.org/show_bug.cgi?id=587860
https://github.com/schaal/bino/blob/master/debian/patches/ffmpeg_2.9.patch

Description: Replace deprecated FFmpeg API
Author: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
Last-Update: <2015-11-02>

--- bino-1.6.0.orig/src/media_object.cpp
+++ bino-1.6.0/src/media_object.cpp
@@ -427,20 +427,20 @@ void media_object::set_video_frame_templ
     video_frame_template.value_range = video_frame::u8_full;
     video_frame_template.chroma_location = video_frame::center;
     if (!_always_convert_to_bgra32
-            && (video_codec_ctx->pix_fmt == PIX_FMT_YUV444P
-                || video_codec_ctx->pix_fmt == PIX_FMT_YUV444P10
-                || video_codec_ctx->pix_fmt == PIX_FMT_YUV422P
-                || video_codec_ctx->pix_fmt == PIX_FMT_YUV422P10
-                || video_codec_ctx->pix_fmt == PIX_FMT_YUV420P
-                || video_codec_ctx->pix_fmt == PIX_FMT_YUV420P10))
+            && (video_codec_ctx->pix_fmt == AV_PIX_FMT_YUV444P
+                || video_codec_ctx->pix_fmt == AV_PIX_FMT_YUV444P10
+                || video_codec_ctx->pix_fmt == AV_PIX_FMT_YUV422P
+                || video_codec_ctx->pix_fmt == AV_PIX_FMT_YUV422P10
+                || video_codec_ctx->pix_fmt == AV_PIX_FMT_YUV420P
+                || video_codec_ctx->pix_fmt == AV_PIX_FMT_YUV420P10))
     {
-        if (video_codec_ctx->pix_fmt == PIX_FMT_YUV444P
-                || video_codec_ctx->pix_fmt == PIX_FMT_YUV444P10)
+        if (video_codec_ctx->pix_fmt == AV_PIX_FMT_YUV444P
+                || video_codec_ctx->pix_fmt == AV_PIX_FMT_YUV444P10)
         {
             video_frame_template.layout = video_frame::yuv444p;
         }
-        else if (video_codec_ctx->pix_fmt == PIX_FMT_YUV422P
-                || video_codec_ctx->pix_fmt == PIX_FMT_YUV422P10)
+        else if (video_codec_ctx->pix_fmt == AV_PIX_FMT_YUV422P
+                || video_codec_ctx->pix_fmt == AV_PIX_FMT_YUV422P10)
         {
             video_frame_template.layout = video_frame::yuv422p;
         }
@@ -453,9 +453,9 @@ void media_object::set_video_frame_templ
         {
             video_frame_template.color_space = video_frame::yuv709;
         }
-        if (video_codec_ctx->pix_fmt == PIX_FMT_YUV444P10
-                || video_codec_ctx->pix_fmt == PIX_FMT_YUV422P10
-                || video_codec_ctx->pix_fmt == PIX_FMT_YUV420P10)
+        if (video_codec_ctx->pix_fmt == AV_PIX_FMT_YUV444P10
+                || video_codec_ctx->pix_fmt == AV_PIX_FMT_YUV422P10
+                || video_codec_ctx->pix_fmt == AV_PIX_FMT_YUV420P10)
         {
             video_frame_template.value_range = video_frame::u10_mpeg;
             if (video_codec_ctx->color_range == AVCOL_RANGE_JPEG)
@@ -482,15 +482,15 @@ void media_object::set_video_frame_templ
         }
     }
     else if (!_always_convert_to_bgra32
-            && (video_codec_ctx->pix_fmt == PIX_FMT_YUVJ444P
-                || video_codec_ctx->pix_fmt == PIX_FMT_YUVJ422P
-                || video_codec_ctx->pix_fmt == PIX_FMT_YUVJ420P))
+            && (video_codec_ctx->pix_fmt == AV_PIX_FMT_YUVJ444P
+                || video_codec_ctx->pix_fmt == AV_PIX_FMT_YUVJ422P
+                || video_codec_ctx->pix_fmt == AV_PIX_FMT_YUVJ420P))
     {
-        if (video_codec_ctx->pix_fmt == PIX_FMT_YUVJ444P)
+        if (video_codec_ctx->pix_fmt == AV_PIX_FMT_YUVJ444P)
         {
             video_frame_template.layout = video_frame::yuv444p;
         }
-        else if (video_codec_ctx->pix_fmt == PIX_FMT_YUVJ422P)
+        else if (video_codec_ctx->pix_fmt == AV_PIX_FMT_YUVJ422P)
         {
             video_frame_template.layout = video_frame::yuv422p;
         }
@@ -898,15 +898,6 @@ void media_object::open(const std::strin
             // Activate multithreaded decoding. This must be done before opening the codec; see
             // http://lists.gnu.org/archive/html/bino-list/2011-08/msg00019.html
             codec_ctx->thread_count = video_decoding_threads();
-            // Set CODEC_FLAG_EMU_EDGE in the same situations in which ffplay sets it.
-            // I don't know what exactly this does, but it is necessary to fix the problem
-            // described in this thread: http://lists.nongnu.org/archive/html/bino-list/2012-02/msg00039.html
-            int lowres = 0;
-#ifdef FF_API_LOWRES
-            lowres = codec_ctx->lowres;
-#endif
-            if (lowres || (codec && (codec->capabilities & CODEC_CAP_DR1)))
-                codec_ctx->flags |= CODEC_FLAG_EMU_EDGE;
         }
         // Find and open the codec. AV_CODEC_ID_TEXT is a special case: it has no decoder since it is unencoded raw data.
         if (codec_ctx->codec_id != AV_CODEC_ID_TEXT && (!codec || (e = avcodec_open2(codec_ctx, codec, NULL)) < 0))
@@ -944,8 +935,8 @@ void media_object::open(const std::strin
             _ffmpeg->video_frames.push_back(av_frame_alloc());
             _ffmpeg->video_buffered_frames.push_back(av_frame_alloc());
 #endif
-            enum PixelFormat frame_fmt = (_ffmpeg->video_frame_templates[j].layout == video_frame::bgra32
-                    ? PIX_FMT_BGRA : _ffmpeg->video_codec_ctxs[j]->pix_fmt);
+            enum AVPixelFormat frame_fmt = (_ffmpeg->video_frame_templates[j].layout == video_frame::bgra32
+                    ? AV_PIX_FMT_BGRA : _ffmpeg->video_codec_ctxs[j]->pix_fmt);
             int frame_bufsize = (avpicture_get_size(frame_fmt,
                         _ffmpeg->video_codec_ctxs[j]->width, _ffmpeg->video_codec_ctxs[j]->height));
             _ffmpeg->video_buffers.push_back(static_cast<uint8_t *>(av_malloc(frame_bufsize)));
@@ -958,7 +949,7 @@ void media_object::open(const std::strin
             if (_ffmpeg->video_frame_templates[j].layout == video_frame::bgra32)
             {
                 // Initialize things needed for software pixel format conversion
-                int sws_bufsize = avpicture_get_size(PIX_FMT_BGRA,
+                int sws_bufsize = avpicture_get_size(AV_PIX_FMT_BGRA,
                         _ffmpeg->video_codec_ctxs[j]->width, _ffmpeg->video_codec_ctxs[j]->height);
 #if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(55, 28, 1)
                 _ffmpeg->video_sws_frames.push_back(avcodec_alloc_frame());
@@ -971,11 +962,11 @@ void media_object::open(const std::strin
                     throw exc(HERE + ": " + strerror(ENOMEM));
                 }
                 avpicture_fill(reinterpret_cast<AVPicture *>(_ffmpeg->video_sws_frames[j]), _ffmpeg->video_sws_buffers[j],
-                        PIX_FMT_BGRA, _ffmpeg->video_codec_ctxs[j]->width, _ffmpeg->video_codec_ctxs[j]->height);
+                        AV_PIX_FMT_BGRA, _ffmpeg->video_codec_ctxs[j]->width, _ffmpeg->video_codec_ctxs[j]->height);
                 // Call sws_getCachedContext(NULL, ...) instead of sws_getContext(...) just to avoid a deprecation warning.
                 _ffmpeg->video_sws_ctxs.push_back(sws_getCachedContext(NULL,
                             _ffmpeg->video_codec_ctxs[j]->width, _ffmpeg->video_codec_ctxs[j]->height, _ffmpeg->video_codec_ctxs[j]->pix_fmt,
-                            _ffmpeg->video_codec_ctxs[j]->width, _ffmpeg->video_codec_ctxs[j]->height, PIX_FMT_BGRA,
+                            _ffmpeg->video_codec_ctxs[j]->width, _ffmpeg->video_codec_ctxs[j]->height, AV_PIX_FMT_BGRA,
                             SWS_POINT, NULL, NULL, NULL));
                 if (!_ffmpeg->video_sws_ctxs[j])
                 {
@@ -1529,7 +1520,7 @@ read_frame:
                 // We need to buffer the data because FFmpeg will clubber it when decoding the next frame.
                 av_picture_copy(reinterpret_cast<AVPicture *>(_ffmpeg->video_buffered_frames[_video_stream]),
                         reinterpret_cast<AVPicture *>(_ffmpeg->video_frames[_video_stream]),
-                        static_cast<enum PixelFormat>(_ffmpeg->video_codec_ctxs[_video_stream]->pix_fmt),
+                        static_cast<enum AVPixelFormat>(_ffmpeg->video_codec_ctxs[_video_stream]->pix_fmt),
                         _ffmpeg->video_codec_ctxs[_video_stream]->width,
                         _ffmpeg->video_codec_ctxs[_video_stream]->height);
                 src_frame = _ffmpeg->video_buffered_frames[_video_stream];