From 03f0ec9f641ebfdd1c643f4f908ae10fa587e54b Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Thu, 17 Feb 2022 14:53:12 -0800 Subject: [PATCH] ffmpeg: updated for 5.0 --- app/codec/ffmpeg/ffmpegdecoder.cpp | 4 ++-- app/codec/ffmpeg/ffmpegencoder.cpp | 10 +++++----- app/codec/ffmpeg/ffmpegencoder.h | 7 ++++--- app/common/ffmpegutils.h | 1 + app/render/audioparams.h | 4 ++++ 5 files changed, 16 insertions(+), 10 deletions(-) diff --git a/app/codec/ffmpeg/ffmpegdecoder.cpp b/app/codec/ffmpeg/ffmpegdecoder.cpp index fba94088d..9b2a0da1b 100644 --- a/app/codec/ffmpeg/ffmpegdecoder.cpp +++ b/app/codec/ffmpeg/ffmpegdecoder.cpp @@ -268,7 +268,7 @@ FootageDescription FFmpegDecoder::Probe(const QString &filename, const QAtomicIn AVStream* avstream = fmt_ctx->streams[i]; // Find decoder for this stream, if it exists we can proceed - AVCodec* decoder = avcodec_find_decoder(avstream->codecpar->codec_id); + const AVCodec* decoder = avcodec_find_decoder(avstream->codecpar->codec_id); if (decoder && (avstream->codecpar->codec_type == AVMEDIA_TYPE_VIDEO @@ -1010,7 +1010,7 @@ bool FFmpegDecoder::Instance::Open(const char *filename, int stream_index) avstream_ = fmt_ctx_->streams[stream_index]; // Find decoder - AVCodec* codec = avcodec_find_decoder(avstream_->codecpar->codec_id); + const AVCodec* codec = avcodec_find_decoder(avstream_->codecpar->codec_id); // Handle failure to find decoder if (codec == nullptr) { diff --git a/app/codec/ffmpeg/ffmpegencoder.cpp b/app/codec/ffmpeg/ffmpegencoder.cpp index 6be4e6d73..c1ea0927a 100644 --- a/app/codec/ffmpeg/ffmpegencoder.cpp +++ b/app/codec/ffmpeg/ffmpegencoder.cpp @@ -50,7 +50,7 @@ QStringList FFmpegEncoder::GetPixelFormatsForCodec(ExportCodec::Codec c) const { QStringList pix_fmts; - AVCodec* codec_info = GetEncoder(c); + const AVCodec* codec_info = GetEncoder(c); if (codec_info) { for (int i=0; codec_info->pix_fmts[i]!=-1; i++) { @@ -570,7 +570,7 @@ bool FFmpegEncoder::InitializeStream(AVMediaType type, AVStream** stream_ptr, AV } // Find encoder - AVCodec* encoder = GetEncoder(codec); + const AVCodec* encoder = GetEncoder(codec); if (!encoder) { SetError(tr("Failed to find codec for 0x%1").arg(codec, 16)); return false; @@ -669,7 +669,7 @@ bool FFmpegEncoder::InitializeStream(AVMediaType type, AVStream** stream_ptr, AV return true; } -bool FFmpegEncoder::InitializeCodecContext(AVStream **stream, AVCodecContext **codec_ctx, AVCodec* codec) +bool FFmpegEncoder::InitializeCodecContext(AVStream **stream, AVCodecContext **codec_ctx, const AVCodec* codec) { *stream = avformat_new_stream(fmt_ctx_, nullptr); if (!(*stream)) { @@ -687,7 +687,7 @@ bool FFmpegEncoder::InitializeCodecContext(AVStream **stream, AVCodecContext **c return true; } -bool FFmpegEncoder::SetupCodecContext(AVStream* stream, AVCodecContext* codec_ctx, AVCodec* codec) +bool FFmpegEncoder::SetupCodecContext(AVStream* stream, AVCodecContext* codec_ctx, const AVCodec* codec) { int error_code; @@ -833,7 +833,7 @@ bool FFmpegEncoder::InitializeResampleContext(SampleBufferPtr audio) return true; } -AVCodec *FFmpegEncoder::GetEncoder(ExportCodec::Codec c) +const AVCodec *FFmpegEncoder::GetEncoder(ExportCodec::Codec c) { switch (c) { case ExportCodec::kCodecH264: diff --git a/app/codec/ffmpeg/ffmpegencoder.h b/app/codec/ffmpeg/ffmpegencoder.h index 1d643f4d3..d75d3f4ea 100644 --- a/app/codec/ffmpeg/ffmpegencoder.h +++ b/app/codec/ffmpeg/ffmpegencoder.h @@ -22,6 +22,7 @@ #define FFMPEGENCODER_H extern "C" { +#include #include #include #include @@ -69,15 +70,15 @@ private: bool WriteAVFrame(AVFrame* frame, AVCodecContext *codec_ctx, AVStream *stream); bool InitializeStream(enum AVMediaType type, AVStream** stream, AVCodecContext** codec_ctx, const ExportCodec::Codec &codec); - bool InitializeCodecContext(AVStream** stream, AVCodecContext** codec_ctx, AVCodec* codec); - bool SetupCodecContext(AVStream *stream, AVCodecContext *codec_ctx, AVCodec *codec); + bool InitializeCodecContext(AVStream** stream, AVCodecContext** codec_ctx, const AVCodec* codec); + bool SetupCodecContext(AVStream *stream, AVCodecContext *codec_ctx, const AVCodec *codec); void FlushEncoders(); void FlushCodecCtx(AVCodecContext* codec_ctx, AVStream *stream); bool InitializeResampleContext(SampleBufferPtr audio); - static AVCodec *GetEncoder(ExportCodec::Codec c); + static const AVCodec *GetEncoder(ExportCodec::Codec c); AVFormatContext* fmt_ctx_; diff --git a/app/common/ffmpegutils.h b/app/common/ffmpegutils.h index 3e5ff105d..2262dc299 100644 --- a/app/common/ffmpegutils.h +++ b/app/common/ffmpegutils.h @@ -22,6 +22,7 @@ #define FFMPEGABSTRACTION_H extern "C" { +#include #include } diff --git a/app/render/audioparams.h b/app/render/audioparams.h index bb9e86b3b..bf2e6f08b 100644 --- a/app/render/audioparams.h +++ b/app/render/audioparams.h @@ -21,6 +21,10 @@ #ifndef AUDIOPARAMS_H #define AUDIOPARAMS_H +extern "C" { +#include +} + #include #include #include