diff options
| author | Carl Hetherington <cth@carlh.net> | 2017-08-03 17:54:06 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2017-08-14 21:07:49 +0100 |
| commit | 0253b4e45c71a1c2e2a8bffaf1c3cb84a0a3e41a (patch) | |
| tree | 85ca9af20c85ca04a221ca9023c0d2980ffeeca7 /src/lib/dcp_decoder.cc | |
| parent | e952a7b0681d1ad2fc6ebcd0cd7231bf59bbe043 (diff) | |
Basics of forced reduction of JPEG2000 decode resolution.
Diffstat (limited to 'src/lib/dcp_decoder.cc')
| -rw-r--r-- | src/lib/dcp_decoder.cc | 32 |
1 files changed, 29 insertions, 3 deletions
diff --git a/src/lib/dcp_decoder.cc b/src/lib/dcp_decoder.cc index c7294bda7..ef40f2ec7 100644 --- a/src/lib/dcp_decoder.cc +++ b/src/lib/dcp_decoder.cc @@ -48,6 +48,7 @@ using std::list; using std::cout; using boost::shared_ptr; using boost::dynamic_pointer_cast; +using boost::optional; DCPDecoder::DCPDecoder (shared_ptr<const DCPContent> c, shared_ptr<Log> log) : DCP (c) @@ -100,20 +101,39 @@ DCPDecoder::pass () if (_mono_reader) { video->emit ( shared_ptr<ImageProxy> ( - new J2KImageProxy (_mono_reader->get_frame (entry_point + frame), asset->size(), AV_PIX_FMT_XYZ12LE) + new J2KImageProxy ( + _mono_reader->get_frame (entry_point + frame), + asset->size(), + AV_PIX_FMT_XYZ12LE, + _forced_reduction + ) ), _offset + frame ); } else { video->emit ( shared_ptr<ImageProxy> ( - new J2KImageProxy (_stereo_reader->get_frame (entry_point + frame), asset->size(), dcp::EYE_LEFT, AV_PIX_FMT_XYZ12LE)), + new J2KImageProxy ( + _stereo_reader->get_frame (entry_point + frame), + asset->size(), + dcp::EYE_LEFT, + AV_PIX_FMT_XYZ12LE, + _forced_reduction + ) + ), _offset + frame ); video->emit ( shared_ptr<ImageProxy> ( - new J2KImageProxy (_stereo_reader->get_frame (entry_point + frame), asset->size(), dcp::EYE_RIGHT, AV_PIX_FMT_XYZ12LE)), + new J2KImageProxy ( + _stereo_reader->get_frame (entry_point + frame), + asset->size(), + dcp::EYE_RIGHT, + AV_PIX_FMT_XYZ12LE, + _forced_reduction + ) + ), _offset + frame ); } @@ -234,3 +254,9 @@ DCPDecoder::set_decode_referenced () { _decode_referenced = true; } + +void +DCPDecoder::set_forced_reduction (optional<int> reduction) +{ + _forced_reduction = reduction; +} |
