From 2537a2d959a5872c2e75b322022a7679d24c7e60 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Tue, 2 Jan 2018 21:09:36 +0000 Subject: A previous commit took care to make Decoder::position() not be updated if the data that was emitted from the decoder was not taken by the player. This means that when the decoder moves into its end trim the position will stay where it is (since the player does not take the data). I can't see the point of doing this; the only use of Decoder::position() is to decide what to pass() next (I think). It is also inconvenient because we would like to check Decoder::position() to decide whether to stop passing a decoder since it's in its end trim (not doing this causes #1154). --- src/lib/video_decoder.cc | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) (limited to 'src/lib/video_decoder.cc') diff --git a/src/lib/video_decoder.cc b/src/lib/video_decoder.cc index b9ead52c8..3625e074f 100644 --- a/src/lib/video_decoder.cc +++ b/src/lib/video_decoder.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2012-2016 Carl Hetherington + Copyright (C) 2012-2018 Carl Hetherington This file is part of DCP-o-matic. @@ -59,11 +59,9 @@ VideoDecoder::emit (shared_ptr image, Frame frame) return; } - optional taken; - switch (_content->video->frame_type ()) { case VIDEO_FRAME_TYPE_2D: - taken = Data (ContentVideo (image, frame, EYES_BOTH, PART_WHOLE)); + Data (ContentVideo (image, frame, EYES_BOTH, PART_WHOLE)); break; case VIDEO_FRAME_TYPE_3D: { @@ -71,35 +69,33 @@ VideoDecoder::emit (shared_ptr image, Frame frame) frame this one is. */ bool const same = (_last_emitted && _last_emitted.get() == frame); - taken = Data (ContentVideo (image, frame, same ? EYES_RIGHT : EYES_LEFT, PART_WHOLE)); + Data (ContentVideo (image, frame, same ? EYES_RIGHT : EYES_LEFT, PART_WHOLE)); _last_emitted = frame; break; } case VIDEO_FRAME_TYPE_3D_ALTERNATE: - taken = Data (ContentVideo (image, frame / 2, (frame % 2) ? EYES_RIGHT : EYES_LEFT, PART_WHOLE)); + Data (ContentVideo (image, frame / 2, (frame % 2) ? EYES_RIGHT : EYES_LEFT, PART_WHOLE)); frame /= 2; break; case VIDEO_FRAME_TYPE_3D_LEFT_RIGHT: - taken = Data (ContentVideo (image, frame, EYES_LEFT, PART_LEFT_HALF)); - taken = Data (ContentVideo (image, frame, EYES_RIGHT, PART_RIGHT_HALF)); + Data (ContentVideo (image, frame, EYES_LEFT, PART_LEFT_HALF)); + Data (ContentVideo (image, frame, EYES_RIGHT, PART_RIGHT_HALF)); break; case VIDEO_FRAME_TYPE_3D_TOP_BOTTOM: - taken = Data (ContentVideo (image, frame, EYES_LEFT, PART_TOP_HALF)); - taken = Data (ContentVideo (image, frame, EYES_RIGHT, PART_BOTTOM_HALF)); + Data (ContentVideo (image, frame, EYES_LEFT, PART_TOP_HALF)); + Data (ContentVideo (image, frame, EYES_RIGHT, PART_BOTTOM_HALF)); break; case VIDEO_FRAME_TYPE_3D_LEFT: - taken = Data (ContentVideo (image, frame, EYES_LEFT, PART_WHOLE)); + Data (ContentVideo (image, frame, EYES_LEFT, PART_WHOLE)); break; case VIDEO_FRAME_TYPE_3D_RIGHT: - taken = Data (ContentVideo (image, frame, EYES_RIGHT, PART_WHOLE)); + Data (ContentVideo (image, frame, EYES_RIGHT, PART_WHOLE)); break; default: DCPOMATIC_ASSERT (false); } - if (taken.get_value_or(false)) { - _position = ContentTime::from_frames (frame, _content->active_video_frame_rate ()); - } + _position = ContentTime::from_frames (frame, _content->active_video_frame_rate ()); } void -- cgit v1.2.3