Fix lossless capability reporting for partial read
When reading partial chunks, and when returning partial data, it is essential to maintain this lossless chunk status across either whole or partial chunk reads. Otherwise, the converter chain sees the lossless flag constantly changing on lossless files, such as PCM or DSD, and causes the DSD decimator and/or resampler to be torn down and reset repeatedly, causing glitches in the audio. The glitch was not, in fact, with the decimator itself, and was occurring to a degree without it, as it would be restarting the resampler repeatedly as well. Fixes #367 Signed-off-by: Christopher Snowhill <kode54@gmail.com>
This commit is contained in:
parent
24a3209682
commit
c9ed3c4817
1 changed files with 2 additions and 0 deletions
|
@ -475,6 +475,7 @@ static void convert_be_to_le(uint8_t *buffer, size_t bitsPerSample, size_t bytes
|
|||
AudioChunk *ret = [[AudioChunk alloc] init];
|
||||
[ret setFormat:[chunk format]];
|
||||
[ret setChannelConfig:[chunk channelConfig]];
|
||||
[ret setLossless:[chunk lossless]];
|
||||
[ret assignData:removedData];
|
||||
listDuration -= [ret duration];
|
||||
inRemover = NO;
|
||||
|
@ -510,6 +511,7 @@ static void convert_be_to_le(uint8_t *buffer, size_t bitsPerSample, size_t bytes
|
|||
AudioChunk *ret = [[AudioChunk alloc] init];
|
||||
[ret setFormat:[chunk format]];
|
||||
[ret setChannelConfig:[chunk channelConfig]];
|
||||
[ret setLossless:[chunk lossless]];
|
||||
[ret assignData:removedData];
|
||||
listDuration -= [ret duration];
|
||||
inRemover = NO;
|
||||
|
|
Loading…
Reference in a new issue