diff options
| author | Carl Hetherington <cth@carlh.net> | 2017-07-28 15:36:40 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2017-07-28 15:36:40 +0100 |
| commit | 280ca5218e193a3c54e5963dda1a80c6e78cc382 (patch) | |
| tree | 7c9b1e352ec03e4ba43d26cc3123a0db03e9ee53 /src/lib/player.cc | |
| parent | 7d651ec877927e0887da48ce441e5c5158e1f34f (diff) | |
Do repeat in the player rather than trying to do it in VideoDecoder.
Trying to repeat in VideoDecoder is the wrong side of the distinction
between content and DCP time; the repeat is for the DCP and VideoDecoder
should be emitting in terms of the source.
Diffstat (limited to 'src/lib/player.cc')
| -rw-r--r-- | src/lib/player.cc | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/lib/player.cc b/src/lib/player.cc index a1adee0b0..db09d1768 100644 --- a/src/lib/player.cc +++ b/src/lib/player.cc @@ -645,9 +645,8 @@ Player::video (weak_ptr<Piece> wp, ContentVideo video) return; } - /* Time and period of the frame we will emit */ + /* Time of the first frame we will emit */ DCPTime const time = content_video_to_dcp (piece, video.frame); - DCPTimePeriod const period (time, time + one_video_frame()); /* Discard if it's outside the content's period or if it's before the last accurate seek */ if ( @@ -687,7 +686,11 @@ Player::video (weak_ptr<Piece> wp, ContentVideo video) ) ); - emit_video (_last_video[wp], time); + DCPTime t = time; + for (int i = 0; i < frc.repeat; ++i) { + emit_video (_last_video[wp], t); + t += one_video_frame (); + } } void |
