fixed duplicate entries in TT wrapping
authorjhurst <jhurst@cinecert.com>
Tue, 20 Aug 2013 21:21:06 +0000 (21:21 +0000)
committerjhurst <>
Tue, 20 Aug 2013 21:21:06 +0000 (21:21 +0000)
src/TimedText_Parser.cpp

index 191a3535d5198d66e1f14b8931c1eee8cc74ea44..bc3023b4f30b0696821bfbad484a1046b2c68053 100644 (file)
@@ -269,6 +269,7 @@ ASDCP::TimedText::DCSubtitleParser::h__SubtitleParser::OpenRead()
   // list of images
   ElementList ImageList;
   m_Root.GetChildrenWithName("Image", ImageList);
+  std::set<Kumu::UUID> visited_items;
 
   for ( Elem_i i = ImageList.begin(); i != ImageList.end(); i++ )
     {
@@ -279,11 +280,15 @@ ASDCP::TimedText::DCSubtitleParser::h__SubtitleParser::OpenRead()
          return RESULT_FORMAT;
        }
 
-      TimedTextResourceDescriptor TmpResource;
-      memcpy(TmpResource.ResourceID, AssetID.Value(), UUIDlen);
-      TmpResource.Type = MT_PNG;
-      m_TDesc.ResourceList.push_back(TmpResource);
-      m_ResourceTypes.insert(ResourceTypeMap_t::value_type(UUID(TmpResource.ResourceID), MT_PNG));
+      if ( visited_items.find(AssetID) == visited_items.end() )
+       {
+         TimedTextResourceDescriptor TmpResource;
+         memcpy(TmpResource.ResourceID, AssetID.Value(), UUIDlen);
+         TmpResource.Type = MT_PNG;
+         m_TDesc.ResourceList.push_back(TmpResource);
+         m_ResourceTypes.insert(ResourceTypeMap_t::value_type(UUID(TmpResource.ResourceID), MT_PNG));
+         visited_items.insert(AssetID);
+       }
     }
 
   // Calculate the timeline duration.