X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2FAS_DCP_internal.h;h=6fa4fa19b58901de33943cc18e6584849becac63;hb=12051ad32d54a72a1a8682e15af1a185a61f1c61;hp=493fae6efa69e00c78d4818f38609bd6550ab8c6;hpb=f285ea055151fae2e13d71c2d0282201197a9143;p=asdcplib.git diff --git a/src/AS_DCP_internal.h b/src/AS_DCP_internal.h index 493fae6..6fa4fa1 100755 --- a/src/AS_DCP_internal.h +++ b/src/AS_DCP_internal.h @@ -128,10 +128,33 @@ namespace ASDCP 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); @@ -145,6 +168,7 @@ namespace ASDCP ui64_t & StreamOffset, const ASDCP::FrameBuffer& FrameBuf, const byte_t* EssenceUL, AESEncContext* Ctx, HMACContext* HMAC); + // class KLReader : public ASDCP::KLVPacket { @@ -294,7 +318,7 @@ namespace ASDCP result = m_File.Seek(FilePosition); } - if( KM_SUCCESS(result) ) + if ( KM_SUCCESS(result) ) result = ReadEKLVPacket(FrameNum, FrameNum + 1, FrameBuf, EssenceUL, Ctx, HMAC); return result; @@ -338,8 +362,9 @@ namespace ASDCP } }; - + //------------------------------------------------------------------------------------------ // + // template struct TrackSet @@ -433,7 +458,9 @@ namespace ASDCP inline Result_t Goto_FINAL() { Goto_body(ST_RUNNING, ST_FINAL); } }; + //------------------------------------------------------------------------------------------ // + // template class TrackFileWriter @@ -447,7 +474,6 @@ namespace ASDCP ui32_t m_HeaderSize; HeaderType m_HeaderPart; RIP m_RIP; - ui64_t m_EssenceStart; MaterialPackage* m_MaterialPackage; SourcePackage* m_FilePackage; @@ -466,13 +492,15 @@ namespace ASDCP 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; } @@ -724,13 +752,6 @@ namespace ASDCP 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() { @@ -741,6 +762,9 @@ namespace ASDCP }/// namespace MXF + //------------------------------------------------------------------------------------------ + // + // class h__ASDCPReader : public MXF::TrackFileReader { @@ -773,14 +797,15 @@ namespace ASDCP 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(); };