diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-06-12 05:43:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-06-12 05:43:14 +0000 |
commit | 8dd16259287f58f9273002717ec4d27e97127719 (patch) | |
tree | 3863e62a53829a84037444beab3abd4ed9dfc7d0 /dom/media/platforms/ffmpeg/FFmpegAudioDecoder.cpp | |
parent | Releasing progress-linux version 126.0.1-1~progress7.99u1. (diff) | |
download | firefox-8dd16259287f58f9273002717ec4d27e97127719.tar.xz firefox-8dd16259287f58f9273002717ec4d27e97127719.zip |
Merging upstream version 127.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'dom/media/platforms/ffmpeg/FFmpegAudioDecoder.cpp')
-rw-r--r-- | dom/media/platforms/ffmpeg/FFmpegAudioDecoder.cpp | 23 |
1 files changed, 16 insertions, 7 deletions
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<LIBAV_VER>::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<LIBAV_VER>::PostProcessOutput( RefPtr<AudioData> 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<LIBAV_VER>::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<uint8_t*>(aData); - packet.size = aSize; + packet->data = const_cast<uint8_t*>(aData); + packet->size = aSize; if (aGotFrame) { *aGotFrame = false; @@ -418,8 +426,9 @@ MediaResult FFmpegAudioDecoder<LIBAV_VER>::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; } |