mirror of
https://gitlab.com/ecodis/exhale.git
synced 2025-06-05 21:59:32 +02:00
editorial changes
This commit is contained in:
@ -13,14 +13,6 @@
|
|||||||
#include "basicMP4Writer.h"
|
#include "basicMP4Writer.h"
|
||||||
#include "version.h"
|
#include "version.h"
|
||||||
|
|
||||||
#if 0 // DEBUG
|
|
||||||
static const uint8_t muLawHeader[44] = {
|
|
||||||
0x52, 0x49, 0x46, 0x46, 0xF0, 0xFF, 0xFF, 0xFF, 0x57, 0x41, 0x56, 0x45, 0x66, 0x6D, 0x74, 0x20,
|
|
||||||
0x10, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x08, 0x00, 0x64, 0x61, 0x74, 0x61, 0xF0, 0xFF, 0xFF, 0xFF
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static const uint8_t staticHeaderTemplate[STAT_HEADER_SIZE] = {
|
static const uint8_t staticHeaderTemplate[STAT_HEADER_SIZE] = {
|
||||||
0x00, 0x00, 0x00, 0x18, 0x66, 0x74, 0x79, 0x70, 0x6D, 0x70, 0x34, 0x32, 0x00, 0x00, 0x00, 0x00, // ftyp
|
0x00, 0x00, 0x00, 0x18, 0x66, 0x74, 0x79, 0x70, 0x6D, 0x70, 0x34, 0x32, 0x00, 0x00, 0x00, 0x00, // ftyp
|
||||||
0x6D, 0x70, 0x34, 0x32, 0x69, 0x73, 0x6F, 0x6D, 0x00, 0x00, MOOV_BSIZE, 0x6D, 0x6F, 0x6F, 0x76, // moov
|
0x6D, 0x70, 0x34, 0x32, 0x69, 0x73, 0x6F, 0x6D, 0x00, 0x00, MOOV_BSIZE, 0x6D, 0x6F, 0x6F, 0x76, // moov
|
||||||
@ -107,7 +99,7 @@ int BasicMP4Writer::finishFile (const unsigned avgBitrate, const unsigned maxBit
|
|||||||
#ifndef NO_FIX_FOR_ISSUE_1
|
#ifndef NO_FIX_FOR_ISSUE_1
|
||||||
# ifndef NO_FIX_FOR_ISSUE_13
|
# ifndef NO_FIX_FOR_ISSUE_13
|
||||||
const uint32_t chunkCount = (m_frameCount + m_rndAccPeriod - 1) / m_rndAccPeriod;
|
const uint32_t chunkCount = (m_frameCount + m_rndAccPeriod - 1) / m_rndAccPeriod;
|
||||||
const uint32_t stssAtomSize = STSX_BSIZE + chunkCount * 4;
|
const uint32_t stssAtomSize = STSX_BSIZE + chunkCount * 4; // NOTE: must equal stcoAtomSize
|
||||||
# else
|
# else
|
||||||
const uint32_t stssAtomSize = STSX_BSIZE + 4;
|
const uint32_t stssAtomSize = STSX_BSIZE + 4;
|
||||||
# endif
|
# endif
|
||||||
@ -369,22 +361,6 @@ int BasicMP4Writer::finishFile (const unsigned avgBitrate, const unsigned maxBit
|
|||||||
|
|
||||||
int BasicMP4Writer::initHeader (const uint32_t audioLength) // reserve bytes for header in file
|
int BasicMP4Writer::initHeader (const uint32_t audioLength) // reserve bytes for header in file
|
||||||
{
|
{
|
||||||
#if 0 // DEBUG
|
|
||||||
const uint8_t numChannels = m_staticHeader[517];
|
|
||||||
|
|
||||||
// write basic <20>-Law WAVE header for testing
|
|
||||||
memcpy (m_staticHeader, muLawHeader, 44 * sizeof (uint8_t));
|
|
||||||
m_staticHeader[22] = numChannels;
|
|
||||||
m_staticHeader[24] = uint8_t (m_sampleRate & 0xFF);
|
|
||||||
m_staticHeader[25] = uint8_t (m_sampleRate >> 8u);
|
|
||||||
m_staticHeader[26] = uint8_t (m_sampleRate >> 16u);
|
|
||||||
m_staticHeader[28] = uint8_t ((m_sampleRate * numChannels) & 0xFF);
|
|
||||||
m_staticHeader[29] = uint8_t ((m_sampleRate * numChannels) >> 8u);
|
|
||||||
m_staticHeader[30] = uint8_t ((m_sampleRate * numChannels) >> 16u);
|
|
||||||
m_staticHeader[32] = numChannels; // byte count per frame
|
|
||||||
|
|
||||||
return _WRITE (m_fileHandle, m_staticHeader, 44);
|
|
||||||
#else
|
|
||||||
/* NOTE: the following condition is, as far as I can tell, correct, but some decoders with DRC processing
|
/* NOTE: the following condition is, as far as I can tell, correct, but some decoders with DRC processing
|
||||||
may decode too few samples with it. Hence, I disabled it. See also corresponding NOTE in exhaleApp.cpp */
|
may decode too few samples with it. Hence, I disabled it. See also corresponding NOTE in exhaleApp.cpp */
|
||||||
const bool flushFrameUsed = true; // ((audioLength + m_pregapLength) % m_frameLength) > 0;
|
const bool flushFrameUsed = true; // ((audioLength + m_pregapLength) % m_frameLength) > 0;
|
||||||
@ -411,7 +387,6 @@ int BasicMP4Writer::initHeader (const uint32_t audioLength) // reserve bytes for
|
|||||||
m_mediaOffset = bytesWritten; // first frame will be written at this offset
|
m_mediaOffset = bytesWritten; // first frame will be written at this offset
|
||||||
|
|
||||||
return bytesWritten;
|
return bytesWritten;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned BasicMP4Writer::open (const int mp4FileHandle, const unsigned sampleRate, const unsigned numChannels,
|
unsigned BasicMP4Writer::open (const int mp4FileHandle, const unsigned sampleRate, const unsigned numChannels,
|
||||||
@ -437,9 +412,7 @@ unsigned BasicMP4Writer::open (const int mp4FileHandle, const unsigned sampleRat
|
|||||||
#else
|
#else
|
||||||
reset (frameLength, pregapLength, raPeriod);
|
reset (frameLength, pregapLength, raPeriod);
|
||||||
#endif
|
#endif
|
||||||
#if 0 // DEBUG
|
|
||||||
m_sampleRate = sampleRate;
|
|
||||||
#endif
|
|
||||||
// create fixed-length 576-byte part of MPEG-4 file header
|
// create fixed-length 576-byte part of MPEG-4 file header
|
||||||
memcpy (m_staticHeader, staticHeaderTemplate, STAT_HEADER_SIZE * sizeof (uint8_t));
|
memcpy (m_staticHeader, staticHeaderTemplate, STAT_HEADER_SIZE * sizeof (uint8_t));
|
||||||
|
|
||||||
|
@ -521,9 +521,9 @@ unsigned BitAllocator::imprSfbStepSizes (const SfbGroupData* const groupData[USA
|
|||||||
|
|
||||||
if ((m_rateIndex == 0) && lowRateTuning) // clip near-zero SNRs to a minimum SNR
|
if ((m_rateIndex == 0) && lowRateTuning) // clip near-zero SNRs to a minimum SNR
|
||||||
{
|
{
|
||||||
const uint32_t rms = uint32_t ((grpRms[b] * (8192u - (uint64_t) sfm[ch] * sfm[ch]) + (1u << 12)) >> 13);
|
const uint32_t lim = uint32_t ((grpRms[b] * (8192u - (uint64_t) sfm[ch] * sfm[ch]) + (1u << 12)) >> 13);
|
||||||
|
|
||||||
if ((grpStepSizes[b] > grpRms[b]) && ((grpStepSizes[b] >> 1) <= rms)) grpStepSizes[b] = grpRms[b];
|
if ((grpStepSizes[b] > grpRms[b]) && ((grpStepSizes[b] >> 1) <= lim)) grpStepSizes[b] = grpRms[b];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -584,7 +584,7 @@ unsigned StereoProcessor::applyPredJointStereo (int32_t* const mdctSpectrum1, in
|
|||||||
*sfbMdctR = resiRe;
|
*sfbMdctR = resiRe;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else // complex data, both MDCT and MDST is available
|
else // complex data, both MDCT and MDST are available
|
||||||
{
|
{
|
||||||
int32_t* sfbMdstD = (alterPredDir ? &mdstSpectrum2[sfbStart] : &mdstSpectrum1[sfbStart]);
|
int32_t* sfbMdstD = (alterPredDir ? &mdstSpectrum2[sfbStart] : &mdstSpectrum1[sfbStart]);
|
||||||
int32_t* sfbMdstR = (alterPredDir ? &mdstSpectrum1[sfbStart] : &mdstSpectrum2[sfbStart]);
|
int32_t* sfbMdstR = (alterPredDir ? &mdstSpectrum1[sfbStart] : &mdstSpectrum2[sfbStart]);
|
||||||
|
Reference in New Issue
Block a user