+ if (_positions[stream] == 0) {
+ /* This is the first data we have received since initialisation or seek. Set
+ the position based on the ContentTime that was given. After this first time
+ we just count samples, as it seems that ContentTimes are unreliable from
+ FFmpegDecoder (not quite continuous; perhaps due to some rounding error).
+ */
+ if (_content->delay() > 0) {
+ /* Insert silence to give the delay */
+ silence (_content->delay ());
+ }
+ time += ContentTime::from_seconds (_content->delay() / 1000.0);
+ _positions[stream] = time.frames_round (_content->resampled_frame_rate ());
+ }