summaryrefslogtreecommitdiff
path: root/multimedia/transcode/patches/patch-import_import_ffmpeg.c
blob: a09fbc32a4a8f1acc56477ef0e41a44ca346562c (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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
$NetBSD: patch-import_import_ffmpeg.c,v 1.3 2019/12/29 10:23:53 markd Exp $

Fixes building against FFmpeg version >= 4.0.0 (gentoo patch).

--- import/import_ffmpeg.c.orig	2011-11-19 16:50:27.000000000 +0000
+++ import/import_ffmpeg.c
@@ -59,51 +59,51 @@ struct ffmpeg_codec {
 
 // fourCC to ID mapping taken from MPlayer's codecs.conf
 static struct ffmpeg_codec ffmpeg_codecs[] = {
-  {CODEC_ID_MSMPEG4V1, TC_CODEC_ERROR, "mp41",
+  {AV_CODEC_ID_MSMPEG4V1, TC_CODEC_ERROR, "mp41",
     {"MP41", "DIV1", ""}},
-  {CODEC_ID_MSMPEG4V2, TC_CODEC_MP42, "mp42",
+  {AV_CODEC_ID_MSMPEG4V2, TC_CODEC_MP42, "mp42",
     {"MP42", "DIV2", ""}},
-  {CODEC_ID_MSMPEG4V3, TC_CODEC_DIVX3, "msmpeg4",
+  {AV_CODEC_ID_MSMPEG4V3, TC_CODEC_DIVX3, "msmpeg4",
     {"DIV3", "DIV5", "AP41", "MPG3", "MP43", ""}},
-  {CODEC_ID_MPEG4, TC_CODEC_DIVX4, "mpeg4",
+  {AV_CODEC_ID_MPEG4, TC_CODEC_DIVX4, "mpeg4",
     {"DIVX", "XVID", "MP4S", "M4S2", "MP4V", "UMP4", "DX50", ""}},
-  {CODEC_ID_MJPEG, TC_CODEC_MJPEG, "mjpeg",
+  {AV_CODEC_ID_MJPEG, TC_CODEC_MJPEG, "mjpeg",
     {"MJPG", "AVRN", "AVDJ", "JPEG", "MJPA", "JFIF", ""}},
-  {CODEC_ID_MPEG1VIDEO, TC_CODEC_MPG1, "mpeg1video",
+  {AV_CODEC_ID_MPEG1VIDEO, TC_CODEC_MPG1, "mpeg1video",
     {"MPG1", ""}},
-  {CODEC_ID_DVVIDEO, TC_CODEC_DV, "dvvideo",
+  {AV_CODEC_ID_DVVIDEO, TC_CODEC_DV, "dvvideo",
     {"DVSD", ""}},
-  {CODEC_ID_WMV1, TC_CODEC_WMV1, "wmv1",
+  {AV_CODEC_ID_WMV1, TC_CODEC_WMV1, "wmv1",
     {"WMV1", ""}},
-  {CODEC_ID_WMV2, TC_CODEC_WMV2, "wmv2",
+  {AV_CODEC_ID_WMV2, TC_CODEC_WMV2, "wmv2",
     {"WMV2", ""}},
-  {CODEC_ID_HUFFYUV, TC_CODEC_HUFFYUV, "hfyu",
+  {AV_CODEC_ID_HUFFYUV, TC_CODEC_HUFFYUV, "hfyu",
     {"HFYU", ""}},
-  {CODEC_ID_H263I, TC_CODEC_H263I, "h263i",
+  {AV_CODEC_ID_H263I, TC_CODEC_H263I, "h263i",
     {"I263", ""}},
-  {CODEC_ID_H263P, TC_CODEC_H263P, "h263p",
+  {AV_CODEC_ID_H263P, TC_CODEC_H263P, "h263p",
     {"H263", "U263", "VIV1", ""}},
-  {CODEC_ID_H264, TC_CODEC_H264, "h264",
+  {AV_CODEC_ID_H264, TC_CODEC_H264, "h264",
     {"H264", "h264", "X264", "x264", "avc1", ""}},
-  {CODEC_ID_RV10, TC_CODEC_RV10, "rv10",
+  {AV_CODEC_ID_RV10, TC_CODEC_RV10, "rv10",
     {"RV10", "RV13", ""}},
-  {CODEC_ID_SVQ1, TC_CODEC_SVQ1, "svq1",
+  {AV_CODEC_ID_SVQ1, TC_CODEC_SVQ1, "svq1",
     {"SVQ1", ""}},
-  {CODEC_ID_SVQ3, TC_CODEC_SVQ3, "svq3",
+  {AV_CODEC_ID_SVQ3, TC_CODEC_SVQ3, "svq3",
     {"SVQ3", ""}},
-  {CODEC_ID_MPEG2VIDEO, TC_CODEC_MPEG2, "mpeg2video",
+  {AV_CODEC_ID_MPEG2VIDEO, TC_CODEC_MPEG2, "mpeg2video",
     {"MPG2", ""}},
-  {CODEC_ID_MPEG2VIDEO, TC_CODEC_MPEG, "mpeg2video",
+  {AV_CODEC_ID_MPEG2VIDEO, TC_CODEC_MPEG, "mpeg2video",
     {"MPG2", ""}},
-  {CODEC_ID_ASV1, TC_CODEC_ASV1, "asv1",
+  {AV_CODEC_ID_ASV1, TC_CODEC_ASV1, "asv1",
     {"ASV1", ""}},
-  {CODEC_ID_ASV2, TC_CODEC_ASV2, "asv2",
+  {AV_CODEC_ID_ASV2, TC_CODEC_ASV2, "asv2",
     {"ASV2", ""}},
-  {CODEC_ID_FFV1, TC_CODEC_FFV1, "ffv1",
+  {AV_CODEC_ID_FFV1, TC_CODEC_FFV1, "ffv1",
     {"FFV1", ""}},
-  {CODEC_ID_RAWVIDEO, TC_CODEC_YUV420P, "raw",
+  {AV_CODEC_ID_RAWVIDEO, TC_CODEC_YUV420P, "raw",
     {"I420", "IYUV", ""}},
-  {CODEC_ID_RAWVIDEO, TC_CODEC_YUV422P, "raw",
+  {AV_CODEC_ID_RAWVIDEO, TC_CODEC_YUV422P, "raw",
     {"Y42B", ""}},
   {0, TC_CODEC_UNKNOWN, NULL, {""}}};
 
@@ -302,7 +302,7 @@ do_avi:
 
     // Set these to the expected values so that ffmpeg's decoder can
     // properly detect interlaced input.
-    lavc_dec_context = avcodec_alloc_context();
+    lavc_dec_context = avcodec_alloc_context3(lavc_dec_codec);
     if (lavc_dec_context == NULL) {
       tc_log_error(MOD_NAME, "Could not allocate enough memory.");
       return TC_IMPORT_ERROR;
@@ -310,11 +310,11 @@ do_avi:
     lavc_dec_context->width  = x_dim;
     lavc_dec_context->height = y_dim;
 
-    if (vob->decolor) lavc_dec_context->flags |= CODEC_FLAG_GRAY;
+    if (vob->decolor) lavc_dec_context->flags |= AV_CODEC_FLAG_GRAY;
 #if LIBAVCODEC_VERSION_INT < ((52<<16)+(0<<8)+0)
     lavc_dec_context->error_resilience  = 2;
 #else
-    lavc_dec_context->error_recognition = 2;
+    lavc_dec_context->err_recognition = 2;
 #endif
     lavc_dec_context->error_concealment = 3;
     lavc_dec_context->workaround_bugs = FF_BUG_AUTODETECT;
@@ -324,13 +324,13 @@ do_avi:
     // XXX: some codecs need extra data
     switch (codec->id)
     {
-      case CODEC_ID_MJPEG: extra_data_size  = 28; break;
-      case CODEC_ID_LJPEG: extra_data_size  = 28; break;
-      case CODEC_ID_HUFFYUV: extra_data_size = 1000; break;
-      case CODEC_ID_ASV1: extra_data_size = 8; break;
-      case CODEC_ID_ASV2: extra_data_size = 8; break;
-      case CODEC_ID_WMV1: extra_data_size = 4; break;
-      case CODEC_ID_WMV2: extra_data_size = 4; break;
+      case AV_CODEC_ID_MJPEG: extra_data_size  = 28; break;
+      case AV_CODEC_ID_LJPEG: extra_data_size  = 28; break;
+      case AV_CODEC_ID_HUFFYUV: extra_data_size = 1000; break;
+      case AV_CODEC_ID_ASV1: extra_data_size = 8; break;
+      case AV_CODEC_ID_ASV2: extra_data_size = 8; break;
+      case AV_CODEC_ID_WMV1: extra_data_size = 4; break;
+      case AV_CODEC_ID_WMV2: extra_data_size = 4; break;
       default: extra_data_size = 0; break;
     }
 
@@ -344,7 +344,7 @@ do_avi:
     }
 
     TC_LOCK_LIBAVCODEC;
-    ret = avcodec_open(lavc_dec_context, lavc_dec_codec);
+    ret = avcodec_open2(lavc_dec_context, lavc_dec_codec, NULL);
     TC_UNLOCK_LIBAVCODEC;
     if (ret < 0) {
       tc_log_warn(MOD_NAME, "Could not initialize the '%s' codec.",
@@ -360,7 +360,7 @@ do_avi:
         frame_size = x_dim*y_dim + 2*UV_PLANE_SIZE(IMG_YUV_DEFAULT,x_dim,y_dim);
 
 	// we adapt the color space
-        if(codec->id == CODEC_ID_MJPEG) {
+        if(codec->id == AV_CODEC_ID_MJPEG) {
 	  enable_levels_filter();
         }
         break;
@@ -434,7 +434,7 @@ do_dv:
       }
 
       // we adapt the color space
-      if(codec->id == CODEC_ID_MJPEG) {
+      if(codec->id == AV_CODEC_ID_MJPEG) {
         enable_levels_filter();
       }
 
@@ -504,13 +504,13 @@ MOD_decode {
       int bkey = 0;
 
       // check for keyframes
-      if (codec->id == CODEC_ID_MSMPEG4V3) {
+      if (codec->id == AV_CODEC_ID_MSMPEG4V3) {
 	if (divx3_is_key(buffer)) bkey = 1;
       }
-      else if (codec->id == CODEC_ID_MPEG4) {
+      else if (codec->id == AV_CODEC_ID_MPEG4) {
 	if (mpeg4_is_key(buffer, bytes_read)) bkey = 1;
       }
-      else if (codec->id == CODEC_ID_MJPEG) {
+      else if (codec->id == AV_CODEC_ID_MJPEG) {
 	bkey = 1;
       }
 
@@ -580,8 +580,8 @@ retry:
 
     // Convert avcodec image to our internal YUV or RGB format
     switch (lavc_dec_context->pix_fmt) {
-      case PIX_FMT_YUVJ420P:
-      case PIX_FMT_YUV420P:
+      case AV_PIX_FMT_YUVJ420P:
+      case AV_PIX_FMT_YUV420P:
         src_fmt = IMG_YUV420P;
         YUV_INIT_PLANES(src_planes, frame, src_fmt,
                         lavc_dec_context->width, lavc_dec_context->height);
@@ -612,7 +612,7 @@ retry:
 	}
         break;
 
-      case PIX_FMT_YUV411P:
+      case AV_PIX_FMT_YUV411P:
         src_fmt = IMG_YUV411P;
         YUV_INIT_PLANES(src_planes, frame, src_fmt,
                         lavc_dec_context->width, lavc_dec_context->height);
@@ -640,8 +640,8 @@ retry:
         }
         break;
 
-      case PIX_FMT_YUVJ422P:
-      case PIX_FMT_YUV422P:
+      case AV_PIX_FMT_YUVJ422P:
+      case AV_PIX_FMT_YUV422P:
         src_fmt = IMG_YUV422P;
         YUV_INIT_PLANES(src_planes, frame, src_fmt,
                         lavc_dec_context->width, lavc_dec_context->height);
@@ -669,8 +669,8 @@ retry:
         }
 	break;
 
-      case PIX_FMT_YUVJ444P:
-      case PIX_FMT_YUV444P:
+      case AV_PIX_FMT_YUVJ444P:
+      case AV_PIX_FMT_YUV444P:
         src_fmt = IMG_YUV444P;
         YUV_INIT_PLANES(src_planes, frame, src_fmt,
                         lavc_dec_context->width, lavc_dec_context->height);