- Added support for optional CPF, CAP and PRF segments
[asdcplib.git] / src / JP2K_Codestream_Parser.cpp
index 43665e690f427dced353c8cc971ff4230f254cf3..9d5540911a699b4e774447479144eaf6579d7927 100755 (executable)
@@ -101,6 +101,12 @@ ASDCP::JP2K::ParseMetadataIntoDesc(const FrameBuffer& FB, PictureDescriptor& PDe
   const byte_t* p = FB.RoData();
   const byte_t* end_p = p + FB.Size();
 
+  /* initialize optional items */
+
+  PDesc.ExtendedCapabilities.N = JP2K::NoExtendedCapabilitiesSignaled;
+  PDesc.Profile.N = 0;
+  PDesc.CorrespondingProfile.N = 0;
+
   while ( p < end_p && ASDCP_SUCCESS(result) )
     {
       result = GetNextMarker(&p, NextMarker);
@@ -185,19 +191,14 @@ ASDCP::JP2K::ParseMetadataIntoDesc(const FrameBuffer& FB, PictureDescriptor& PDe
            
                        PDesc.ExtendedCapabilities.Pcap = CAP_.pcap();
 
-                       for(i32_t b = 32, i = 1; b > 0; b--) {
-
-                               if ( (PDesc.ExtendedCapabilities.Pcap >> (b - 1)) & 0x1 ) {
+                       PDesc.ExtendedCapabilities.N = CAP_.N();
 
-                                       PDesc.ExtendedCapabilities.Ccap[32 - b] = CAP_.ccap(i++);
+                       for (i32_t i = 0; i < CAP_.N(); i++) {
 
-                               } else {
-
-                                       PDesc.ExtendedCapabilities.Ccap[32 - b] = 0;
-
-                               }
+                               PDesc.ExtendedCapabilities.Ccap[i] = CAP_.ccap(i);
 
                        }
+
          }
          break;