From 6c3ce5b236a745c9eb9e652bacb2896a96254f81 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Tue, 14 Jul 2015 00:28:59 +0100 Subject: Port 65514eea7705fb12985cef448f08ceb47db6acab from 1.x; failure to handle separate-eye 3D when R comes before L in the playlist. --- src/lib/encoder.cc | 19 ++++++++++++++++++- src/lib/encoder.h | 2 ++ 2 files changed, 20 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/lib/encoder.cc b/src/lib/encoder.cc index 07c97c674..9b195bade 100644 --- a/src/lib/encoder.cc +++ b/src/lib/encoder.cc @@ -64,6 +64,8 @@ Encoder::Encoder (shared_ptr film, weak_ptr j, shared_ptr pv) _empty_condition.notify_all (); } - if (pv->eyes() != EYES_LEFT) { + switch (pv->eyes ()) { + case EYES_BOTH: ++_video_frames_enqueued; + break; + case EYES_LEFT: + _left_done = true; + break; + case EYES_RIGHT: + _right_done = true; + break; + default: + break; + } + + if (_left_done && _right_done) { + ++_video_frames_enqueued; + _left_done = _right_done = false; } _last_player_video = pv; diff --git a/src/lib/encoder.h b/src/lib/encoder.h index 85bc6ae99..47eef823b 100644 --- a/src/lib/encoder.h +++ b/src/lib/encoder.h @@ -100,6 +100,8 @@ private: /** Number of video frames enqueued so far */ int _video_frames_enqueued; + bool _left_done; + bool _right_done; bool _terminate; std::list > _queue; -- cgit v1.2.3