- } else if (delta_frames < 0) {
- /* This data comes before the seek time. Throw some data away */
- Frame const to_discard = min (-delta_frames, static_cast<Frame> (data->frames()));
- Frame const to_keep = data->frames() - to_discard;
- if (to_keep == 0) {
- /* We have to throw all this data away, so keep _seek_reference and
- try again next time some data arrives.
- */
- return;
- }
- shared_ptr<AudioBuffers> trimmed (new AudioBuffers (data->channels(), to_keep));
- trimmed->copy_from (data.get(), to_keep, to_discard, 0);
- data = trimmed;
- time += ContentTime::from_frames (to_discard, frame_rate);