mirror of
https://gitlab.com/ecodis/exhale.git
synced 2025-06-05 21:59:32 +02:00
fix for pred_dir=1
This commit is contained in:
@@ -307,8 +307,8 @@ unsigned StereoProcessor::applyPredJointStereo (int32_t* const mdctSpectrum1, in
|
|||||||
}
|
}
|
||||||
else b = UCHAR_MAX; // previous correlation data unavailable, assume maximum value
|
else b = UCHAR_MAX; // previous correlation data unavailable, assume maximum value
|
||||||
|
|
||||||
if ((b > SCHAR_MAX) && (sfbEv < __max (grp.sfbsPerGroup, groupingData2.sfbsPerGroup)) &&
|
if ((b > SCHAR_MAX && sfbStereoData[sfbEv + numSwbFrame * gr] != 16) || // signi-
|
||||||
(sfbStereoData[sfbEv + numSwbFrame * gr] != 16))
|
(2 <= abs ( (int) sfbStereoData[sfbEv + numSwbFrame * gr] - 16))) // ficant?
|
||||||
{
|
{
|
||||||
nonZeroPredCoef = true;
|
nonZeroPredCoef = true;
|
||||||
}
|
}
|
||||||
@@ -349,7 +349,8 @@ unsigned StereoProcessor::applyPredJointStereo (int32_t* const mdctSpectrum1, in
|
|||||||
const uint64_t bandSumM = (applyPredSte ? (uint64_t) rmsSfbM[0] + (uint64_t) rmsSfbM[1] : bandSum1) >> 1;
|
const uint64_t bandSumM = (applyPredSte ? (uint64_t) rmsSfbM[0] + (uint64_t) rmsSfbM[1] : bandSum1) >> 1;
|
||||||
const uint64_t bandSumS = (applyPredSte ? (uint64_t) rmsSfbS[0] + (uint64_t) rmsSfbS[1] : bandSum2) >> 1;
|
const uint64_t bandSumS = (applyPredSte ? (uint64_t) rmsSfbS[0] + (uint64_t) rmsSfbS[1] : bandSum2) >> 1;
|
||||||
|
|
||||||
if (__min (bandSumM, bandSumS) * __max (bandSumL, bandSumR) >= __min (bandSumL, bandSumR) * __max (bandSumM, bandSumS))
|
if ((__min (bandSumM, bandSumS) * __max (bandSumL, bandSumR) >= __min (bandSumL, bandSumR) * __max (bandSumM, bandSumS)) ||
|
||||||
|
(nonZeroPredCoef && (abs ( (int) sfbStereoData[sfbEv + numSwbFrame * gr] - 16) >= 10)))
|
||||||
{
|
{
|
||||||
const uint16_t sfbOffEv = grpOff[sfbEv];
|
const uint16_t sfbOffEv = grpOff[sfbEv];
|
||||||
const uint16_t cpyWidth = (grpOff[sfb + 1] - sfbOffEv) * sizeof (int32_t);
|
const uint16_t cpyWidth = (grpOff[sfb + 1] - sfbOffEv) * sizeof (int32_t);
|
||||||
@@ -367,7 +368,7 @@ unsigned StereoProcessor::applyPredJointStereo (int32_t* const mdctSpectrum1, in
|
|||||||
grpRms2[idx] = rmsSfbR[b];
|
grpRms2[idx] = rmsSfbR[b];
|
||||||
if (applyPredSte) sfbStereoData[idx + numSwbFrame * gr] = 0; // zeroed ms_used
|
if (applyPredSte) sfbStereoData[idx + numSwbFrame * gr] = 0; // zeroed ms_used
|
||||||
}
|
}
|
||||||
continue;
|
continue; // M/S is not used
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -443,7 +444,6 @@ unsigned StereoProcessor::applyPredJointStereo (int32_t* const mdctSpectrum1, in
|
|||||||
for (uint16_t sfb = 0; sfb < maxSfbSte; sfb++)
|
for (uint16_t sfb = 0; sfb < maxSfbSte; sfb++)
|
||||||
{
|
{
|
||||||
const uint16_t sfbEv = sfb & 0xFFFE; // even SFB index
|
const uint16_t sfbEv = sfb & 0xFFFE; // even SFB index
|
||||||
|
|
||||||
const uint16_t sfbStart = grpOff[sfb];
|
const uint16_t sfbStart = grpOff[sfb];
|
||||||
const uint16_t sfbWidth = grpOff[sfb + 1] - sfbStart;
|
const uint16_t sfbWidth = grpOff[sfb + 1] - sfbStart;
|
||||||
const int64_t alphaRe = (grpSData[sfbEv] > 0 ? (int) grpSData[sfbEv] - 16 : 0) * SP_0_DOT_1_16BIT;
|
const int64_t alphaRe = (grpSData[sfbEv] > 0 ? (int) grpSData[sfbEv] - 16 : 0) * SP_0_DOT_1_16BIT;
|
||||||
@@ -518,12 +518,15 @@ unsigned StereoProcessor::applyPredJointStereo (int32_t* const mdctSpectrum1, in
|
|||||||
|
|
||||||
if (alterPredDir) // swap channel data when pred_dir = 1
|
if (alterPredDir) // swap channel data when pred_dir = 1
|
||||||
{
|
{
|
||||||
int32_t* sfbMdct1 = &mdctSpectrum1[grpOff[0]];
|
|
||||||
int32_t* sfbMdct2 = &mdctSpectrum2[grpOff[0]];
|
|
||||||
|
|
||||||
for (uint16_t sfb = 0; sfb < maxSfbSte; sfb++)
|
for (uint16_t sfb = 0; sfb < maxSfbSte; sfb++)
|
||||||
{
|
{
|
||||||
for (uint16_t s = grpOff[sfb + 1] - grpOff[sfb]; s > 0; s--)
|
const uint16_t sfbStart = grpOff[sfb];
|
||||||
|
int32_t* sfbMdct1 = &mdctSpectrum1[sfbStart];
|
||||||
|
int32_t* sfbMdct2 = &mdctSpectrum2[sfbStart];
|
||||||
|
|
||||||
|
if (grpSData[sfb] == 0) continue; // M/S is not used
|
||||||
|
|
||||||
|
for (uint16_t s = grpOff[sfb + 1] - sfbStart; s > 0; s--)
|
||||||
{
|
{
|
||||||
const int32_t i = *sfbMdct1;
|
const int32_t i = *sfbMdct1;
|
||||||
*(sfbMdct1++) = *sfbMdct2;
|
*(sfbMdct1++) = *sfbMdct2;
|
||||||
|
Reference in New Issue
Block a user