35 #include "mono_mpeg2_picture_asset_writer.h"
37 #include "mpeg2_picture_asset_writer.h"
46 ASDCP::MPEG2::MXFWriter mxf_writer;
52 MonoMPEG2PictureAssetWriter::MonoMPEG2PictureAssetWriter(
MPEG2PictureAsset* asset, boost::filesystem::path file,
bool overwrite)
60 MonoMPEG2PictureAssetWriter::~MonoMPEG2PictureAssetWriter()
65 _state->mxf_writer.Finalize();
72 MonoMPEG2PictureAssetWriter::start(uint8_t
const * data,
int size)
74 dcp::start(
this, _state, _picture_asset, data, size);
75 _picture_asset->set_frame_rate (_picture_asset->edit_rate());
80 MonoMPEG2PictureAssetWriter::write(uint8_t
const * data,
int size)
88 ASDCP::MPEG2::FrameBuffer buffer;
89 buffer.SetData(
const_cast<uint8_t*
>(data), size);
91 buffer.PlaintextOffset(0);
93 auto const before_offset = _state->mxf_writer.Tell();
96 auto const r = _state->mxf_writer.WriteFrame(buffer, _crypto_context->context(), _crypto_context->hmac(), &hash);
97 if (ASDCP_FAILURE(r)) {
98 boost::throw_exception(
MXFFileError(
"error in writing video MXF",
_file.string(), r));
104 _state->mxf_writer.Tell() - before_offset,
109 buffer.TemporalOffset()
115 MonoMPEG2PictureAssetWriter::fake_write(
MPEG2FrameInfo const& info)
122 auto r = _state->mxf_writer.FakeWriteFrame(info.size, info.type, info.gop_start, info.closed_gop, info.temporal_offset);
123 if (ASDCP_FAILURE(r)) {
124 boost::throw_exception(
MXFFileError(
"error in writing video MXF",
_file.string(), r));
135 auto r = _state->mxf_writer.Finalize();
136 if (ASDCP_FAILURE(r)) {
137 boost::throw_exception(
MXFFileError(
"error in finalizing video MXF",
_file.string(), r));
boost::filesystem::path _file
void set_file(boost::filesystem::path file) const
An exception related to an MXF file.
int64_t _intrinsic_duration
Namespace for everything in libdcp.