Result_t MD_to_WriterInfo(MXF::Identification*, WriterInfo&);
Result_t MD_to_CryptoInfo(MXF::CryptographicContext*, WriterInfo&, const Dictionary&);
+
Result_t EncryptFrameBuffer(const ASDCP::FrameBuffer&, ASDCP::FrameBuffer&, AESEncContext*);
Result_t DecryptFrameBuffer(const ASDCP::FrameBuffer&, ASDCP::FrameBuffer&, AESDecContext*);
+
+ Result_t MD_to_JP2K_PDesc(const ASDCP::MXF::RGBAEssenceDescriptor& EssenceDescriptor,
+ const ASDCP::MXF::JPEG2000PictureSubDescriptor& EssenceSubDescriptor,
+ const ASDCP::Rational& EditRate, const ASDCP::Rational& SampleRate,
+ ASDCP::JP2K::PictureDescriptor& PDesc);
+
+ Result_t JP2K_PDesc_to_MD(const JP2K::PictureDescriptor& PDesc,
+ const ASDCP::Dictionary& dict,
+ ASDCP::MXF::RGBAEssenceDescriptor *EssenceDescriptor,
+ ASDCP::MXF::JPEG2000PictureSubDescriptor *EssenceSubDescriptor);
+
+ Result_t MD_to_JP2K_PDesc(const ASDCP::MXF::CDCIEssenceDescriptor& EssenceDescriptor,
+ const ASDCP::MXF::JPEG2000PictureSubDescriptor& EssenceSubDescriptor,
+ const ASDCP::Rational& EditRate, const ASDCP::Rational& SampleRate,
+ ASDCP::JP2K::PictureDescriptor& PDesc);
+
+ Result_t JP2K_PDesc_to_MD(const JP2K::PictureDescriptor& PDesc,
+ const ASDCP::Dictionary& dict,
+ ASDCP::MXF::CDCIEssenceDescriptor *EssenceDescriptor,
+ ASDCP::MXF::JPEG2000PictureSubDescriptor *EssenceSubDescriptor);
+
Result_t PCM_ADesc_to_MD(PCM::AudioDescriptor& ADesc, ASDCP::MXF::WaveAudioDescriptor* ADescObj);
Result_t MD_to_PCM_ADesc(ASDCP::MXF::WaveAudioDescriptor* ADescObj, PCM::AudioDescriptor& ADesc);
+
void AddDMScrypt(Partition& HeaderPart, SourcePackage& Package,
WriterInfo& Descr, const UL& WrappingUL, const Dictionary*& Dict);
ui64_t & StreamOffset, const ASDCP::FrameBuffer& FrameBuf, const byte_t* EssenceUL,
AESEncContext* Ctx, HMACContext* HMAC);
+
//
class KLReader : public ASDCP::KLVPacket
{
result = m_File.Seek(FilePosition);
}
- if( KM_SUCCESS(result) )
+ if ( KM_SUCCESS(result) )
result = ReadEKLVPacket(FrameNum, FrameNum + 1, FrameBuf, EssenceUL, Ctx, HMAC);
return result;
}
};
-
+ //------------------------------------------------------------------------------------------
//
+
//
template <class ClipT>
struct TrackSet
inline Result_t Goto_FINAL() { Goto_body(ST_RUNNING, ST_FINAL); }
};
+ //------------------------------------------------------------------------------------------
//
+
//
template <class HeaderType>
class TrackFileWriter
ui32_t m_HeaderSize;
HeaderType m_HeaderPart;
RIP m_RIP;
- ui64_t m_EssenceStart;
MaterialPackage* m_MaterialPackage;
SourcePackage* m_FilePackage;
TrackFileWriter(const Dictionary& d) :
m_Dict(&d), m_HeaderPart(m_Dict), m_RIP(m_Dict),
- m_HeaderSize(0), m_EssenceStart(0), m_EssenceDescriptor(0),
+ m_HeaderSize(0), m_EssenceDescriptor(0),
m_FramesWritten(0), m_StreamOffset(0)
{
default_md_object_init();
}
- virtual ~TrackFileWriter() {}
+ virtual ~TrackFileWriter() {
+ Close();
+ }
const MXF::RIP& GetRIP() const { return m_RIP; }
m_FilePackage->Descriptor = m_EssenceDescriptor->InstanceUID;
}
- //
- Result_t WriteEKLVPacket(const ASDCP::FrameBuffer& FrameBuf,const byte_t* EssenceUL, AESEncContext* Ctx, HMACContext* HMAC)
- {
- return Write_EKLV_Packet(m_File, *m_Dict, m_HeaderPart, m_Info, m_CtFrameBuf, m_FramesWritten,
- m_StreamOffset, FrameBuf, EssenceUL, Ctx, HMAC);
- }
-
//
void Close()
{
}/// namespace MXF
+ //------------------------------------------------------------------------------------------
+ //
+
//
class h__ASDCPReader : public MXF::TrackFileReader<OP1aHeader, OPAtomIndexFooter>
{
h__ASDCPWriter(const Dictionary&);
virtual ~h__ASDCPWriter();
- Result_t CreateBodyPart(const MXF::Rational& EditRate, ui32_t BytesPerEditUnit = 0);
-
// all the above for a single source clip
Result_t WriteASDCPHeader(const std::string& PackageLabel, const UL& WrappingUL,
const std::string& TrackName, const UL& EssenceUL,
const UL& DataDefinition, const MXF::Rational& EditRate,
ui32_t TCFrameRate, ui32_t BytesPerEditUnit = 0);
+ Result_t CreateBodyPart(const MXF::Rational& EditRate, ui32_t BytesPerEditUnit = 0);
+ Result_t WriteEKLVPacket(const ASDCP::FrameBuffer& FrameBuf,const byte_t* EssenceUL,
+ AESEncContext* Ctx, HMACContext* HMAC);
Result_t WriteASDCPFooter();
};