From f285ea055151fae2e13d71c2d0282201197a9143 Mon Sep 17 00:00:00 2001 From: jhurst Date: Mon, 3 Jun 2013 00:12:31 +0000 Subject: the big-pre-as-02-refactor --- src/AS_DCP_TimedText.cpp | 74 ++++++++++++++++++++++++++++++++---------------- 1 file changed, 50 insertions(+), 24 deletions(-) (limited to 'src/AS_DCP_TimedText.cpp') diff --git a/src/AS_DCP_TimedText.cpp b/src/AS_DCP_TimedText.cpp index 694676d..56407ed 100644 --- a/src/AS_DCP_TimedText.cpp +++ b/src/AS_DCP_TimedText.cpp @@ -1,5 +1,5 @@ /* -Copyright (c) 2008-2012, John Hurst +Copyright (c) 2008-2013, John Hurst All rights reserved. Redistribution and use in source and binary forms, with or without @@ -137,6 +137,8 @@ public: memset(&m_TDesc.AssetID, 0, UUIDlen); } + virtual ~h__Reader() {} + Result_t OpenRead(const char*); Result_t MD_to_TimedText_TDesc(TimedText::TimedTextDescriptor& TDesc); Result_t ReadTimedTextResource(FrameBuffer& FrameBuf, AESDecContext* Ctx, HMACContext* HMAC); @@ -216,12 +218,6 @@ ASDCP::TimedText::MXFReader::h__Reader::OpenRead(char const* filename) result = MD_to_TimedText_TDesc(m_TDesc); } - if( ASDCP_SUCCESS(result) ) - result = InitMXFIndex(); - - if( ASDCP_SUCCESS(result) ) - result = InitInfo(); - return result; } @@ -276,7 +272,7 @@ ASDCP::TimedText::MXFReader::h__Reader::ReadAncillaryResource(const byte_t* uuid // Look up the partition start in the RIP using the SID. // Count the sequence length in because this is the sequence // value needed to complete the HMAC. - for ( pi = m_HeaderPart.m_RIP.PairArray.begin(); pi != m_HeaderPart.m_RIP.PairArray.end(); ++pi, ++sequence ) + for ( pi = m_RIP.PairArray.begin(); pi != m_RIP.PairArray.end(); ++pi, ++sequence ) { if ( (*pi).BodySID == DescObject->EssenceStreamID ) { @@ -344,13 +340,13 @@ ASDCP::TimedText::MXFReader::~MXFReader() // Warning: direct manipulation of MXF structures can interfere // with the normal operation of the wrapper. Caveat emptor! // -ASDCP::MXF::OPAtomHeader& -ASDCP::TimedText::MXFReader::OPAtomHeader() +ASDCP::MXF::OP1aHeader& +ASDCP::TimedText::MXFReader::OP1aHeader() { if ( m_Reader.empty() ) { - assert(g_OPAtomHeader); - return *g_OPAtomHeader; + assert(g_OP1aHeader); + return *g_OP1aHeader; } return m_Reader->m_HeaderPart; @@ -368,7 +364,22 @@ ASDCP::TimedText::MXFReader::OPAtomIndexFooter() return *g_OPAtomIndexFooter; } - return m_Reader->m_FooterPart; + return m_Reader->m_IndexAccess; +} + +// Warning: direct manipulation of MXF structures can interfere +// with the normal operation of the wrapper. Caveat emptor! +// +ASDCP::MXF::RIP& +ASDCP::TimedText::MXFReader::RIP() +{ + if ( m_Reader.empty() ) + { + assert(g_RIP); + return *g_RIP; + } + + return m_Reader->m_RIP; } // Open the file for reading. The file must exist. Returns error if the @@ -458,7 +469,7 @@ void ASDCP::TimedText::MXFReader::DumpIndex(FILE* stream) const { if ( m_Reader->m_File.IsOpen() ) - m_Reader->m_FooterPart.Dump(stream); + m_Reader->m_IndexAccess.Dump(stream); } // @@ -479,7 +490,7 @@ ASDCP::TimedText::MXFReader::Close() const // -class ASDCP::TimedText::MXFWriter::h__Writer : public ASDCP::h__Writer +class ASDCP::TimedText::MXFWriter::h__Writer : public ASDCP::h__ASDCPWriter { ASDCP_NO_COPY_CONSTRUCT(h__Writer); h__Writer(); @@ -489,11 +500,11 @@ public: byte_t m_EssenceUL[SMPTE_UL_LENGTH]; ui32_t m_EssenceStreamID; - h__Writer(const Dictionary& d) : ASDCP::h__Writer(d), m_EssenceStreamID(10) { + h__Writer(const Dictionary& d) : ASDCP::h__ASDCPWriter(d), m_EssenceStreamID(10) { memset(m_EssenceUL, 0, SMPTE_UL_LENGTH); } - ~h__Writer(){} + virtual ~h__Writer() {} Result_t OpenWrite(const char*, ui32_t HeaderSize); Result_t SetSourceStream(const TimedTextDescriptor&); @@ -637,11 +648,11 @@ ASDCP::TimedText::MXFWriter::h__Writer::WriteAncillaryResource(const ASDCP::Time MXF::Partition GSPart(m_Dict); GSPart.ThisPartition = here; - GSPart.PreviousPartition = m_HeaderPart.m_RIP.PairArray.back().ByteOffset; + GSPart.PreviousPartition = m_RIP.PairArray.back().ByteOffset; GSPart.BodySID = m_EssenceStreamID; GSPart.OperationalPattern = m_HeaderPart.OperationalPattern; - m_HeaderPart.m_RIP.PairArray.push_back(RIP::Pair(m_EssenceStreamID++, here)); + m_RIP.PairArray.push_back(RIP::Pair(m_EssenceStreamID++, here)); GSPart.EssenceContainers.push_back(UL(m_Dict->ul(MDD_TimedTextEssence))); UL TmpUL(m_Dict->ul(MDD_GenericStreamPartition)); Result_t result = GSPart.WriteToFile(m_File, TmpUL); @@ -663,7 +674,7 @@ ASDCP::TimedText::MXFWriter::h__Writer::Finalize() m_FramesWritten = m_TDesc.ContainerDuration; m_State.Goto_FINAL(); - return WriteMXFFooter(); + return WriteASDCPFooter(); } @@ -680,13 +691,13 @@ ASDCP::TimedText::MXFWriter::~MXFWriter() // Warning: direct manipulation of MXF structures can interfere // with the normal operation of the wrapper. Caveat emptor! // -ASDCP::MXF::OPAtomHeader& -ASDCP::TimedText::MXFWriter::OPAtomHeader() +ASDCP::MXF::OP1aHeader& +ASDCP::TimedText::MXFWriter::OP1aHeader() { if ( m_Writer.empty() ) { - assert(g_OPAtomHeader); - return *g_OPAtomHeader; + assert(g_OP1aHeader); + return *g_OP1aHeader; } return m_Writer->m_HeaderPart; @@ -707,6 +718,21 @@ ASDCP::TimedText::MXFWriter::OPAtomIndexFooter() return m_Writer->m_FooterPart; } +// Warning: direct manipulation of MXF structures can interfere +// with the normal operation of the wrapper. Caveat emptor! +// +ASDCP::MXF::RIP& +ASDCP::TimedText::MXFWriter::RIP() +{ + if ( m_Writer.empty() ) + { + assert(g_RIP); + return *g_RIP; + } + + return m_Writer->m_RIP; +} + // Open the file for writing. The file must not exist. Returns error if // the operation cannot be completed. ASDCP::Result_t -- cgit v1.2.3