From: jhurst Date: Tue, 7 Aug 2018 19:10:06 +0000 (+0000) Subject: o Cleaned up definition of UL WaveAudioDescriptor_PeakEnvelopeData (currently unused) X-Git-Tag: rel_2_10_32~49 X-Git-Url: https://git.carlh.net/gitweb/?p=asdcplib.git;a=commitdiff_plain;h=b4e891cf98a91bace799a8470ab935f1cc97c356 o Cleaned up definition of UL WaveAudioDescriptor_PeakEnvelopeData (currently unused) o Moved ReferenceAudioAlignmentLevel from WaveAudioDescriptor to GenericSoundEssenceDescriptor --- diff --git a/src/MDD.cpp b/src/MDD.cpp index 9047ef4..5724269 100644 --- a/src/MDD.cpp +++ b/src/MDD.cpp @@ -719,9 +719,9 @@ static const ASDCP::MDDEntry s_MDD_Table[] = { { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 227 0x04, 0x02, 0x03, 0x03, 0x05, 0x00, 0x00, 0x00 }, {0x3d, 0x09}, false, "WaveAudioDescriptor_AvgBps" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, // 228 + { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x08, // 228 0x04, 0x02, 0x03, 0x01, 0x0e, 0x00, 0x00, 0x00 }, - {0x3d, 0x0e}, true, "WaveAudioDescriptor_PeakEnvelope" }, + {0x3d, 0x0e}, true, "WaveAudioDescriptor_PeakEnvelopeData" }, { { 0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01, // 229 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x5a, 0x00 }, {0}, false, "JPEG2000PictureSubDescriptor" }, @@ -1117,10 +1117,10 @@ static const ASDCP::MDDEntry s_MDD_Table[] = { {0}, false, "JP2KEssenceCompression_BroadcastProfile_7" }, { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 360 0x04, 0x02, 0x01, 0x01, 0x06, 0x00, 0x00, 0x00 }, - {0}, false, "WaveAudioDescriptor_ReferenceImageEditRate" }, + {0}, false, "GenericSoundEssenceDescriptor_ReferenceImageEditRate" }, { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 361 0x04, 0x02, 0x01, 0x01, 0x07, 0x00, 0x00, 0x00 }, - {0}, false, "WaveAudioDescriptor_ReferenceAudioAlignmentLevel" }, + {0}, false, "GenericSoundEssenceDescriptor_ReferenceAudioAlignmentLevel" }, { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 362 0x04, 0x01, 0x03, 0x02, 0x0b, 0x00, 0x00, 0x00 }, {0}, false, "GenericPictureEssenceDescriptor_AlternativeCenterCuts" }, @@ -1588,9 +1588,6 @@ static const ASDCP::MDDEntry s_MDD_Table[] = { { { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x0c, // 511 0x0d, 0x01, 0x04, 0x01, 0x04, 0x01, 0x01, 0x00 }, {0}, false, "MXFTextBasedFramework" }, - { { 0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x0e, // 512 - 0x04, 0x02, 0x01, 0x01, 0x06, 0x00, 0x00, 0x00 }, - {0}, true, "GenericSoundEssenceDescriptor_ReferenceImageEditRate" }, { {0}, {0}, false, 0 } }; diff --git a/src/MDD.h b/src/MDD.h index c348e77..c7a50be 100755 --- a/src/MDD.h +++ b/src/MDD.h @@ -395,8 +395,8 @@ namespace ASDCP { MDD_JP2KEssenceCompression_BroadcastProfile_5, // 357 MDD_JP2KEssenceCompression_BroadcastProfile_6, // 358 MDD_JP2KEssenceCompression_BroadcastProfile_7, // 359 - MDD_WaveAudioDescriptor_ReferenceImageEditRate, // 360 - MDD_WaveAudioDescriptor_ReferenceAudioAlignmentLevel, // 361 + MDD_GenericSoundEssenceDescriptor_ReferenceImageEditRate, // 360 + MDD_GenericSoundEssenceDescriptor_ReferenceAudioAlignmentLevel, // 361 MDD_GenericPictureEssenceDescriptor_AlternativeCenterCuts, // 362 MDD_GenericPictureEssenceDescriptor_ActiveHeight, // 363 MDD_GenericPictureEssenceDescriptor_ActiveWidth, // 364 @@ -547,7 +547,6 @@ namespace ASDCP { MDD_Preface_ApplicationSchemes, // 509 MDD_Preface_ConformsToSpecifications, // 510 MDD_MXFTextBasedFramework, // 511 - MDD_GenericSoundEssenceDescriptor_ReferenceImageEditRate, // 512 MDD_Max }; // enum MDD_t diff --git a/src/Metadata.cpp b/src/Metadata.cpp index fe19451..8147e31 100755 --- a/src/Metadata.cpp +++ b/src/Metadata.cpp @@ -1402,7 +1402,14 @@ GenericSoundEssenceDescriptor::InitFromTLVSet(TLVReader& TLVSet) DialNorm.set_has_value( result == RESULT_OK ); } if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, SoundEssenceCoding)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.ReadObject(OBJ_READ_ARGS(GenericSoundEssenceDescriptor, ReferenceImageEditRate)); + if ( ASDCP_SUCCESS(result) ) { + result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(GenericSoundEssenceDescriptor, ReferenceAudioAlignmentLevel)); + ReferenceAudioAlignmentLevel.set_has_value( result == RESULT_OK ); + } + if ( ASDCP_SUCCESS(result) ) { + result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(GenericSoundEssenceDescriptor, ReferenceImageEditRate)); + ReferenceImageEditRate.set_has_value( result == RESULT_OK ); + } return result; } @@ -1420,7 +1427,8 @@ GenericSoundEssenceDescriptor::WriteToTLVSet(TLVWriter& TLVSet) if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, QuantizationBits)); if ( ASDCP_SUCCESS(result) && ! DialNorm.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(GenericSoundEssenceDescriptor, DialNorm)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, SoundEssenceCoding)); - if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS(GenericSoundEssenceDescriptor, ReferenceImageEditRate)); + if ( ASDCP_SUCCESS(result) && ! ReferenceAudioAlignmentLevel.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(GenericSoundEssenceDescriptor, ReferenceAudioAlignmentLevel)); + if ( ASDCP_SUCCESS(result) && ! ReferenceImageEditRate.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(GenericSoundEssenceDescriptor, ReferenceImageEditRate)); return result; } @@ -1437,6 +1445,7 @@ GenericSoundEssenceDescriptor::Copy(const GenericSoundEssenceDescriptor& rhs) QuantizationBits = rhs.QuantizationBits; DialNorm = rhs.DialNorm; SoundEssenceCoding = rhs.SoundEssenceCoding; + ReferenceAudioAlignmentLevel = rhs.ReferenceAudioAlignmentLevel; ReferenceImageEditRate = rhs.ReferenceImageEditRate; } @@ -1465,7 +1474,12 @@ GenericSoundEssenceDescriptor::Dump(FILE* stream) fprintf(stream, " %22s = %d\n", "DialNorm", DialNorm.get()); } fprintf(stream, " %22s = %s\n", "SoundEssenceCoding", SoundEssenceCoding.EncodeString(identbuf, IdentBufferLen)); - fprintf(stream, " %22s = %s\n", "ReferenceImageEditRate", ReferenceImageEditRate.EncodeString(identbuf, IdentBufferLen)); + if ( ! ReferenceAudioAlignmentLevel.empty() ) { + fprintf(stream, " %22s = %d\n", "ReferenceAudioAlignmentLevel", ReferenceAudioAlignmentLevel.get()); + } + if ( ! ReferenceImageEditRate.empty() ) { + fprintf(stream, " %22s = %s\n", "ReferenceImageEditRate", ReferenceImageEditRate.get().EncodeString(identbuf, IdentBufferLen)); + } } // @@ -1517,14 +1531,6 @@ WaveAudioDescriptor::InitFromTLVSet(TLVReader& TLVSet) result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(WaveAudioDescriptor, ChannelAssignment)); ChannelAssignment.set_has_value( result == RESULT_OK ); } - if ( ASDCP_SUCCESS(result) ) { - result = TLVSet.ReadObject(OBJ_READ_ARGS_OPT(WaveAudioDescriptor, ReferenceImageEditRate)); - ReferenceImageEditRate.set_has_value( result == RESULT_OK ); - } - if ( ASDCP_SUCCESS(result) ) { - result = TLVSet.ReadUi8(OBJ_READ_ARGS_OPT(WaveAudioDescriptor, ReferenceAudioAlignmentLevel)); - ReferenceAudioAlignmentLevel.set_has_value( result == RESULT_OK ); - } return result; } @@ -1538,8 +1544,6 @@ WaveAudioDescriptor::WriteToTLVSet(TLVWriter& TLVSet) if ( ASDCP_SUCCESS(result) && ! SequenceOffset.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(WaveAudioDescriptor, SequenceOffset)); if ( ASDCP_SUCCESS(result) ) result = TLVSet.WriteUi32(OBJ_WRITE_ARGS(WaveAudioDescriptor, AvgBps)); if ( ASDCP_SUCCESS(result) && ! ChannelAssignment.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(WaveAudioDescriptor, ChannelAssignment)); - if ( ASDCP_SUCCESS(result) && ! ReferenceImageEditRate.empty() ) result = TLVSet.WriteObject(OBJ_WRITE_ARGS_OPT(WaveAudioDescriptor, ReferenceImageEditRate)); - if ( ASDCP_SUCCESS(result) && ! ReferenceAudioAlignmentLevel.empty() ) result = TLVSet.WriteUi8(OBJ_WRITE_ARGS_OPT(WaveAudioDescriptor, ReferenceAudioAlignmentLevel)); return result; } @@ -1552,8 +1556,6 @@ WaveAudioDescriptor::Copy(const WaveAudioDescriptor& rhs) SequenceOffset = rhs.SequenceOffset; AvgBps = rhs.AvgBps; ChannelAssignment = rhs.ChannelAssignment; - ReferenceImageEditRate = rhs.ReferenceImageEditRate; - ReferenceAudioAlignmentLevel = rhs.ReferenceAudioAlignmentLevel; } // @@ -1575,12 +1577,6 @@ WaveAudioDescriptor::Dump(FILE* stream) if ( ! ChannelAssignment.empty() ) { fprintf(stream, " %22s = %s\n", "ChannelAssignment", ChannelAssignment.get().EncodeString(identbuf, IdentBufferLen)); } - if ( ! ReferenceImageEditRate.empty() ) { - fprintf(stream, " %22s = %s\n", "ReferenceImageEditRate", ReferenceImageEditRate.get().EncodeString(identbuf, IdentBufferLen)); - } - if ( ! ReferenceAudioAlignmentLevel.empty() ) { - fprintf(stream, " %22s = %d\n", "ReferenceAudioAlignmentLevel", ReferenceAudioAlignmentLevel.get()); - } } // diff --git a/src/Metadata.h b/src/Metadata.h index 9f3e0be..ebdb288 100755 --- a/src/Metadata.h +++ b/src/Metadata.h @@ -422,7 +422,8 @@ namespace ASDCP ui32_t QuantizationBits; optional_property DialNorm; UL SoundEssenceCoding; - Rational ReferenceImageEditRate; + optional_property ReferenceAudioAlignmentLevel; + optional_property ReferenceImageEditRate; GenericSoundEssenceDescriptor(const Dictionary*& d); GenericSoundEssenceDescriptor(const GenericSoundEssenceDescriptor& rhs); @@ -449,8 +450,6 @@ namespace ASDCP optional_property SequenceOffset; ui32_t AvgBps; optional_property
    ChannelAssignment; - optional_property ReferenceImageEditRate; - optional_property ReferenceAudioAlignmentLevel; WaveAudioDescriptor(const Dictionary*& d); WaveAudioDescriptor(const WaveAudioDescriptor& rhs); diff --git a/src/as-02-wrap.cpp b/src/as-02-wrap.cpp index 1e8018e..db3d659 100755 --- a/src/as-02-wrap.cpp +++ b/src/as-02-wrap.cpp @@ -1021,35 +1021,6 @@ write_JP2K_file(CommandOptions& Options) //------------------------------------------------------------------------------------------ // PCM essence - -static bool -set_mca_descriptor_properties(CommandOptions& Options) -{ - MXF::InterchangeObject_list_t::iterator i; - for ( i = Options.mca_config.begin(); i != Options.mca_config.end(); ++i ) - { - MXF::AudioChannelLabelSubDescriptor * desc = dynamic_cast(*i); - if ( desc != 0 ) - { - // for not only setting channels in any soundfield group - if ( desc->SoundfieldGroupLinkID.get().HasValue() ) - { - if ( ! Options.mca_audio_content_kind.empty() ) - { - desc->MCAAudioContentKind = Options.mca_audio_content_kind; - } - if ( ! Options.mca_audio_element_kind.empty() ) - { - desc->MCAAudioElementKind = Options.mca_audio_element_kind; - } - } - } - } - - return true; -} - - // Write one or more plaintext PCM audio streams to a plaintext AS-02 file // Write one or more plaintext PCM audio streams to a ciphertext AS-02 file // @@ -1105,9 +1076,22 @@ write_PCM_file(CommandOptions& Options) return RESULT_FAIL; } - if ( ! set_mca_descriptor_properties(Options) ) + // This marks all soundfield groups using the same MCA property values + MXF::InterchangeObject_list_t::iterator i; + for ( i = Options.mca_config.begin(); i != Options.mca_config.end(); ++i ) { - return RESULT_FAIL; + MXF::SoundfieldGroupLabelSubDescriptor * desc = dynamic_cast(*i); + if ( desc != 0 ) + { + if ( ! Options.mca_audio_content_kind.empty() ) + { + desc->MCAAudioContentKind = Options.mca_audio_content_kind; + } + if ( ! Options.mca_audio_element_kind.empty() ) + { + desc->MCAAudioElementKind = Options.mca_audio_element_kind; + } + } } essence_descriptor->ChannelAssignment = g_dict->ul(MDD_IMFAudioChannelCfg_MCA);