From 84012cdd64f451891febd36154b7226ea21a899b Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Wed, 21 Nov 2018 02:45:30 +0000 Subject: Put Film pointer into Decoder. --- src/lib/video_mxf_decoder.cc | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) (limited to 'src/lib/video_mxf_decoder.cc') diff --git a/src/lib/video_mxf_decoder.cc b/src/lib/video_mxf_decoder.cc index 7d9656dd5..3c4002ca2 100644 --- a/src/lib/video_mxf_decoder.cc +++ b/src/lib/video_mxf_decoder.cc @@ -31,8 +31,9 @@ using boost::shared_ptr; using boost::optional; -VideoMXFDecoder::VideoMXFDecoder (shared_ptr content) - : _content (content) +VideoMXFDecoder::VideoMXFDecoder (shared_ptr film, shared_ptr content) + : Decoder (film) + , _content (content) { video.reset (new VideoDecoder (this, content)); @@ -68,18 +69,19 @@ VideoMXFDecoder::VideoMXFDecoder (shared_ptr content) } bool -VideoMXFDecoder::pass (shared_ptr film) +VideoMXFDecoder::pass () { - double const vfr = _content->active_video_frame_rate (film); + double const vfr = _content->active_video_frame_rate (film()); int64_t const frame = _next.frames_round (vfr); + if (frame >= _content->video->length()) { return true; } if (_mono_reader) { video->emit ( - film, + film(), shared_ptr ( new J2KImageProxy (_mono_reader->get_frame(frame), _size, AV_PIX_FMT_XYZ12LE, optional()) ), @@ -87,14 +89,14 @@ VideoMXFDecoder::pass (shared_ptr film) ); } else { video->emit ( - film, + film(), shared_ptr ( new J2KImageProxy (_stereo_reader->get_frame(frame), _size, dcp::EYE_LEFT, AV_PIX_FMT_XYZ12LE, optional()) ), frame ); video->emit ( - film, + film(), shared_ptr ( new J2KImageProxy (_stereo_reader->get_frame(frame), _size, dcp::EYE_RIGHT, AV_PIX_FMT_XYZ12LE, optional()) ), @@ -107,8 +109,8 @@ VideoMXFDecoder::pass (shared_ptr film) } void -VideoMXFDecoder::seek (shared_ptr film, ContentTime t, bool accurate) +VideoMXFDecoder::seek (ContentTime t, bool accurate) { - Decoder::seek (film, t, accurate); + Decoder::seek (t, accurate); _next = t; } -- cgit v1.2.3