From c0bee2a02aa5f5cc82522cf301f86e1093125708 Mon Sep 17 00:00:00 2001 From: Robert Kausch Date: Tue, 25 Jan 2022 09:41:03 +0100 Subject: [PATCH] fdk-aac: add patch to fix uniDRC decoding (#6569) --- media-libs/fdk-aac/fdk_aac-2.0.2.recipe | 3 +- .../fdk-aac/patches/fdk_aac-2.0.2.patchset | 31 +++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 media-libs/fdk-aac/patches/fdk_aac-2.0.2.patchset diff --git a/media-libs/fdk-aac/fdk_aac-2.0.2.recipe b/media-libs/fdk-aac/fdk_aac-2.0.2.recipe index 4b8fa0bc5..7e4b2056e 100644 --- a/media-libs/fdk-aac/fdk_aac-2.0.2.recipe +++ b/media-libs/fdk-aac/fdk_aac-2.0.2.recipe @@ -5,10 +5,11 @@ encoding and decoding scheme for digital audio." HOMEPAGE="https://sourceforge.net/projects/opencore-amr" COPYRIGHT="1995-2021 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V." LICENSE="Fraunhofer FDK AAC Codec" -REVISION="1" +REVISION="2" SOURCE_URI="https://downloads.sourceforge.net/opencore-amr/fdk-aac/fdk-aac-$portVersion.tar.gz" CHECKSUM_SHA256="c9e8630cf9d433f3cead74906a1520d2223f89bcd3fa9254861017440b8eb22f" SOURCE_DIR="fdk-aac-$portVersion" +PATCHES="fdk_aac-$portVersion.patchset" ARCHITECTURES="all !x86_gcc2" SECONDARY_ARCHITECTURES="x86" diff --git a/media-libs/fdk-aac/patches/fdk_aac-2.0.2.patchset b/media-libs/fdk-aac/patches/fdk_aac-2.0.2.patchset new file mode 100644 index 000000000..bf9d8331f --- /dev/null +++ b/media-libs/fdk-aac/patches/fdk_aac-2.0.2.patchset @@ -0,0 +1,31 @@ +From a4aa2e5898d690462d33fe13b15de5ff31b85669 Mon Sep 17 00:00:00 2001 +From: Robert Kausch +Date: Mon, 24 Jan 2022 15:44:13 +0000 +Subject: Fix decoding of uniDRC extension data + + +diff --git a/libDRCdec/src/drcDec_reader.cpp b/libDRCdec/src/drcDec_reader.cpp +index ca35345..b76ae18 100644 +--- a/libDRCdec/src/drcDec_reader.cpp ++++ b/libDRCdec/src/drcDec_reader.cpp +@@ -512,10 +512,13 @@ drcDec_readUniDrcGain(HANDLE_FDK_BITSTREAM hBs, + fMin(tmpNNodes, (UCHAR)16) * sizeof(GAIN_NODE)); + } + +- hUniDrcGain->uniDrcGainExtPresent = FDKreadBits(hBs, 1); +- if (hUniDrcGain->uniDrcGainExtPresent == 1) { +- err = _readUniDrcGainExtension(hBs, &(hUniDrcGain->uniDrcGainExtension)); +- if (err) return err; ++ if (pCoef && (gainSequenceCount == ++ pCoef->gainSequenceCount)) { /* all sequences have been read */ ++ hUniDrcGain->uniDrcGainExtPresent = FDKreadBits(hBs, 1); ++ if (hUniDrcGain->uniDrcGainExtPresent == 1) { ++ err = _readUniDrcGainExtension(hBs, &(hUniDrcGain->uniDrcGainExtension)); ++ if (err) return err; ++ } + } + + if (err == DE_OK && gainSequenceCount > 0) { +-- +2.30.2 +