Bug Fix: Rubber Band handles end of track gap
The code was polling the input chunk duration after emptying out the chunk's samples, which resulted in an input duration account sitting at exactly zero, so the end overrun flush would not be cut short properly, resulting in gaps between tracks. Correct the input sum to tabulate before emptying the input chunk, so output remains properly gapless. Signed-off-by: Christopher Snowhill <kode54@gmail.com>
This commit is contained in:
parent
7bb6070350
commit
0262df7c53
1 changed files with 2 additions and 2 deletions
|
@ -439,6 +439,8 @@ static void * kDSPRubberbandNodeContext = &kDSPRubberbandNodeContext;
|
|||
streamTimeRatio = [chunk streamTimeRatio];
|
||||
isHDCD = [chunk isHDCD];
|
||||
|
||||
stretchIn += [chunk duration] / tempo;
|
||||
|
||||
size_t frameCount = [chunk frameCount];
|
||||
NSData *sampleData = [chunk removeSamples:frameCount];
|
||||
|
||||
|
@ -446,8 +448,6 @@ static void * kDSPRubberbandNodeContext = &kDSPRubberbandNodeContext;
|
|||
cblas_scopy((int)frameCount, ((const float *)[sampleData bytes]) + i, channels, rsPtrs[i], 1);
|
||||
}
|
||||
|
||||
stretchIn += [chunk duration] / tempo;
|
||||
|
||||
endOfStream = [[previousNode buffer] isEmpty] && [previousNode endOfStream] == YES;
|
||||
|
||||
int len = (int)frameCount;
|
||||
|
|
Loading…
Reference in a new issue