diff options
| author | jhurst <jhurst@cinecert.com> | 2007-05-05 23:51:23 +0000 |
|---|---|---|
| committer | jhurst <> | 2007-05-05 23:51:23 +0000 |
| commit | 27915a74438fcf264d8dfd621dd5e79fa4065813 (patch) | |
| tree | d55b373992b5f2b929840d854e0dd7817b1b5ecc /src/TimedText_Parser.cpp | |
| parent | b072ecf1205c9b00eb8cd8b9370917d52a99927d (diff) | |
new stuff
Diffstat (limited to 'src/TimedText_Parser.cpp')
| -rw-r--r-- | src/TimedText_Parser.cpp | 131 |
1 files changed, 131 insertions, 0 deletions
diff --git a/src/TimedText_Parser.cpp b/src/TimedText_Parser.cpp new file mode 100644 index 0000000..86236d5 --- /dev/null +++ b/src/TimedText_Parser.cpp @@ -0,0 +1,131 @@ +/* +Copyright (c) 2007, John Hurst +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +/*! \file AS_DCP_TimedText.cpp + \version $Id$ + \brief AS-DCP library, PCM essence reader and writer implementation +*/ + + +#include "AS_DCP_internal.h" +#include "AS_DCP_TimedText.h" +#include "KM_xml.h" + +using namespace Kumu; +using namespace ASDCP; + +//------------------------------------------------------------------------------------------ + +class ASDCP::TimedText::DCSubtitleParser::h__DCSubtitleParser +{ + ui32_t m_FileReadCount; + + ASDCP_NO_COPY_CONSTRUCT(h__DCSubtitleParser); + +public: + TimedTextDescriptor m_TDesc; + + h__DCSubtitleParser() : m_FileReadCount(0) + { + memset(&m_TDesc, 0, sizeof(m_TDesc)); + } + + ~h__DCSubtitleParser() + { + Close(); + } + + Result_t OpenRead(const char* filename); + void Close() {} + + Result_t Reset() + { + m_FileReadCount = 0; + return RESULT_OK; + } + + Result_t ReadFrame(FrameBuffer&); +}; + +//------------------------------------------------------------------------------------------ + +ASDCP::TimedText::DCSubtitleParser::DCSubtitleParser() +{ +} + +ASDCP::TimedText::DCSubtitleParser::~DCSubtitleParser() +{ +} + +// Opens the stream for reading, parses enough data to provide a complete +// set of stream metadata for the MXFWriter below. +ASDCP::Result_t +ASDCP::TimedText::DCSubtitleParser::OpenRead(const char* filename) const +{ + const_cast<ASDCP::TimedText::DCSubtitleParser*>(this)->m_Parser = new h__DCSubtitleParser; + + Result_t result = m_Parser->OpenRead(filename); + + if ( ASDCP_FAILURE(result) ) + const_cast<ASDCP::TimedText::DCSubtitleParser*>(this)->m_Parser.release(); + + return result; +} + +// Rewinds the stream to the beginning. +ASDCP::Result_t +ASDCP::TimedText::DCSubtitleParser::Reset() const +{ + if ( m_Parser.empty() ) + return RESULT_INIT; + + return m_Parser->Reset(); +} + +// Places a frame of data in the frame buffer. Fails if the buffer is too small +// or the stream is empty. +ASDCP::Result_t +ASDCP::TimedText::DCSubtitleParser::ReadFrame(FrameBuffer& FB) const +{ + if ( m_Parser.empty() ) + return RESULT_INIT; + + return m_Parser->ReadFrame(FB); +} + +ASDCP::Result_t +ASDCP::TimedText::DCSubtitleParser::FillDescriptor(TimedTextDescriptor& PDesc) const +{ + if ( m_Parser.empty() ) + return RESULT_INIT; + + PDesc = m_Parser->m_TDesc; + return RESULT_OK; +} + +// +// end AS_DCP_timedText.cpp +// |
