From 59203c63bb777a3bacec32fb8830fba33540e809 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 12 Jun 2024 07:35:29 +0200 Subject: Adding upstream version 127.0. Signed-off-by: Daniel Baumann --- dom/media/platforms/ffmpeg/FFmpegAudioDecoder.cpp | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) (limited to 'dom/media/platforms/ffmpeg/FFmpegAudioDecoder.cpp') diff --git a/dom/media/platforms/ffmpeg/FFmpegAudioDecoder.cpp b/dom/media/platforms/ffmpeg/FFmpegAudioDecoder.cpp index 1e8e488e25..381cbf71a8 100644 --- a/dom/media/platforms/ffmpeg/FFmpegAudioDecoder.cpp +++ b/dom/media/platforms/ffmpeg/FFmpegAudioDecoder.cpp @@ -5,6 +5,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "FFmpegAudioDecoder.h" +#include "FFmpegUtils.h" #include "AudioSampleFormat.h" #include "FFmpegLog.h" #include "TimeUnits.h" @@ -250,7 +251,7 @@ MediaResult FFmpegAudioDecoder::PostProcessOutput( aSample->mDuration.ToString().get(), mLib->av_get_sample_fmt_name(mFrame->format)); - uint32_t numChannels = mCodecContext->channels; + uint32_t numChannels = ChannelCount(mCodecContext); uint32_t samplingRate = mCodecContext->sample_rate; if (!numChannels) { numChannels = mAudioInfo.mChannels; @@ -284,7 +285,7 @@ MediaResult FFmpegAudioDecoder::PostProcessOutput( RefPtr data = new AudioData(aSample->mOffset, pts, std::move(audio), numChannels, - samplingRate, mCodecContext->channel_layout); + samplingRate, numChannels); MOZ_ASSERT(duration == data->mDuration, "must be equal"); aResults.AppendElement(std::move(data)); @@ -395,16 +396,23 @@ MediaResult FFmpegAudioDecoder::DoDecode(MediaRawData* aSample, DecodedData& aResults) { MOZ_ASSERT(mTaskQueue->IsOnCurrentThread()); PROCESS_DECODE_LOG(aSample); - AVPacket packet; - mLib->av_init_packet(&packet); + AVPacket* packet; +#if LIBAVCODEC_VERSION_MAJOR >= 61 + packet = mLib->av_packet_alloc(); + auto freePacket = MakeScopeExit([&] { mLib->av_packet_free(&packet); }); +#else + AVPacket packet_mem; + packet = &packet_mem; + mLib->av_init_packet(packet); +#endif FFMPEG_LOG("FFmpegAudioDecoder::DoDecode: %d bytes, [%s,%s] (Duration: %s)", aSize, aSample->mTime.ToString().get(), aSample->GetEndTime().ToString().get(), aSample->mDuration.ToString().get()); - packet.data = const_cast(aData); - packet.size = aSize; + packet->data = const_cast(aData); + packet->size = aSize; if (aGotFrame) { *aGotFrame = false; @@ -418,8 +426,9 @@ MediaResult FFmpegAudioDecoder::DoDecode(MediaRawData* aSample, } bool decoded = false; - auto rv = DecodeUsingFFmpeg(&packet, decoded, aSample, aResults, aGotFrame); + auto rv = DecodeUsingFFmpeg(packet, decoded, aSample, aResults, aGotFrame); NS_ENSURE_SUCCESS(rv, rv); + return NS_OK; } -- cgit v1.2.3