summaryrefslogtreecommitdiff
path: root/src/stereo_picture_mxf_writer.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/stereo_picture_mxf_writer.cc')
-rw-r--r--src/stereo_picture_mxf_writer.cc21
1 files changed, 11 insertions, 10 deletions
diff --git a/src/stereo_picture_mxf_writer.cc b/src/stereo_picture_mxf_writer.cc
index ad029b57..4ea65e05 100644
--- a/src/stereo_picture_mxf_writer.cc
+++ b/src/stereo_picture_mxf_writer.cc
@@ -36,8 +36,8 @@ struct StereoPictureMXFWriter::ASDCPState : public ASDCPStateBase
ASDCP::JP2K::MXFSWriter mxf_writer;
};
-StereoPictureMXFWriter::StereoPictureMXFWriter (PictureMXF* mxf, boost::filesystem::path file, bool overwrite)
- : PictureMXFWriter (mxf, file, overwrite)
+StereoPictureMXFWriter::StereoPictureMXFWriter (PictureMXF* mxf, boost::filesystem::path file, Standard standard, bool overwrite)
+ : PictureMXFWriter (mxf, file, standard, overwrite)
, _state (new StereoPictureMXFWriter::ASDCPState)
, _next_eye (EYE_LEFT)
{
@@ -47,7 +47,7 @@ StereoPictureMXFWriter::StereoPictureMXFWriter (PictureMXF* mxf, boost::filesyst
void
StereoPictureMXFWriter::start (uint8_t* data, int size)
{
- dcp::start (this, _state, _mxf, data, size);
+ dcp::start (this, _state, _standard, _picture_mxf, data, size);
}
/** Write a frame for one eye. Frames must be written left, then right, then left etc.
@@ -84,7 +84,10 @@ StereoPictureMXFWriter::write (uint8_t* data, int size)
_next_eye = _next_eye == EYE_LEFT ? EYE_RIGHT : EYE_LEFT;
- ++_frames_written;
+ if (_next_eye == EYE_LEFT) {
+ ++_frames_written;
+ }
+
return FrameInfo (before_offset, _state->mxf_writer.Tell() - before_offset, hash);
}
@@ -100,20 +103,18 @@ StereoPictureMXFWriter::fake_write (int size)
}
_next_eye = _next_eye == EYE_LEFT ? EYE_RIGHT : EYE_LEFT;
- ++_frames_written;
+ if (_next_eye == EYE_LEFT) {
+ ++_frames_written;
+ }
}
void
StereoPictureMXFWriter::finalize ()
{
- assert (!_finalized);
-
Kumu::Result_t r = _state->mxf_writer.Finalize();
if (ASDCP_FAILURE (r)) {
boost::throw_exception (MXFFileError ("error in finalizing video MXF", _mxf->file().string(), r));
}
- _finalized = true;
- _mxf->set_intrinsic_duration (_frames_written / 2);
- _mxf->set_duration (_frames_written / 2);
+ PictureMXFWriter::finalize ();
}