[FLAC Decoder] Correctly handle zero length frames

Apparently, the decoder is capable of returning zero length frames
without having hit the end of the stream.

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
xcode15
Christopher Snowhill 2022-07-14 00:01:59 -07:00
parent c4e975319a
commit 68d323545b
1 changed files with 7 additions and 5 deletions

View File

@ -365,6 +365,7 @@ void ErrorCallback(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorS
id audioChunkClass = NSClassFromString(@"AudioChunk"); id audioChunkClass = NSClassFromString(@"AudioChunk");
AudioChunk *chunk = nil; AudioChunk *chunk = nil;
while (blockBufferFrames <= 0) {
if(FLAC__stream_decoder_get_state(decoder) == FLAC__STREAM_DECODER_END_OF_STREAM) { if(FLAC__stream_decoder_get_state(decoder) == FLAC__STREAM_DECODER_END_OF_STREAM) {
return nil; return nil;
} }
@ -372,6 +373,7 @@ void ErrorCallback(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorS
if(!FLAC__stream_decoder_process_single(decoder)) { if(!FLAC__stream_decoder_process_single(decoder)) {
return nil; return nil;
} }
}
if(blockBufferFrames > 0) { if(blockBufferFrames > 0) {
chunk = [[audioChunkClass alloc] initWithProperties:[self properties]]; chunk = [[audioChunkClass alloc] initWithProperties:[self properties]];