From: jhurst Date: Wed, 8 Aug 2018 16:55:35 +0000 (+0000) Subject: o Added support for IMF Numbered Source Channel labels in MCA X-Git-Tag: rel_2_10_32~47 X-Git-Url: https://main.carlh.net/gitweb/?a=commitdiff_plain;h=fb70b4163e3e47b6d5581c872c9221756a8010db;p=asdcplib.git o Added support for IMF Numbered Source Channel labels in MCA --- diff --git a/README b/README index 6cbc652..6023bb1 100755 --- a/README +++ b/README @@ -158,6 +158,8 @@ Change History o Remove use of BN_init in OpenSSL API o XML parser now works correctly with Xerces-c 3.x o Improved MCA sound field expression parser + o Added support for IMF Numbered Source Channel labels in MCA + o Added CLI switches for MCAAudioContentKind and MCAAudioElementKind o Re-assigned asdcp-wrap option '-g' to '-x', added new option '-g' o Added TLM marker check to j2c-test o Added to kmrandgen options '-C', '-w', '-W' @@ -180,7 +182,6 @@ Change History ACESPictureSubDescriptor, TargetFrameSubDescriptor o Added ISXD support, options '-c', '-g', '-G', '-v', '-q', '-u' to as-02-wrap o Added ISXD support and option '-g' to as-02-unwrap - o Added CLI switches for MCAAudioContentKind and MCAAudioElementKind o Cleaned up definition of UL WaveAudioDescriptor_PeakEnvelopeData (currently unused) o Moved ReferenceAudioAlignmentLevel from WaveAudioDescriptor to diff --git a/src/MXF.cpp b/src/MXF.cpp index 1c2ae5c..cf5477d 100755 --- a/src/MXF.cpp +++ b/src/MXF.cpp @@ -1744,34 +1744,44 @@ ASDCP::MXF::ASDCP_MCAConfigParser::DecodeString(const std::string& s, const std: return decode_mca_string(s, m_LabelMap, m_Dict, language, *this, m_ChannelCount); } - - +// ST(L,R),DNS(NSC001,NSC002),-,VIN ASDCP::MXF::AS02_MCAConfigParser::AS02_MCAConfigParser(const Dictionary*& d) : ASDCP::MXF::ASDCP_MCAConfigParser(d) { typedef mca_label_map_t::value_type pair; - m_LabelMap.insert(pair("M1", label_traits("M1", true, m_Dict->ul(MDD_IMFAudioChannel_M1)))); - m_LabelMap.insert(pair("M2", label_traits("M2", true, m_Dict->ul(MDD_IMFAudioChannel_M2)))); - m_LabelMap.insert(pair("Lt", label_traits("Lt", true, m_Dict->ul(MDD_IMFAudioChannel_Lt)))); - m_LabelMap.insert(pair("Rt", label_traits("Rt", true, m_Dict->ul(MDD_IMFAudioChannel_Rt)))); - m_LabelMap.insert(pair("Lst", label_traits("Lst", true, m_Dict->ul(MDD_IMFAudioChannel_Lst)))); - m_LabelMap.insert(pair("Rst", label_traits("Rst", true, m_Dict->ul(MDD_IMFAudioChannel_Rst)))); - m_LabelMap.insert(pair("S", label_traits("S", true, m_Dict->ul(MDD_IMFAudioChannel_S)))); - m_LabelMap.insert(pair("ST", label_traits("ST", true, m_Dict->ul(MDD_IMFAudioSoundfield_ST)))); - m_LabelMap.insert(pair("DM", label_traits("DM", true, m_Dict->ul(MDD_IMFAudioSoundfield_DM)))); - m_LabelMap.insert(pair("DNS", label_traits("DNS", true, m_Dict->ul(MDD_IMFAudioSoundfield_DNS)))); - m_LabelMap.insert(pair("30", label_traits("30", true, m_Dict->ul(MDD_IMFAudioSoundfield_30)))); - m_LabelMap.insert(pair("40", label_traits("40", true, m_Dict->ul(MDD_IMFAudioSoundfield_40)))); - m_LabelMap.insert(pair("50", label_traits("50", true, m_Dict->ul(MDD_IMFAudioSoundfield_50)))); - m_LabelMap.insert(pair("60", label_traits("60", true, m_Dict->ul(MDD_IMFAudioSoundfield_60)))); - m_LabelMap.insert(pair("70", label_traits("70", true, m_Dict->ul(MDD_IMFAudioSoundfield_70)))); - m_LabelMap.insert(pair("LtRt", label_traits("LtRt",true, m_Dict->ul(MDD_IMFAudioSoundfield_LtRt)))); - m_LabelMap.insert(pair("51Ex", label_traits("51Ex",true, m_Dict->ul(MDD_IMFAudioSoundfield_51Ex)))); - m_LabelMap.insert(pair("HI", label_traits("HI", true, m_Dict->ul(MDD_IMFAudioSoundfield_HI)))); - m_LabelMap.insert(pair("VIN", label_traits("VIN", true, m_Dict->ul(MDD_IMFAudioSoundfield_VIN)))); + m_LabelMap.insert(pair("M1", label_traits("Mono One", true, m_Dict->ul(MDD_IMFAudioChannel_M1)))); + m_LabelMap.insert(pair("M2", label_traits("Mono Two", true, m_Dict->ul(MDD_IMFAudioChannel_M2)))); + m_LabelMap.insert(pair("Lt", label_traits("Left Total", true, m_Dict->ul(MDD_IMFAudioChannel_Lt)))); + m_LabelMap.insert(pair("Rt", label_traits("Right Total", true, m_Dict->ul(MDD_IMFAudioChannel_Rt)))); + m_LabelMap.insert(pair("Lst", label_traits("Left Surround Total", true, m_Dict->ul(MDD_IMFAudioChannel_Lst)))); + m_LabelMap.insert(pair("Rst", label_traits("Right Surround Total", true, m_Dict->ul(MDD_IMFAudioChannel_Rst)))); + m_LabelMap.insert(pair("S", label_traits("Surround", true, m_Dict->ul(MDD_IMFAudioChannel_S)))); + m_LabelMap.insert(pair("ST", label_traits("Standard Stereo", true, m_Dict->ul(MDD_IMFAudioSoundfield_ST)))); + m_LabelMap.insert(pair("DM", label_traits("Dual Mono", true, m_Dict->ul(MDD_IMFAudioSoundfield_DM)))); + m_LabelMap.insert(pair("DNS", label_traits("Discrete Numbered Sources", true, m_Dict->ul(MDD_IMFAudioSoundfield_DNS)))); + m_LabelMap.insert(pair("30", label_traits("3.0", true, m_Dict->ul(MDD_IMFAudioSoundfield_30)))); + m_LabelMap.insert(pair("40", label_traits("4.0", true, m_Dict->ul(MDD_IMFAudioSoundfield_40)))); + m_LabelMap.insert(pair("50", label_traits("5.0", true, m_Dict->ul(MDD_IMFAudioSoundfield_50)))); + m_LabelMap.insert(pair("60", label_traits("6.0", true, m_Dict->ul(MDD_IMFAudioSoundfield_60)))); + m_LabelMap.insert(pair("70", label_traits("7.0DS", true, m_Dict->ul(MDD_IMFAudioSoundfield_70)))); + m_LabelMap.insert(pair("LtRt", label_traits("Lt-Rt",true, m_Dict->ul(MDD_IMFAudioSoundfield_LtRt)))); + m_LabelMap.insert(pair("51Ex", label_traits("5.1EX",true, m_Dict->ul(MDD_IMFAudioSoundfield_51Ex)))); + m_LabelMap.insert(pair("HA", label_traits("Hearing Accessibility", true, m_Dict->ul(MDD_IMFAudioSoundfield_HI)))); + m_LabelMap.insert(pair("VA", label_traits("Visual Accessibility", true, m_Dict->ul(MDD_IMFAudioSoundfield_VIN)))); + + // assemble the set of Numbered Source Channel labels + char name_buf[64], symbol_buf[64]; + byte_t ul_buf[16]; + memcpy(ul_buf, m_Dict->ul(MDD_IMFNumberedSourceChannel), 16); + + for ( int i = 1; i < 128; ++i ) + { + snprintf(name_buf, 64, "Numbered Source Channel %03d", i); + snprintf(symbol_buf, 64, "NSC%03d", i); + ul_buf[13] = i; + m_LabelMap.insert(pair(symbol_buf, label_traits(name_buf, true, UL(ul_buf)))); + } } - - // bool ASDCP::MXF::GetEditRateFromFP(ASDCP::MXF::OP1aHeader& header, ASDCP::Rational& edit_rate)