tune MSE test code

This commit is contained in:
Christian R. Helmrich
2025-04-29 12:00:00 +02:00
parent 49517c4dfc
commit 337506ec7c
3 changed files with 17 additions and 7 deletions

View File

@@ -1116,6 +1116,11 @@ int main (const int argc, char* argv[])
#endif #endif
goto mainFinish; // encoding error goto mainFinish; // encoding error
} }
#ifdef NO_PREROLL_DATA
bw = __min ((6144/8) * numChannels, bw);
#else
bw = __min (1536 * numChannels, bw);
#endif
bwTmp = (enableSbrCoding ? bw : (bwTmp + bw) >> 1u); bwTmp = (enableSbrCoding ? bw : (bwTmp + bw) >> 1u);
if (bwMax < bwTmp) bwMax = bwTmp; if (bwMax < bwTmp) bwMax = bwTmp;
bwTmp = bw; bwTmp = bw;
@@ -1171,6 +1176,11 @@ int main (const int argc, char* argv[])
#endif #endif
goto mainFinish; // coder-time error goto mainFinish; // coder-time error
} }
#ifdef NO_PREROLL_DATA
bw = __min ((6144/8) * numChannels, bw);
#else
bw = __min (1536 * numChannels, bw);
#endif
bwTmp = (enableSbrCoding ? bw : (bwTmp + bw) >> 1u); bwTmp = (enableSbrCoding ? bw : (bwTmp + bw) >> 1u);
if (bwMax < bwTmp) bwMax = bwTmp; if (bwMax < bwTmp) bwMax = bwTmp;
bwTmp = bw; bwTmp = bw;

View File

@@ -1288,7 +1288,7 @@ unsigned BitStreamWriter::createAudioFrame (CoreCoderData** const elementData,
} }
else *rate = 0; // insufficient data else *rate = 0; // insufficient data
} }
memcpy (accessUnit, &m_auBitStream.stream.front (), __min (ci * (ipf ? 1536 : 768), bitCount >> 3)); memcpy (accessUnit, &m_auBitStream.stream.front (), __min (ci * (ipf ? 1536 : 832), bitCount >> 3));
#endif #endif
return (bitCount >> 3); // byte count return (bitCount >> 3); // byte count
} }

View File

@@ -963,24 +963,24 @@ unsigned ExhaleEncoder::psychBitAllocation () // perceptual bit-allocation via s
s = 0; s = 0;
for (unsigned b = grpOff[0]; b < grpOff[maxSfbCh]; b++) for (unsigned b = grpOff[0]; b < grpOff[maxSfbCh]; b++)
{ {
s += unsigned (0.5 + sqrt ((double) abs (m_mdctSignals[ci][b]))); s += unsigned (0.5 + pow ((double) abs (m_mdctSignals[ci][b]), 1.0 / 3.0));
} }
if (el == 0 && nrChannels == 2) if (el == 0 && nrChannels == 2)
{ {
for (unsigned b = grpOff[0]; b < grpOff[maxSfbCh]; b++) for (unsigned b = grpOff[0]; b < grpOff[maxSfbCh]; b++)
{ {
s += unsigned (0.5 + sqrt ((double) abs (m_mdctSignals[1 - ci][b]))); s += unsigned (0.5 + pow ((double) abs (m_mdctSignals[1 - ci][b]), 1.0 / 3.0));
} }
s = (s + 1u) >> 1; s = (s + 1u) >> 1;
} }
if (grpOff[maxSfbCh] > grpOff[0]) if (grpOff[maxSfbCh] > grpOff[0])
{ {
s = unsigned ((s * (eightShorts ? (24u + (grpData.windowGroupLength[gr] >> 2)) / grpData.windowGroupLength[gr] : 3u) + 4096u) >> 13); s = BA_EPS + unsigned ((s * (eightShorts ? 1u + 55u/grpData.windowGroupLength[gr] : 7u) + 16383u) >> 14);
# ifndef NO_PREROLL_DATA # ifndef NO_PREROLL_DATA
if (((m_frameCount - 1u) % (m_indepPeriod << 1)) == 1 && m_numElements == 1 && !eightShorts) s = (4u + 9u * s) >> 3; if (((m_frameCount - 1u) % (m_indepPeriod << 1)) == 1 && m_numElements == 1 && !eightShorts) s = (4u + 9u * s) >> 3;
# endif # endif
} }
s = __max (1u + ((UINT32_MAX / (eightShorts ? 3u : 8u)) >> ((2 + m_bitRateMode / 9) * m_bitRateMode)), s * s); s = __max (1u + ((UINT32_MAX / (eightShorts ? 3u : 8u)) >> ((2 + m_bitRateMode / 9) * m_bitRateMode)), s * s * s);
#endif #endif
for (unsigned b = 0; b < maxSfbCh; b++) for (unsigned b = 0; b < maxSfbCh; b++)
{ {
@@ -988,8 +988,8 @@ unsigned ExhaleEncoder::psychBitAllocation () // perceptual bit-allocation via s
const uint8_t sfbWidth = grpOff[b + 1] - grpOff[b]; const uint8_t sfbWidth = grpOff[b + 1] - grpOff[b];
const bool stereoCoded = (nrChannels == 2 && coreConfig.stereoMode > 0 && (coreConfig.stereoDataCurr[b] > 0 || !(coreConfig.stereoMode & 1))); const bool stereoCoded = (nrChannels == 2 && coreConfig.stereoMode > 0 && (coreConfig.stereoDataCurr[b] > 0 || !(coreConfig.stereoMode & 1)));
const uint32_t rmsbMax = (stereoCoded ? __max (grpRms[b], coreConfig.groupingData[1 - ch].sfbRmsValues[m_numSwbShort * gr + b]) : grpRms[b]); const uint32_t rmsbMax = (stereoCoded ? __max (grpRms[b], coreConfig.groupingData[1 - ch].sfbRmsValues[m_numSwbShort * gr + b]) : grpRms[b]);
const uint64_t sThresh = __max (1u + (UINT32_MAX >> 30), (rmsbMax * uint64_t (__max (16, b * b * grpData.numWindowGroups)) + 32u) >> 6); const uint64_t sThresh = __max (BA_EPS, (rmsbMax * uint64_t (__max (16, b * b * grpData.numWindowGroups)) + 32u) >> 6);
const uint64_t predFac = (eightShorts || coreConfig.stereoMode < 3 || coreConfig.stereoDataCurr[b & 62] == 0 ? (eightShorts && !b ? 48u : 64u) : const uint64_t predFac = (eightShorts || coreConfig.stereoMode < 3 || coreConfig.stereoDataCurr[b & 62] == 0 ? (sfbWidth < 8 ? 68u - grpData.numWindowGroups : 64u) :
uint64_t (0.5 + 64 - pow (__min (1.0, fabs (coreConfig.stereoDataCurr[b & 62] * 0.1 - 1.6)), 1.5) * 19.0)); // MS uint64_t (0.5 + 64 - pow (__min (1.0, fabs (coreConfig.stereoDataCurr[b & 62] * 0.1 - 1.6)), 1.5) * 19.0)); // MS
grpStepSizes[b] = uint32_t (__min (sThresh, (s * predFac + 32u) >> 6)); grpStepSizes[b] = uint32_t (__min (sThresh, (s * predFac + 32u) >> 6));
if (stereoCoded && rmsbMax) if (stereoCoded && rmsbMax)