summaryrefslogtreecommitdiff
path: root/src/lib/video_decoder.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2016-01-24 23:53:22 +0000
committerCarl Hetherington <cth@carlh.net>2016-01-24 23:53:22 +0000
commitaebfa24afe42d80693df66318e5d2818ebf5989b (patch)
tree8cbf568cbfbc371a0963bff313741776d87a934e /src/lib/video_decoder.cc
parent952dc629d05500e45141239796458b450d4de895 (diff)
parent468887f4c0994a58032f27018b622021131d1e8c (diff)
Merge branch 'master' of ssh://git.carlh.net/home/carl/git/dcpomatic
Diffstat (limited to 'src/lib/video_decoder.cc')
-rw-r--r--src/lib/video_decoder.cc12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/lib/video_decoder.cc b/src/lib/video_decoder.cc
index 1de2cd806..38b9e8ced 100644
--- a/src/lib/video_decoder.cc
+++ b/src/lib/video_decoder.cc
@@ -247,11 +247,6 @@ VideoDecoder::video (shared_ptr<const ImageProxy> image, Frame frame)
_video_content->film()->log()->log (String::compose ("VD receives %1", frame), LogEntry::TYPE_DEBUG_DECODE);
- /* We may receive the same frame index twice for 3D, and we need to know
- when that happens.
- */
- bool const same = (!_decoded_video.empty() && frame == _decoded_video.back().frame);
-
/* Work out what we are going to push into _decoded_video next */
list<ContentVideo> to_push;
switch (_video_content->video_frame_type ()) {
@@ -259,8 +254,14 @@ VideoDecoder::video (shared_ptr<const ImageProxy> image, Frame frame)
to_push.push_back (ContentVideo (image, EYES_BOTH, PART_WHOLE, frame));
break;
case VIDEO_FRAME_TYPE_3D_ALTERNATE:
+ {
+ /* We receive the same frame index twice for 3D-alternate; hence we know which
+ frame this one is.
+ */
+ bool const same = (!_decoded_video.empty() && frame == _decoded_video.back().frame);
to_push.push_back (ContentVideo (image, same ? EYES_RIGHT : EYES_LEFT, PART_WHOLE, frame));
break;
+ }
case VIDEO_FRAME_TYPE_3D_LEFT_RIGHT:
to_push.push_back (ContentVideo (image, EYES_LEFT, PART_LEFT_HALF, frame));
to_push.push_back (ContentVideo (image, EYES_RIGHT, PART_RIGHT_HALF, frame));
@@ -318,6 +319,7 @@ VideoDecoder::video (shared_ptr<const ImageProxy> image, Frame frame)
break;
case VIDEO_FRAME_TYPE_3D_RIGHT:
fill_one_eye (from.get(), to.get (), EYES_RIGHT);
+ break;
}
}