diff options
author | V3n3RiX <venerix@koprulu.sector> | 2022-03-20 00:40:44 +0000 |
---|---|---|
committer | V3n3RiX <venerix@koprulu.sector> | 2022-03-20 00:40:44 +0000 |
commit | 4cbcc855382a06088e2f016f62cafdbcb7e40665 (patch) | |
tree | 356496503d52354aa6d9f2d36126302fed5f3a73 /games-emulation/mgba/files | |
parent | fcc5224904648a8e6eb528d7603154160a20022f (diff) |
gentoo resync : 20.03.2022
Diffstat (limited to 'games-emulation/mgba/files')
-rw-r--r-- | games-emulation/mgba/files/mgba-0.9.3-ffmpeg5.patch | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/games-emulation/mgba/files/mgba-0.9.3-ffmpeg5.patch b/games-emulation/mgba/files/mgba-0.9.3-ffmpeg5.patch new file mode 100644 index 000000000000..cf4f6f56a2d4 --- /dev/null +++ b/games-emulation/mgba/files/mgba-0.9.3-ffmpeg5.patch @@ -0,0 +1,117 @@ +From cdc753516798882a805db1d2042dbce8313382bf Mon Sep 17 00:00:00 2001 +From: Ryan Tandy <ryan@nardis.ca> +Date: Thu, 3 Feb 2022 19:02:52 -0800 +Subject: [PATCH] FFmpeg: Support FFmpeg 5.0 + +--- + src/feature/ffmpeg/ffmpeg-decoder.c | 3 ++- + src/feature/ffmpeg/ffmpeg-encoder.c | 25 ++++++++++++++----------- + 2 files changed, 16 insertions(+), 12 deletions(-) + +diff --git a/src/feature/ffmpeg/ffmpeg-decoder.c b/src/feature/ffmpeg/ffmpeg-decoder.c +index c3bb6d1c5c..daa47fbf2c 100644 +--- a/src/feature/ffmpeg/ffmpeg-decoder.c ++++ b/src/feature/ffmpeg/ffmpeg-decoder.c +@@ -5,6 +5,7 @@ + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + #include "ffmpeg-decoder.h" + ++#include <libavcodec/avcodec.h> + #include <libswscale/swscale.h> + + void FFmpegDecoderInit(struct FFmpegDecoder* decoder) { +@@ -38,7 +39,7 @@ bool FFmpegDecoderOpen(struct FFmpegDecoder* decoder, const char* infile) { + #else + enum AVMediaType type = decoder->context->streams[i]->codec->codec_type; + #endif +- struct AVCodec* codec; ++ const struct AVCodec* codec; + struct AVCodecContext* context = NULL; + if (type == AVMEDIA_TYPE_VIDEO && decoder->videoStream < 0) { + decoder->video = avcodec_alloc_context3(NULL); +diff --git a/src/feature/ffmpeg/ffmpeg-encoder.c b/src/feature/ffmpeg/ffmpeg-encoder.c +index ad76ca57b2..be6bd3af5e 100644 +--- a/src/feature/ffmpeg/ffmpeg-encoder.c ++++ b/src/feature/ffmpeg/ffmpeg-encoder.c +@@ -12,6 +12,9 @@ + + #include <libavcodec/version.h> + #include <libavcodec/avcodec.h> ++#if LIBAVCODEC_VERSION_MAJOR >= 58 ++#include <libavcodec/bsf.h> ++#endif + + #include <libavfilter/buffersink.h> + #include <libavfilter/buffersrc.h> +@@ -121,7 +124,7 @@ bool FFmpegEncoderSetAudio(struct FFmpegEncoder* encoder, const char* acodec, un + return true; + } + +- AVCodec* codec = avcodec_find_encoder_by_name(acodec); ++ const AVCodec* codec = avcodec_find_encoder_by_name(acodec); + if (!codec) { + return false; + } +@@ -193,7 +196,7 @@ bool FFmpegEncoderSetVideo(struct FFmpegEncoder* encoder, const char* vcodec, in + return true; + } + +- AVCodec* codec = avcodec_find_encoder_by_name(vcodec); ++ const AVCodec* codec = avcodec_find_encoder_by_name(vcodec); + if (!codec) { + return false; + } +@@ -213,7 +216,7 @@ bool FFmpegEncoderSetVideo(struct FFmpegEncoder* encoder, const char* vcodec, in + if (encoder->pixFormat == AV_PIX_FMT_NONE) { + return false; + } +- if (vbr < 0 && !av_opt_find(&codec->priv_class, "crf", NULL, 0, 0)) { ++ if (vbr < 0 && !av_opt_find((void*) &codec->priv_class, "crf", NULL, 0, 0)) { + return false; + } + encoder->videoCodec = vcodec; +@@ -223,7 +226,7 @@ bool FFmpegEncoderSetVideo(struct FFmpegEncoder* encoder, const char* vcodec, in + } + + bool FFmpegEncoderSetContainer(struct FFmpegEncoder* encoder, const char* container) { +- AVOutputFormat* oformat = av_guess_format(container, 0, 0); ++ const AVOutputFormat* oformat = av_guess_format(container, 0, 0); + if (!oformat) { + return false; + } +@@ -241,9 +244,9 @@ void FFmpegEncoderSetLooping(struct FFmpegEncoder* encoder, bool loop) { + } + + bool FFmpegEncoderVerifyContainer(struct FFmpegEncoder* encoder) { +- AVOutputFormat* oformat = av_guess_format(encoder->containerFormat, 0, 0); +- AVCodec* acodec = avcodec_find_encoder_by_name(encoder->audioCodec); +- AVCodec* vcodec = avcodec_find_encoder_by_name(encoder->videoCodec); ++ const AVOutputFormat* oformat = av_guess_format(encoder->containerFormat, 0, 0); ++ const AVCodec* acodec = avcodec_find_encoder_by_name(encoder->audioCodec); ++ const AVCodec* vcodec = avcodec_find_encoder_by_name(encoder->videoCodec); + if ((encoder->audioCodec && !acodec) || (encoder->videoCodec && !vcodec) || !oformat || (!acodec && !vcodec)) { + return false; + } +@@ -257,8 +260,8 @@ bool FFmpegEncoderVerifyContainer(struct FFmpegEncoder* encoder) { + } + + bool FFmpegEncoderOpen(struct FFmpegEncoder* encoder, const char* outfile) { +- AVCodec* acodec = avcodec_find_encoder_by_name(encoder->audioCodec); +- AVCodec* vcodec = avcodec_find_encoder_by_name(encoder->videoCodec); ++ const AVCodec* acodec = avcodec_find_encoder_by_name(encoder->audioCodec); ++ const AVCodec* vcodec = avcodec_find_encoder_by_name(encoder->videoCodec); + if ((encoder->audioCodec && !acodec) || (encoder->videoCodec && !vcodec) || !FFmpegEncoderVerifyContainer(encoder)) { + return false; + } +@@ -272,9 +275,9 @@ bool FFmpegEncoderOpen(struct FFmpegEncoder* encoder, const char* outfile) { + encoder->currentVideoFrame = 0; + encoder->skipResidue = 0; + +- AVOutputFormat* oformat = av_guess_format(encoder->containerFormat, 0, 0); ++ const AVOutputFormat* oformat = av_guess_format(encoder->containerFormat, 0, 0); + #ifndef USE_LIBAV +- avformat_alloc_output_context2(&encoder->context, oformat, 0, outfile); ++ avformat_alloc_output_context2(&encoder->context, (AVOutputFormat*) oformat, 0, outfile); + #else + encoder->context = avformat_alloc_context(); + strncpy(encoder->context->filename, outfile, sizeof(encoder->context->filename) - 1); |