summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Hurst <jhurst@cinecert.com>2023-04-25 07:40:54 -0700
committerGitHub <noreply@github.com>2023-04-25 07:40:54 -0700
commit0c2970e8d698ee45310d38e093ce5694a8820206 (patch)
tree2b2a0a47f3880eedafb1e658238f12a809870c33
parentc0a721e40ed15d12a1ecfe67f465776e454be91d (diff)
parent3a9cad7610de04d3d4dfe4dae036c11e354b2cbc (diff)
Merge pull request #123 from Jason-elkins/master
feat: add RFC5646Language to TimedTextDescriptor
-rwxr-xr-xsrc/AS_DCP.h1
-rw-r--r--src/AS_DCP_TimedText.cpp24
-rw-r--r--src/TimedText_Parser.cpp12
3 files changed, 27 insertions, 10 deletions
diff --git a/src/AS_DCP.h b/src/AS_DCP.h
index aab7f77..a661226 100755
--- a/src/AS_DCP.h
+++ b/src/AS_DCP.h
@@ -1478,6 +1478,7 @@ namespace ASDCP {
std::string NamespaceName;
std::string EncodingName;
ResourceList_t ResourceList;
+ std::string RFC5646LanguageTagList;
TimedTextDescriptor() : ContainerDuration(0), EncodingName("UTF-8") { memset(AssetID, 0, UUIDlen); } // D-Cinema format is always UTF-8
};
diff --git a/src/AS_DCP_TimedText.cpp b/src/AS_DCP_TimedText.cpp
index 9a3e336..b30a926 100644
--- a/src/AS_DCP_TimedText.cpp
+++ b/src/AS_DCP_TimedText.cpp
@@ -63,11 +63,12 @@ ASDCP::TimedText::operator << (std::ostream& strm, const TimedTextDescriptor& TD
UUID TmpID(TDesc.AssetID);
char buf[64];
- strm << " EditRate: " << (unsigned) TDesc.EditRate.Numerator << "/" << (unsigned) TDesc.EditRate.Denominator << std::endl;
- strm << "ContainerDuration: " << (unsigned) TDesc.ContainerDuration << std::endl;
- strm << " AssetID: " << TmpID.EncodeHex(buf, 64) << std::endl;
- strm << " NamespaceName: " << TDesc.NamespaceName << std::endl;
- strm << " ResourceCount: " << (unsigned long) TDesc.ResourceList.size() << std::endl;
+ strm << " EditRate: " << (unsigned) TDesc.EditRate.Numerator << "/" << (unsigned) TDesc.EditRate.Denominator << std::endl;
+ strm << " ContainerDuration: " << (unsigned) TDesc.ContainerDuration << std::endl;
+ strm << " AssetID: " << TmpID.EncodeHex(buf, 64) << std::endl;
+ strm << " NamespaceName: " << TDesc.NamespaceName << std::endl;
+ strm << " ResourceCount: " << (unsigned long) TDesc.ResourceList.size() << std::endl;
+ strm << "RFC5646LanguageTagList: " << TDesc.RFC5646LanguageTagList << std::endl;
TimedText::ResourceList_t::const_iterator ri;
for ( ri = TDesc.ResourceList.begin() ; ri != TDesc.ResourceList.end(); ri++ )
@@ -89,11 +90,12 @@ ASDCP::TimedText::DescriptorDump(ASDCP::TimedText::TimedTextDescriptor const& TD
UUID TmpID(TDesc.AssetID);
char buf[64];
- fprintf(stream, " EditRate: %u/%u\n", TDesc.EditRate.Numerator, TDesc.EditRate.Denominator);
- fprintf(stream, "ContainerDuration: %u\n", TDesc.ContainerDuration);
- fprintf(stream, " AssetID: %s\n", TmpID.EncodeHex(buf, 64));
- fprintf(stream, " NamespaceName: %s\n", TDesc.NamespaceName.c_str());
- fprintf(stream, " ResourceCount: %zu\n", TDesc.ResourceList.size());
+ fprintf(stream, " EditRate: %u/%u\n", TDesc.EditRate.Numerator, TDesc.EditRate.Denominator);
+ fprintf(stream, " ContainerDuration: %u\n", TDesc.ContainerDuration);
+ fprintf(stream, " AssetID: %s\n", TmpID.EncodeHex(buf, 64));
+ fprintf(stream, " NamespaceName: %s\n", TDesc.NamespaceName.c_str());
+ fprintf(stream, " ResourceCount: %zu\n", TDesc.ResourceList.size());
+ fprintf(stream, "RFC5646LanguageTagList: %s\n", TDesc.RFC5646LanguageTagList.c_str());
TimedText::ResourceList_t::const_iterator ri;
for ( ri = TDesc.ResourceList.begin() ; ri != TDesc.ResourceList.end(); ri++ )
@@ -163,6 +165,7 @@ ASDCP::TimedText::MXFReader::h__Reader::MD_to_TimedText_TDesc(TimedText::TimedTe
memcpy(TDesc.AssetID, TDescObj->ResourceID.Value(), UUIDlen);
TDesc.NamespaceName = TDescObj->NamespaceURI;
TDesc.EncodingName = TDescObj->UCSEncoding;
+ TDesc.RFC5646LanguageTagList = TDescObj->RFC5646LanguageTagList;
TDesc.ResourceList.clear();
Array<UUID>::const_iterator sdi = TDescObj->SubDescriptors.begin();
@@ -484,6 +487,7 @@ ASDCP::TimedText::MXFWriter::h__Writer::TimedText_TDesc_to_MD(TimedText::TimedTe
TDescObj->ResourceID.Set(TDesc.AssetID);
TDescObj->NamespaceURI = TDesc.NamespaceName;
TDescObj->UCSEncoding = TDesc.EncodingName;
+ TDescObj->RFC5646LanguageTagList = TDesc.RFC5646LanguageTagList;
return RESULT_OK;
}
diff --git a/src/TimedText_Parser.cpp b/src/TimedText_Parser.cpp
index ed3dd42..3788359 100644
--- a/src/TimedText_Parser.cpp
+++ b/src/TimedText_Parser.cpp
@@ -271,6 +271,18 @@ ASDCP::TimedText::DCSubtitleParser::h__SubtitleParser::OpenRead()
return RESULT_FORMAT;
}
+ // Language
+ XMLElement* Language = m_Root.GetChildWithName("Language");
+
+ if ( Language == 0 )
+ {
+ DefaultLogSink().Alert("No Written Language detected in input document.\n");
+ }
+ else
+ {
+ m_TDesc.RFC5646LanguageTagList = Language->GetBody().c_str();
+ }
+
// list of fonts
ElementList FontList;
m_Root.GetChildrenWithName("LoadFont", FontList);