| @@ -1,30 +1,126 @@ | | | @@ -1,30 +1,126 @@ |
1 | $NetBSD: patch-import_decode_lavc.c,v 1.2 2015/11/21 17:14:26 adam Exp $ | | 1 | $NetBSD: patch-import_decode_lavc.c,v 1.3 2020/01/01 22:17:29 markd Exp $ |
2 | | | 2 | |
3 | Fixes building against FFmpeg version >= 2.0.0 (gentoo patch). | | 3 | Fixes building against FFmpeg version >= 3.0.0 (gentoo patch). |
4 | | | 4 | |
5 | --- import/decode_lavc.c.orig 2011-11-19 16:50:27.000000000 +0000 | | 5 | --- import/decode_lavc.c.orig 2011-11-19 16:50:27.000000000 +0000 |
6 | +++ import/decode_lavc.c | | 6 | +++ import/decode_lavc.c |
| | | 7 | @@ -58,37 +58,37 @@ struct ffmpeg_codec { |
| | | 8 | |
| | | 9 | // fourCC to ID mapping taken from MPlayer's codecs.conf |
| | | 10 | static struct ffmpeg_codec ffmpeg_codecs[] = { |
| | | 11 | - {CODEC_ID_MSMPEG4V1, TC_CODEC_ERROR, "mp41", |
| | | 12 | + {AV_CODEC_ID_MSMPEG4V1, TC_CODEC_ERROR, "mp41", |
| | | 13 | {"MP41", "DIV1", ""}}, |
| | | 14 | - {CODEC_ID_MSMPEG4V2, TC_CODEC_MP42, "mp42", |
| | | 15 | + {AV_CODEC_ID_MSMPEG4V2, TC_CODEC_MP42, "mp42", |
| | | 16 | {"MP42", "DIV2", ""}}, |
| | | 17 | - {CODEC_ID_MSMPEG4V3, TC_CODEC_DIVX3, "msmpeg4", |
| | | 18 | + {AV_CODEC_ID_MSMPEG4V3, TC_CODEC_DIVX3, "msmpeg4", |
| | | 19 | {"DIV3", "DIV5", "AP41", "MPG3", "MP43", ""}}, |
| | | 20 | - {CODEC_ID_MPEG4, TC_CODEC_DIVX4, "mpeg4", |
| | | 21 | + {AV_CODEC_ID_MPEG4, TC_CODEC_DIVX4, "mpeg4", |
| | | 22 | {"DIVX", "XVID", "MP4S", "M4S2", "MP4V", "UMP4", "DX50", ""}}, |
| | | 23 | - {CODEC_ID_MJPEG, TC_CODEC_MJPEG, "mjpeg", |
| | | 24 | + {AV_CODEC_ID_MJPEG, TC_CODEC_MJPEG, "mjpeg", |
| | | 25 | {"MJPG", "AVRN", "AVDJ", "JPEG", "MJPA", "JFIF", ""}}, |
| | | 26 | - {CODEC_ID_MPEG1VIDEO, TC_CODEC_MPEG1VIDEO, "mpeg1video", |
| | | 27 | + {AV_CODEC_ID_MPEG1VIDEO, TC_CODEC_MPEG1VIDEO, "mpeg1video", |
| | | 28 | {"MPG1", ""}}, |
| | | 29 | - {CODEC_ID_DVVIDEO, TC_CODEC_DV, "dvvideo", |
| | | 30 | + {AV_CODEC_ID_DVVIDEO, TC_CODEC_DV, "dvvideo", |
| | | 31 | {"DVSD", ""}}, |
| | | 32 | - {CODEC_ID_WMV1, TC_CODEC_WMV1, "wmv1", |
| | | 33 | + {AV_CODEC_ID_WMV1, TC_CODEC_WMV1, "wmv1", |
| | | 34 | {"WMV1", ""}}, |
| | | 35 | - {CODEC_ID_WMV2, TC_CODEC_WMV2, "wmv2", |
| | | 36 | + {AV_CODEC_ID_WMV2, TC_CODEC_WMV2, "wmv2", |
| | | 37 | {"WMV2", ""}}, |
| | | 38 | - {CODEC_ID_HUFFYUV, TC_CODEC_HUFFYUV, "hfyu", |
| | | 39 | + {AV_CODEC_ID_HUFFYUV, TC_CODEC_HUFFYUV, "hfyu", |
| | | 40 | {"HFYU", ""}}, |
| | | 41 | - {CODEC_ID_H263I, TC_CODEC_H263I, "h263i", |
| | | 42 | + {AV_CODEC_ID_H263I, TC_CODEC_H263I, "h263i", |
| | | 43 | {"I263", ""}}, |
| | | 44 | - {CODEC_ID_H263P, TC_CODEC_H263P, "h263p", |
| | | 45 | + {AV_CODEC_ID_H263P, TC_CODEC_H263P, "h263p", |
| | | 46 | {"H263", "U263", "VIV1", ""}}, |
| | | 47 | - {CODEC_ID_RV10, TC_CODEC_RV10, "rv10", |
| | | 48 | + {AV_CODEC_ID_RV10, TC_CODEC_RV10, "rv10", |
| | | 49 | {"RV10", "RV13", ""}}, |
| | | 50 | - {CODEC_ID_SVQ1, TC_CODEC_SVQ1, "svq1", |
| | | 51 | + {AV_CODEC_ID_SVQ1, TC_CODEC_SVQ1, "svq1", |
| | | 52 | {"SVQ1", ""}}, |
| | | 53 | - {CODEC_ID_SVQ3, TC_CODEC_SVQ3, "svq3", |
| | | 54 | + {AV_CODEC_ID_SVQ3, TC_CODEC_SVQ3, "svq3", |
| | | 55 | {"SVQ3", ""}}, |
| | | 56 | - {CODEC_ID_MPEG2VIDEO, TC_CODEC_MPEG2, "mpeg2video", |
| | | 57 | + {AV_CODEC_ID_MPEG2VIDEO, TC_CODEC_MPEG2, "mpeg2video", |
| | | 58 | {"MPG2", ""}}, |
| | | 59 | {0, TC_CODEC_UNKNOWN, NULL, {""}}}; |
| | | 60 | |
7 | @@ -170,7 +170,7 @@ void decode_lavc(decode_t *decode) | | 61 | @@ -170,7 +170,7 @@ void decode_lavc(decode_t *decode) |
8 | | | 62 | |
9 | // Set these to the expected values so that ffmpeg's decoder can | | 63 | // Set these to the expected values so that ffmpeg's decoder can |
10 | // properly detect interlaced input. | | 64 | // properly detect interlaced input. |
11 | - lavc_dec_context = avcodec_alloc_context(); | | 65 | - lavc_dec_context = avcodec_alloc_context(); |
12 | + lavc_dec_context = avcodec_alloc_context3(NULL); | | 66 | + lavc_dec_context = avcodec_alloc_context3(NULL); |
13 | if (lavc_dec_context == NULL) { | | 67 | if (lavc_dec_context == NULL) { |
14 | tc_log_error(__FILE__, "Could not allocate enough memory."); | | 68 | tc_log_error(__FILE__, "Could not allocate enough memory."); |
15 | goto decoder_error; | | 69 | goto decoder_error; |
16 | @@ -181,12 +181,12 @@ void decode_lavc(decode_t *decode) | | 70 | @@ -181,12 +181,12 @@ void decode_lavc(decode_t *decode) |
17 | #if LIBAVCODEC_VERSION_INT < ((52<<16)+(0<<8)+0) | | 71 | #if LIBAVCODEC_VERSION_INT < ((52<<16)+(0<<8)+0) |
18 | lavc_dec_context->error_resilience = 2; | | 72 | lavc_dec_context->error_resilience = 2; |
19 | #else | | 73 | #else |
20 | - lavc_dec_context->error_recognition = 2; | | 74 | - lavc_dec_context->error_recognition = 2; |
21 | + lavc_dec_context->err_recognition = 2; | | 75 | + lavc_dec_context->err_recognition = 2; |
22 | #endif | | 76 | #endif |
23 | lavc_dec_context->error_concealment = 3; | | 77 | lavc_dec_context->error_concealment = 3; |
24 | lavc_dec_context->workaround_bugs = FF_BUG_AUTODETECT; | | 78 | lavc_dec_context->workaround_bugs = FF_BUG_AUTODETECT; |
25 | | | 79 | |
26 | - if (avcodec_open(lavc_dec_context, lavc_dec_codec) < 0) { | | 80 | - if (avcodec_open(lavc_dec_context, lavc_dec_codec) < 0) { |
27 | + if (avcodec_open2(lavc_dec_context, lavc_dec_codec, NULL) < 0) { | | 81 | + if (avcodec_open2(lavc_dec_context, lavc_dec_codec, NULL) < 0) { |
28 | tc_log_error(__FILE__, "Could not initialize the '%s' codec.", | | 82 | tc_log_error(__FILE__, "Could not initialize the '%s' codec.", |
29 | codec->name); | | 83 | codec->name); |
30 | goto decoder_error; | | 84 | goto decoder_error; |
| | | 85 | @@ -290,8 +290,8 @@ void decode_lavc(decode_t *decode) |
| | | 86 | |
| | | 87 | // Convert avcodec image to the requested YUV or RGB format |
| | | 88 | switch (lavc_dec_context->pix_fmt) { |
| | | 89 | - case PIX_FMT_YUVJ420P: |
| | | 90 | - case PIX_FMT_YUV420P: |
| | | 91 | + case AV_PIX_FMT_YUVJ420P: |
| | | 92 | + case AV_PIX_FMT_YUV420P: |
| | | 93 | // Remove "dead space" at right edge of planes, if any |
| | | 94 | if (picture.linesize[0] != lavc_dec_context->width) { |
| | | 95 | int y; |
| | | 96 | @@ -315,7 +315,7 @@ void decode_lavc(decode_t *decode) |
| | | 97 | pix_fmt==TC_CODEC_YUV420P ? IMG_YUV420P : IMG_RGB_DEFAULT, |
| | | 98 | lavc_dec_context->width, lavc_dec_context->height); |
| | | 99 | break; |
| | | 100 | - case PIX_FMT_YUV411P: |
| | | 101 | + case AV_PIX_FMT_YUV411P: |
| | | 102 | if (picture.linesize[0] != lavc_dec_context->width) { |
| | | 103 | int y; |
| | | 104 | for (y = 0; y < lavc_dec_context->height; y++) { |
| | | 105 | @@ -334,8 +334,8 @@ void decode_lavc(decode_t *decode) |
| | | 106 | pix_fmt==TC_CODEC_YUV420P ? IMG_YUV420P : IMG_RGB_DEFAULT, |
| | | 107 | lavc_dec_context->width, lavc_dec_context->height); |
| | | 108 | break; |
| | | 109 | - case PIX_FMT_YUVJ422P: |
| | | 110 | - case PIX_FMT_YUV422P: |
| | | 111 | + case AV_PIX_FMT_YUVJ422P: |
| | | 112 | + case AV_PIX_FMT_YUV422P: |
| | | 113 | if (picture.linesize[0] != lavc_dec_context->width) { |
| | | 114 | int y; |
| | | 115 | for (y = 0; y < lavc_dec_context->height; y++) { |
| | | 116 | @@ -354,8 +354,8 @@ void decode_lavc(decode_t *decode) |
| | | 117 | pix_fmt==TC_CODEC_YUV420P ? IMG_YUV420P : IMG_RGB_DEFAULT, |
| | | 118 | lavc_dec_context->width, lavc_dec_context->height); |
| | | 119 | break; |
| | | 120 | - case PIX_FMT_YUVJ444P: |
| | | 121 | - case PIX_FMT_YUV444P: |
| | | 122 | + case AV_PIX_FMT_YUVJ444P: |
| | | 123 | + case AV_PIX_FMT_YUV444P: |
| | | 124 | if (picture.linesize[0] != lavc_dec_context->width) { |
| | | 125 | int y; |
| | | 126 | for (y = 0; y < lavc_dec_context->height; y++) { |