Merge pull request #8185 from unknownbrackets/atrac-resetting

Atrac: correct offsetting logic in resetting
This commit is contained in:
Henrik Rydgård committed 2015-11-07 12:51:21 +01:00
commit 255513c250
1 file changed
+4 -4
+4 -4
View File
@@ -1120,15 +1120,15 @@ static void AtracGetResetBufferInfo(Atrac *atrac, AtracResetBufferInfo *bufferIn
bufferInfo->first.writePosPtr = atrac->first.addr;
bufferInfo->first.writableBytes = std::min(atrac->first.filesize - sampleFileOffset, bufSizeAligned);
if (((sample + atrac->firstSampleoffset) % atracSamplesPerFrame) > needsMoreFrames) {
if (((sample + atrac->firstSampleoffset) % atracSamplesPerFrame) >= atracSamplesPerFrame - needsMoreFrames) {
// Not clear why, but it seems it wants a bit extra in case the sample is late?
bufferInfo->first.minWriteBytes = atrac->atracBytesPerFrame * 3;
if ((u32)sample < (u32)atrac->firstSampleoffset) {
sampleFileOffset -= atrac->atracBytesPerFrame;
}
} else {
bufferInfo->first.minWriteBytes = atrac->atracBytesPerFrame * 2;
}
if ((u32)sample < (u32)atrac->firstSampleoffset && sampleFileOffset != atrac->dataOff) {
sampleFileOffset -= atrac->atracBytesPerFrame;
}
bufferInfo->first.filePos = sampleFileOffset;
}