diff options
| author | John Hurst <jhurst@cinecert.com> | 2023-04-25 07:40:54 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-04-25 07:40:54 -0700 |
| commit | 0c2970e8d698ee45310d38e093ce5694a8820206 (patch) | |
| tree | 2b2a0a47f3880eedafb1e658238f12a809870c33 | |
| parent | c0a721e40ed15d12a1ecfe67f465776e454be91d (diff) | |
| parent | 3a9cad7610de04d3d4dfe4dae036c11e354b2cbc (diff) | |
Merge pull request #123 from Jason-elkins/master
feat: add RFC5646Language to TimedTextDescriptor
| -rwxr-xr-x | src/AS_DCP.h | 1 | ||||
| -rw-r--r-- | src/AS_DCP_TimedText.cpp | 24 | ||||
| -rw-r--r-- | src/TimedText_Parser.cpp | 12 |
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); |
