if (frame < _decoded.frame || end > (_decoded.frame + length * 4)) {
/* Either we have no decoded data, or what we do have is a long way from what we want: seek */
seek (ContentTime::from_frames (frame, _content->resampled_audio_frame_rate()), accurate);
if (frame < _decoded.frame || end > (_decoded.frame + length * 4)) {
/* Either we have no decoded data, or what we do have is a long way from what we want: seek */
seek (ContentTime::from_frames (frame, _content->resampled_audio_frame_rate()), accurate);
/* Now enough pass() calls will either:
* (a) give us what we want, or
* (b) hit the end of the decoder.
/* Now enough pass() calls will either:
* (a) give us what we want, or
* (b) hit the end of the decoder.
/* Keep stuffing data into _decoded until we have enough data, or the subclass does not want to give us any more */
while (
(_decoded.frame > frame || (_decoded.frame + _decoded.audio->frames()) < end) &&
/* Keep stuffing data into _decoded until we have enough data, or the subclass does not want to give us any more */
while (
(_decoded.frame > frame || (_decoded.frame + _decoded.audio->frames()) < end) &&
/* Otherwise we need to extend _decoded to include the new stuff */
new_size = _position.get() + data->frames() - _decoded.frame;
}
/* Otherwise we need to extend _decoded to include the new stuff */
new_size = _position.get() + data->frames() - _decoded.frame;
}