Skip to content

Commit

Permalink
libFLAC/stream_decoder.c: Use current position as bound when seeking
Browse files Browse the repository at this point in the history
  • Loading branch information
enzo1982 authored and erikd committed Mar 15, 2021
1 parent bfd4f13 commit 159cd6c
Showing 1 changed file with 14 additions and 3 deletions.
17 changes: 14 additions & 3 deletions src/libFLAC/stream_decoder.c
Original file line number Diff line number Diff line change
Expand Up @@ -3032,15 +3032,26 @@ FLAC__bool seek_to_absolute_sample_(FLAC__StreamDecoder *decoder, FLAC__uint64 s

/*
* First, we set an upper and lower bound on where in the
* stream we will search. For now we assume the worst case
* scenario, which is our best guess at the beginning of
* the first frame and end of the stream.
* stream we will search. For now we take the current position
* as one bound and, depending on where the target position lies,
* the beginning of the first frame or the end of the stream as
* the other bound.
*/
lower_bound = first_frame_offset;
lower_bound_sample = 0;
upper_bound = stream_length;
upper_bound_sample = total_samples > 0 ? total_samples : target_sample /*estimate it*/;

if(decoder->protected_->state == FLAC__STREAM_DECODER_READ_FRAME) {
if(target_sample < decoder->private_->samples_decoded) {
if(FLAC__stream_decoder_get_decode_position(decoder, &upper_bound))
upper_bound_sample = decoder->private_->samples_decoded;
} else {
if(FLAC__stream_decoder_get_decode_position(decoder, &lower_bound))
lower_bound_sample = decoder->private_->samples_decoded;
}
}

/*
* Now we refine the bounds if we have a seektable with
* suitable points. Note that according to the spec they
Expand Down

0 comments on commit 159cd6c

Please sign in to comment.