summaryrefslogtreecommitdiff
path: root/src/lib/dcp_decoder.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2023-02-13 22:47:16 +0100
committerCarl Hetherington <cth@carlh.net>2023-02-13 22:47:16 +0100
commita488be44fa7559553036d4b081ad8e115311500b (patch)
tree134bbf1460dee935887f9dff7dc47b87d80039f0 /src/lib/dcp_decoder.cc
parent584192cf457f0280c31bdac164e1058a734d0516 (diff)
Cleanup: extract pass_video().
Diffstat (limited to 'src/lib/dcp_decoder.cc')
-rw-r--r--src/lib/dcp_decoder.cc82
1 files changed, 45 insertions, 37 deletions
diff --git a/src/lib/dcp_decoder.cc b/src/lib/dcp_decoder.cc
index 9064627ba..7baf05dad 100644
--- a/src/lib/dcp_decoder.cc
+++ b/src/lib/dcp_decoder.cc
@@ -139,6 +139,50 @@ DCPDecoder::DCPDecoder (shared_ptr<const Film> film, shared_ptr<const DCPContent
}
+void
+DCPDecoder::pass_video(Frame frame, dcp::Size size)
+{
+ auto const entry_point = (*_reel)->main_picture()->entry_point().get_value_or(0);
+
+ if (_mono_reader) {
+ video->emit (
+ film(),
+ std::make_shared<J2KImageProxy>(
+ _mono_reader->get_frame (entry_point + frame),
+ size,
+ AV_PIX_FMT_XYZ12LE,
+ _forced_reduction
+ ),
+ _offset + frame
+ );
+ } else {
+ video->emit (
+ film(),
+ std::make_shared<J2KImageProxy>(
+ _stereo_reader->get_frame (entry_point + frame),
+ size,
+ dcp::Eye::LEFT,
+ AV_PIX_FMT_XYZ12LE,
+ _forced_reduction
+ ),
+ _offset + frame
+ );
+
+ video->emit (
+ film(),
+ std::make_shared<J2KImageProxy>(
+ _stereo_reader->get_frame (entry_point + frame),
+ size,
+ dcp::Eye::RIGHT,
+ AV_PIX_FMT_XYZ12LE,
+ _forced_reduction
+ ),
+ _offset + frame
+ );
+ }
+}
+
+
bool
DCPDecoder::pass ()
{
@@ -167,43 +211,7 @@ DCPDecoder::pass ()
pass_texts (_next, picture_asset->size());
if ((_mono_reader || _stereo_reader) && (_decode_referenced || !_dcp_content->reference_video())) {
- auto const entry_point = (*_reel)->main_picture()->entry_point().get_value_or(0);
- if (_mono_reader) {
- video->emit (
- film(),
- std::make_shared<J2KImageProxy>(
- _mono_reader->get_frame (entry_point + frame),
- picture_asset->size(),
- AV_PIX_FMT_XYZ12LE,
- _forced_reduction
- ),
- _offset + frame
- );
- } else {
- video->emit (
- film(),
- std::make_shared<J2KImageProxy>(
- _stereo_reader->get_frame (entry_point + frame),
- picture_asset->size(),
- dcp::Eye::LEFT,
- AV_PIX_FMT_XYZ12LE,
- _forced_reduction
- ),
- _offset + frame
- );
-
- video->emit (
- film(),
- std::make_shared<J2KImageProxy>(
- _stereo_reader->get_frame (entry_point + frame),
- picture_asset->size(),
- dcp::Eye::RIGHT,
- AV_PIX_FMT_XYZ12LE,
- _forced_reduction
- ),
- _offset + frame
- );
- }
+ pass_video(frame, picture_asset->size());
}
if (_sound_reader && (_decode_referenced || !_dcp_content->reference_audio())) {