summaryrefslogtreecommitdiff
path: root/asdcplib/src/h__Writer.cpp
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2016-01-04 16:19:04 +0000
committerCarl Hetherington <cth@carlh.net>2016-01-04 16:19:04 +0000
commitf4802823b481b47a240002d086a5caefee3e4b61 (patch)
tree06f7eedc862fd9cc1b083da91b753bded5fd8914 /asdcplib/src/h__Writer.cpp
parentfba3fceee2203833b74631a951ec1364521630be (diff)
Fix new asdcplib to build.
Diffstat (limited to 'asdcplib/src/h__Writer.cpp')
-rwxr-xr-xasdcplib/src/h__Writer.cpp27
1 files changed, 21 insertions, 6 deletions
diff --git a/asdcplib/src/h__Writer.cpp b/asdcplib/src/h__Writer.cpp
index c0ed2d3b..12f68f05 100755
--- a/asdcplib/src/h__Writer.cpp
+++ b/asdcplib/src/h__Writer.cpp
@@ -107,7 +107,7 @@ ASDCP::h__ASDCPWriter::CreateBodyPart(const MXF::Rational& EditRate, ui32_t Byte
UL OPAtomUL(m_Dict->ul(MDD_OPAtom));
m_BodyPart.OperationalPattern = OPAtomUL;
m_RIP.PairArray.push_back(RIP::PartitionPair(1, m_BodyPart.ThisPartition)); // Second RIP Entry
-
+
UL BodyUL(m_Dict->ul(MDD_ClosedCompleteBodyPartition));
result = m_BodyPart.WriteToFile(m_File, BodyUL);
}
@@ -168,10 +168,19 @@ ASDCP::h__ASDCPWriter::WriteASDCPHeader(const std::string& PackageLabel, const U
//
Result_t
ASDCP::h__ASDCPWriter::WriteEKLVPacket(const ASDCP::FrameBuffer& FrameBuf,const byte_t* EssenceUL,
- AESEncContext* Ctx, HMACContext* HMAC)
+ AESEncContext* Ctx, HMACContext* HMAC, std::string* hash)
{
return Write_EKLV_Packet(m_File, *m_Dict, m_HeaderPart, m_Info, m_CtFrameBuf, m_FramesWritten,
- m_StreamOffset, FrameBuf, EssenceUL, Ctx, HMAC);
+ m_StreamOffset, FrameBuf, EssenceUL, Ctx, HMAC, hash);
+}
+
+Result_t
+ASDCP::h__ASDCPWriter::FakeWriteEKLVPacket(int size)
+{
+ m_StreamOffset += size;
+ m_File.Seek(size, Kumu::SP_POS);
+
+ return RESULT_OK;
}
// standard method of writing the header and footer of a completed MXF file
@@ -227,14 +236,16 @@ ASDCP::h__ASDCPWriter::WriteASDCPFooter()
// standard method of writing a plaintext or encrypted frame
Result_t
-ASDCP::Write_EKLV_Packet(Kumu::FileWriter& File, const ASDCP::Dictionary& Dict, const MXF::OP1aHeader& HeaderPart,
+ASDCP::Write_EKLV_Packet(Kumu::FileWriter& File, const ASDCP::Dictionary& Dict, const MXF::OP1aHeader&,
const ASDCP::WriterInfo& Info, ASDCP::FrameBuffer& CtFrameBuf, ui32_t& FramesWritten,
ui64_t & StreamOffset, const ASDCP::FrameBuffer& FrameBuf, const byte_t* EssenceUL,
- AESEncContext* Ctx, HMACContext* HMAC)
+ AESEncContext* Ctx, HMACContext* HMAC, std::string* hash)
{
Result_t result = RESULT_OK;
IntegrityPack IntPack;
+ File.StartHashing();
+
byte_t overhead[128];
Kumu::MemIOWriter Overhead(overhead, 128);
@@ -354,7 +365,7 @@ ASDCP::Write_EKLV_Packet(Kumu::FileWriter& File, const ASDCP::Dictionary& Dict,
if ( ASDCP_SUCCESS(result) )
result = File.Writev(Overhead.Data(), Overhead.Length());
-
+
if ( ASDCP_SUCCESS(result) )
result = File.Writev((byte_t*)FrameBuf.RoData(), FrameBuf.Size());
@@ -365,6 +376,10 @@ ASDCP::Write_EKLV_Packet(Kumu::FileWriter& File, const ASDCP::Dictionary& Dict,
if ( ASDCP_SUCCESS(result) )
result = File.Writev();
+ if (hash) {
+ *hash = File.StopHashing();
+ }
+
return result;
}