Fixed creating the essence coding of the JPEG XS file.
authorThomas Richter <thomas.richter@iis.fraunhofer.de>
Fri, 4 Feb 2022 15:05:18 +0000 (16:05 +0100)
committerThomas Richter <thomas.richter@iis.fraunhofer.de>
Fri, 4 Feb 2022 15:05:18 +0000 (16:05 +0100)
src/AS_02_JXS.cpp

index 103436ee6cf57bed47717f7399f263edf4923d28..dd20c2912af7a2b6f9f1e83d7a5e62f26dc3e5d9 100644 (file)
@@ -351,18 +351,24 @@ AS_02::JXS::MXFWriter::h__Writer::OpenWrite(const std::string& filename,
       m_IndexStrategy = IndexStrategy;
       m_PartitionSpace = PartitionSpace_sec; // later converted to edit units by SetSourceStream()
       m_HeaderSize = HeaderSize;
-
-      if ( picture_descriptor.GetUL() != UL(m_Dict->ul(MDD_RGBAEssenceDescriptor))
-          && picture_descriptor.GetUL() != UL(m_Dict->ul(MDD_CDCIEssenceDescriptor)) )
-       {
-         DefaultLogSink().Error("Essence descriptor is not a RGBAEssenceDescriptor or CDCIEssenceDescriptor.\n");
-         picture_descriptor.Dump();
-         return RESULT_AS02_FORMAT;
-       }
-
-      m_EssenceDescriptor = new ASDCP::MXF::GenericPictureEssenceDescriptor(m_Dict);
-      m_EssenceDescriptor->Copy(picture_descriptor);
-
+  
+      if ( picture_descriptor.GetUL() == UL(m_Dict->ul(MDD_RGBAEssenceDescriptor))) {
+       ASDCP::MXF::RGBAEssenceDescriptor *essence = new ASDCP::MXF::RGBAEssenceDescriptor(m_Dict);
+       ASDCP::MXF::RGBAEssenceDescriptor *mine    = dynamic_cast<ASDCP::MXF::RGBAEssenceDescriptor *>(&picture_descriptor);
+       essence->Copy(*mine);
+       m_EssenceDescriptor = essence;
+      } else if ( picture_descriptor.GetUL() == UL(m_Dict->ul(MDD_CDCIEssenceDescriptor)) ) {
+       ASDCP::MXF::CDCIEssenceDescriptor *essence = new ASDCP::MXF::CDCIEssenceDescriptor(m_Dict);
+       ASDCP::MXF::CDCIEssenceDescriptor *mine    = dynamic_cast<ASDCP::MXF::CDCIEssenceDescriptor *>(&picture_descriptor);
+       essence->Copy(*mine);
+       m_EssenceDescriptor = essence;
+      } else {
+       DefaultLogSink().Error("Essence descriptor is not a RGBAEssenceDescriptor or CDCIEssenceDescriptor.\n");
+       picture_descriptor.Dump();
+       return RESULT_AS02_FORMAT;
+      }
+
+      
       ASDCP::MXF::JPEGXSPictureSubDescriptor *jxs_subdesc = new ASDCP::MXF::JPEGXSPictureSubDescriptor(m_Dict);
       jxs_subdesc->Copy(jxs_sub_descriptor);