summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2018-02-09 17:07:16 +0000
committerCarl Hetherington <cth@carlh.net>2018-02-09 17:07:16 +0000
commit11a6decd652158b2288de17dc1aeafcd860fdfef (patch)
tree54191ccd7950d0b78d3c54b702c11aea84a656f9
parent47415dd6c5ea219518686ee4805098fc79bbbaaa (diff)
Always pre-roll when seeking in DCPs; I don't think the performance
hit is anything to worry about (especially compared to the time taken to decode the next frame).
-rw-r--r--ChangeLog2
-rw-r--r--src/lib/dcp_decoder.cc34
2 files changed, 18 insertions, 18 deletions
diff --git a/ChangeLog b/ChangeLog
index 65bdf5eeb..faba489d4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
2018-02-09 Carl Hetherington <cth@carlh.net>
+ * Always pre-roll when seeking in DCPs (#1085).
+
* Version 2.11.52 released.
2018-02-09 Carl Hetherington <cth@carlh.net>
diff --git a/src/lib/dcp_decoder.cc b/src/lib/dcp_decoder.cc
index c1c7780bb..2ffe11065 100644
--- a/src/lib/dcp_decoder.cc
+++ b/src/lib/dcp_decoder.cc
@@ -259,30 +259,28 @@ DCPDecoder::seek (ContentTime t, bool accurate)
_offset = 0;
get_readers ();
- if (accurate) {
- int const pre_roll_seconds = 2;
+ int const pre_roll_seconds = 2;
- /* Pre-roll for subs */
+ /* Pre-roll for subs */
- ContentTime pre = t - ContentTime::from_seconds (pre_roll_seconds);
- if (pre < ContentTime()) {
- pre = ContentTime ();
- }
+ ContentTime pre = t - ContentTime::from_seconds (pre_roll_seconds);
+ if (pre < ContentTime()) {
+ pre = ContentTime ();
+ }
- /* Seek to pre-roll position */
+ /* Seek to pre-roll position */
- while (_reel != _reels.end() && pre >= ContentTime::from_frames ((*_reel)->main_picture()->duration(), _dcp_content->active_video_frame_rate ())) {
- pre -= ContentTime::from_frames ((*_reel)->main_picture()->duration(), _dcp_content->active_video_frame_rate ());
- next_reel ();
- }
+ while (_reel != _reels.end() && pre >= ContentTime::from_frames ((*_reel)->main_picture()->duration(), _dcp_content->active_video_frame_rate ())) {
+ pre -= ContentTime::from_frames ((*_reel)->main_picture()->duration(), _dcp_content->active_video_frame_rate ());
+ next_reel ();
+ }
- /* Pass subtitles in the pre-roll */
+ /* Pass subtitles in the pre-roll */
- double const vfr = _dcp_content->active_video_frame_rate ();
- for (int i = 0; i < pre_roll_seconds * vfr; ++i) {
- pass_subtitles (pre);
- pre += ContentTime::from_frames (1, vfr);
- }
+ double const vfr = _dcp_content->active_video_frame_rate ();
+ for (int i = 0; i < pre_roll_seconds * vfr; ++i) {
+ pass_subtitles (pre);
+ pre += ContentTime::from_frames (1, vfr);
}
/* Seek to correct position */