o Cleaned up definition of UL WaveAudioDescriptor_PeakEnvelopeData (currently unused)
authorjhurst <jhurst@cinecert.com>
Tue, 7 Aug 2018 19:10:06 +0000 (19:10 +0000)
committerjhurst <>
Tue, 7 Aug 2018 19:10:06 +0000 (19:10 +0000)
 o Moved ReferenceAudioAlignmentLevel from WaveAudioDescriptor to GenericSoundEssenceDescriptor

src/MDD.cpp
src/MDD.h
src/Metadata.cpp
src/Metadata.h
src/as-02-wrap.cpp

index 9047ef47d9812c3899da1036bb51efd4c22a7a1c..572426954d1817d66178db19d2f3947e33117f28 100644 (file)
@@ -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 }
  };
 
index c348e77faf8e88563071e0bf0214f9ea27ba241e..c7a50be41775e079fcd0343d0dd26ae715cfa358 100755 (executable)
--- 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
 
index fe1945191d168d7e87e2190ce56a063c6ea259e0..8147e31aa3b46b1cb72873fd28d58d2c942bbcde 100755 (executable)
@@ -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());
-  }
 }
 
 //
index 9f3e0be10eb46319f442f17752330fd7df1a2e40..ebdb2884d699a483ff9cd0db58c3cfd31a914a9d 100755 (executable)
@@ -422,7 +422,8 @@ namespace ASDCP
           ui32_t QuantizationBits;
           optional_property<ui8_t > DialNorm;
           UL SoundEssenceCoding;
-          Rational ReferenceImageEditRate;
+          optional_property<ui8_t > ReferenceAudioAlignmentLevel;
+          optional_property<Rational > ReferenceImageEditRate;
 
       GenericSoundEssenceDescriptor(const Dictionary*& d);
       GenericSoundEssenceDescriptor(const GenericSoundEssenceDescriptor& rhs);
@@ -449,8 +450,6 @@ namespace ASDCP
           optional_property<ui8_t > SequenceOffset;
           ui32_t AvgBps;
           optional_property<UL > ChannelAssignment;
-          optional_property<Rational > ReferenceImageEditRate;
-          optional_property<ui8_t > ReferenceAudioAlignmentLevel;
 
       WaveAudioDescriptor(const Dictionary*& d);
       WaveAudioDescriptor(const WaveAudioDescriptor& rhs);
index 1e8018ee5cc1689f842c1c63de8f01baa3c2bd3d..db3d6598e0149a5ac38c33d9f81eb52e54649bb8 100755 (executable)
@@ -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<MXF::AudioChannelLabelSubDescriptor*>(*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<MXF::SoundfieldGroupLabelSubDescriptor*>(*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);