Fix Canonical conversion.
This commit is contained in:
@@ -183,7 +183,7 @@ RageSound_CA::RageSound_CA()
|
|||||||
|
|
||||||
const Desc& procFormat = FindClosestFormat( procFormats, mFormat );
|
const Desc& procFormat = FindClosestFormat( procFormats, mFormat );
|
||||||
stream.SetCurrentIOProcFormat( procFormat );
|
stream.SetCurrentIOProcFormat( procFormat );
|
||||||
mFormat = OTHER; // XXX Temporary
|
//mFormat = OTHER; // XXX Temporary
|
||||||
LOG->Info("Proc format is %s.",
|
LOG->Info("Proc format is %s.",
|
||||||
mFormat == EXACT ? "exact" : (mFormat == CANONICAL ?
|
mFormat == EXACT ? "exact" : (mFormat == CANONICAL ?
|
||||||
"canonical" : "other"));
|
"canonical" : "other"));
|
||||||
@@ -298,15 +298,16 @@ OSStatus RageSound_CA::GetData(AudioDeviceID inDevice,
|
|||||||
}
|
}
|
||||||
else // This->mFormat == CANONICAL
|
else // This->mFormat == CANONICAL
|
||||||
{
|
{
|
||||||
|
dataPackets /= 8; // 8 bytes per packet (1 frame per packet)
|
||||||
|
|
||||||
int16_t buffer[dataPackets * kBytesPerPacket];
|
int16_t buffer[dataPackets * kBytesPerPacket];
|
||||||
int16_t *ip = buffer;
|
int16_t *ip = buffer;
|
||||||
float *fp = (float *)buf.mData;
|
float *fp = (float *)buf.mData;
|
||||||
|
|
||||||
dataPackets >>= 3;
|
|
||||||
This->Mix(buffer, dataPackets, decodePos, now);
|
This->Mix(buffer, dataPackets, decodePos, now);
|
||||||
|
|
||||||
// Convert from signed 16 bit int to signed 32 bit float
|
// Convert from signed 16 bit int to signed 32 bit float
|
||||||
for (unsigned i = 0; i < dataPackets; ++i)
|
for (unsigned i = 0; i < buf.mDataByteSize; i += 4)
|
||||||
{
|
{
|
||||||
int16_t val = *(++ip);
|
int16_t val = *(++ip);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user