mirror of
https://gitlab.com/ecodis/exhale.git
synced 2025-03-12 09:10:17 +01:00
finish 1.1.1 release
This commit is contained in:
parent
7211490815
commit
94b846b673
@ -16,7 +16,7 @@ if("${CMAKE_CURRENT_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_BINARY_DIR}")
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
||||||
project(exhale VERSION 1.1.0 LANGUAGES CXX)
|
project(exhale VERSION 1.1.1 LANGUAGES CXX)
|
||||||
|
|
||||||
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
|
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
|
||||||
set(CMAKE_BUILD_TYPE Release
|
set(CMAKE_BUILD_TYPE Release
|
||||||
|
@ -34,7 +34,7 @@ exhale is being made available under an open-source license which is
|
|||||||
based on the 3-clause BSD license but modified to address particular
|
based on the 3-clause BSD license but modified to address particular
|
||||||
aspects dictated by the nature and the output of this application.
|
aspects dictated by the nature and the output of this application.
|
||||||
|
|
||||||
The license text and release notes for the current version 1.1.0 can
|
The license text and release notes for the current version 1.1.1 can
|
||||||
be found in the `include` subdirectory of the exhale distribution.
|
be found in the `include` subdirectory of the exhale distribution.
|
||||||
|
|
||||||
|
|
||||||
|
@ -15,5 +15,5 @@
|
|||||||
# define EXHALELIB_VERSION_MINOR "1"
|
# define EXHALELIB_VERSION_MINOR "1"
|
||||||
#endif
|
#endif
|
||||||
#ifndef EXHALELIB_VERSION_BUGFIX
|
#ifndef EXHALELIB_VERSION_BUGFIX
|
||||||
# define EXHALELIB_VERSION_BUGFIX ".0" // "RC" or ".0", ".1", ...
|
# define EXHALELIB_VERSION_BUGFIX ".1" // "RC" or ".0", ".1", ...
|
||||||
#endif
|
#endif
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
0 ICON "exhaleApp.ico"
|
0 ICON "exhaleApp.ico"
|
||||||
VS_VERSION_INFO VERSIONINFO
|
VS_VERSION_INFO VERSIONINFO
|
||||||
FILEVERSION 1,1,0
|
FILEVERSION 1,1,
|
||||||
BEGIN
|
BEGIN
|
||||||
BLOCK "StringFileInfo"
|
BLOCK "StringFileInfo"
|
||||||
BEGIN
|
BEGIN
|
||||||
|
@ -88,10 +88,14 @@ static int32_t packSbr3BandQuantLevels (const uint64_t enBlock, const uint32_t d
|
|||||||
if (valMax <= val[1]) { iMax = 1; valMax = val[1]; }
|
if (valMax <= val[1]) { iMax = 1; valMax = val[1]; }
|
||||||
if (valMax <= val[2]) { iMax = 2; valMax = val[2]; }
|
if (valMax <= val[2]) { iMax = 2; valMax = val[2]; }
|
||||||
|
|
||||||
if ((val[3] > valMax) || (val[3] < __min (val[0], __min (val[1], val[2]))) || (enBlock <= (enFrame >> 1)) || ((enBlock >> 1) >= enFrame))
|
if ((val[3] > valMax) || (enBlock <= (enFrame >> 2)) || ((enBlock >> 2) >= enFrame))
|
||||||
{
|
{
|
||||||
return int32_t (val[3]) | (int32_t (val[3]) << 8) | (int32_t (val[3]) << 16);
|
return int32_t (val[3]) | (int32_t (val[3]) << 8) | (int32_t (val[3]) << 16);
|
||||||
}
|
}
|
||||||
|
if ((enBlock <= (enFrame >> 1)) || ((enBlock >> 1) >= enFrame))
|
||||||
|
{
|
||||||
|
val[0] = (val[0] + val[3]) >> 1; val[1] = (val[1] + val[3]) >> 1; val[2] = (val[2] + val[3]) >> 1;
|
||||||
|
}
|
||||||
|
|
||||||
if (iMax > 0) // limit delta-value increases below peak band
|
if (iMax > 0) // limit delta-value increases below peak band
|
||||||
{
|
{
|
||||||
@ -186,7 +190,7 @@ int32_t getSbrEnvelopeAndNoise (int32_t* const sbrLevels, const uint8_t specFlat
|
|||||||
#if ENABLE_INTERTES
|
#if ENABLE_INTERTES
|
||||||
if ((noiseLevel < 12) && (tempFlat5b > (lr ? 15 : 26)) && (tmpBest < 3))
|
if ((noiseLevel < 12) && (tempFlat5b > (lr ? 15 : 26)) && (tmpBest < 3))
|
||||||
{
|
{
|
||||||
sbrData[8] |= (1 << (1 << tmpBest)) - 1; // TODO: inter-TES mode = inv. filter mode?
|
sbrData[8] |= (1 << (1 << tmpBest)) - 1;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
memcpy (&sbrLevels[20], &sbrLevels[10] /*last*/, 10 * sizeof (int32_t)); // update the
|
memcpy (&sbrLevels[20], &sbrLevels[10] /*last*/, 10 * sizeof (int32_t)); // update the
|
||||||
@ -200,26 +204,25 @@ int32_t getSbrEnvelopeAndNoise (int32_t* const sbrLevels, const uint8_t specFlat
|
|||||||
const int32_t prev = sbrLevels[30];
|
const int32_t prev = sbrLevels[30];
|
||||||
const int32_t p[3] = {prev & SCHAR_MAX, (prev >> 8) & SCHAR_MAX, (prev >> 16) & SCHAR_MAX};
|
const int32_t p[3] = {prev & SCHAR_MAX, (prev >> 8) & SCHAR_MAX, (prev >> 16) & SCHAR_MAX};
|
||||||
|
|
||||||
diff = 1; // NOTE: this could be 7, but delta-time coding is buggy
|
if ((t > 0 || !ind) && (getSbrDeltaBitCount (c[0] - p[0], true) + getSbrDeltaBitCount (c[1] - p[1], true) +
|
||||||
// and diff=1 doesn't trigger the bug (but wastes bits, of course)
|
getSbrDeltaBitCount (c[2] - p[2], true) < 12)) // approximate!
|
||||||
if ((t > 0 || !ind) && (abs (c[0] - p[0]) < diff) && (abs (c[1] - p[1]) < diff) && (abs (c[2] - p[2]) < diff))
|
|
||||||
{
|
{
|
||||||
tmpBest |= 1 << (12 + t); // delta-time coding flag for envelope
|
tmpBest |= 1 << (12 + t); // delta-time coding flag for envelope
|
||||||
|
|
||||||
diff = c[0] - p[0];
|
diff = c[0] - p[0];
|
||||||
sbrData[t] = getSbrDeltaHuffCode (diff, true ); bitCount = 8; // see bitStreamWriter.cpp, lines 186 and 213
|
sbrData[t] = getSbrDeltaHuffCode (diff, true ); bitCount = 8; // see bitStreamWriter.cpp, lines 186 and 213
|
||||||
diff = c[1] - p[1];
|
|
||||||
sbrData[t] |= getSbrDeltaHuffCode (diff, true ) << bitCount; bitCount += getSbrDeltaBitCount (diff, true);
|
|
||||||
diff = c[2] - p[2];
|
diff = c[2] - p[2];
|
||||||
sbrData[t] |= getSbrDeltaHuffCode (diff, true ) << bitCount; bitCount += getSbrDeltaBitCount (diff, true);
|
sbrData[t] |= getSbrDeltaHuffCode (diff, true ) << bitCount; bitCount += getSbrDeltaBitCount (diff, true );
|
||||||
|
diff = c[1] - p[1];
|
||||||
|
sbrData[t] |= getSbrDeltaHuffCode (diff, true ) << bitCount; bitCount += getSbrDeltaBitCount (diff, true );
|
||||||
}
|
}
|
||||||
else // delta-frequency coding
|
else // delta-frequency coding
|
||||||
{
|
{
|
||||||
sbrData[t] = c[0]; bitCount = 8; // first envelope is PCM coded
|
sbrData[t] = c[0]; bitCount = 8; // first envelope is PCM coded
|
||||||
diff = c[1] - c[0];
|
|
||||||
sbrData[t] |= getSbrDeltaHuffCode (diff, false) << bitCount; bitCount += getSbrDeltaBitCount (diff, false);
|
|
||||||
diff = c[2] - c[1];
|
diff = c[2] - c[1];
|
||||||
sbrData[t] |= getSbrDeltaHuffCode (diff, false) << bitCount; bitCount += getSbrDeltaBitCount (diff, false);
|
sbrData[t] |= getSbrDeltaHuffCode (diff, false) << bitCount; bitCount += getSbrDeltaBitCount (diff, false);
|
||||||
|
diff = c[1] - c[0];
|
||||||
|
sbrData[t] |= getSbrDeltaHuffCode (diff, false) << bitCount; bitCount += getSbrDeltaBitCount (diff, false);
|
||||||
}
|
}
|
||||||
sbrData[t] |= 1 << bitCount; // MSB delimiter for bitstream writer
|
sbrData[t] |= 1 << bitCount; // MSB delimiter for bitstream writer
|
||||||
sbrLevels[30] = curr;
|
sbrLevels[30] = curr;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user