summaryrefslogtreecommitdiff
path: root/src/TimedText_Parser.cpp
diff options
context:
space:
mode:
authorjhurst <jhurst@cinecert.com>2009-08-14 18:21:35 +0000
committerjhurst <>2009-08-14 18:21:35 +0000
commit02e0d37bf7b192fcac4b8bb8c4c39a62d47c9531 (patch)
tree1ffeb5db9b8458cb7bebebe32ce087c2f0dedb75 /src/TimedText_Parser.cpp
parent49d8c24675d057db801c68d0a3063ceb3eab366f (diff)
new mode
Diffstat (limited to 'src/TimedText_Parser.cpp')
-rw-r--r--src/TimedText_Parser.cpp47
1 files changed, 43 insertions, 4 deletions
diff --git a/src/TimedText_Parser.cpp b/src/TimedText_Parser.cpp
index 2519669..9b7ce38 100644
--- a/src/TimedText_Parser.cpp
+++ b/src/TimedText_Parser.cpp
@@ -97,6 +97,7 @@ class ASDCP::TimedText::DCSubtitleParser::h__SubtitleParser
{
XMLElement m_Root;
ResourceTypeMap_t m_ResourceTypes;
+ Result_t OpenRead();
ASDCP_NO_COPY_CONSTRUCT(h__SubtitleParser);
@@ -122,6 +123,7 @@ public:
}
Result_t OpenRead(const char* filename);
+ Result_t OpenRead(const std::string& xml_doc, const char* filename);
Result_t ReadAncillaryResource(const byte_t* uuid, FrameBuffer& FrameBuf, const IResourceResolver& Resolver) const;
};
@@ -166,13 +168,34 @@ ASDCP::TimedText::DCSubtitleParser::h__SubtitleParser::OpenRead(const char* file
{
Result_t result = ReadFileIntoString(filename, m_XMLDoc);
- if ( KM_FAILURE(result) )
- return result;
+ if ( KM_SUCCESS(result) )
+ result = OpenRead();
+
+ m_Filename = filename;
+ return result;
+}
+
+//
+Result_t
+ASDCP::TimedText::DCSubtitleParser::h__SubtitleParser::OpenRead(const std::string& xml_doc, const char* filename)
+{
+ m_XMLDoc = xml_doc;
+
+ if ( filename != 0 )
+ m_Filename = filename;
+ else
+ m_Filename = "<string>";
+ return OpenRead();
+}
+
+//
+Result_t
+ASDCP::TimedText::DCSubtitleParser::h__SubtitleParser::OpenRead()
+{
if ( ! m_Root.ParseString(m_XMLDoc.c_str()) )
return RESULT_FORMAT;
- m_Filename = filename;
m_TDesc.EncodingName = "UTF-8"; // the XML parser demands UTF-8
m_TDesc.ResourceList.clear();
m_TDesc.ContainerDuration = 0;
@@ -184,7 +207,9 @@ ASDCP::TimedText::DCSubtitleParser::h__SubtitleParser::OpenRead(const char* file
m_TDesc.NamespaceName = c_dcst_namespace_name;
}
else
- m_TDesc.NamespaceName = ns->Name();
+ {
+ m_TDesc.NamespaceName = ns->Name();
+ }
UUID DocID;
if ( ! get_UUID_from_child_element("Id", &m_Root, DocID) )
@@ -355,6 +380,20 @@ ASDCP::TimedText::DCSubtitleParser::OpenRead(const char* filename) const
return result;
}
+// Parses an XML document to provide a complete set of stream metadata for the MXFWriter below.
+Result_t
+ASDCP::TimedText::DCSubtitleParser::OpenRead(const std::string& xml_doc, const char* filename) const
+{
+ const_cast<ASDCP::TimedText::DCSubtitleParser*>(this)->m_Parser = new h__SubtitleParser;
+
+ Result_t result = m_Parser->OpenRead(xml_doc, filename);
+
+ if ( ASDCP_FAILURE(result) )
+ const_cast<ASDCP::TimedText::DCSubtitleParser*>(this)->m_Parser = 0;
+
+ return result;
+}
+
//
ASDCP::Result_t
ASDCP::TimedText::DCSubtitleParser::FillTimedTextDescriptor(TimedTextDescriptor& TDesc) const