Fix large memory leak with image sources.
[dcpomatic.git] / src / lib / playlist.cc
index eb9a49d30b3947cca95da47328b30c5bd0335bbe..dc87fbfabb31702a2c18f4c4bd5469f15e6b71e7 100644 (file)
@@ -30,6 +30,7 @@
 #include "job.h"
 #include "config.h"
 #include "util.h"
+#include "md5_digester.h"
 
 #include "i18n.h"
 
@@ -113,7 +114,9 @@ Playlist::video_identifier () const
                }
        }
 
-       return md5_digest (t.c_str(), t.length());
+       MD5Digester digester;
+       digester.add (t.c_str(), t.length());
+       return digester.get ();
 }
 
 /** @param node <Playlist> node */
@@ -394,3 +397,20 @@ Playlist::move_later (shared_ptr<Content> c)
        
        Changed ();
 }
+
+FrameRateChange
+Playlist::active_frame_rate_change (Time t, int dcp_video_frame_rate) const
+{
+       for (ContentList::const_iterator i = _content.begin(); i != _content.end(); ++i) {
+               shared_ptr<const VideoContent> vc = dynamic_pointer_cast<const VideoContent> (*i);
+               if (!vc) {
+                       continue;
+               }
+
+               if (vc->position() >= t && t < vc->end()) {
+                       return FrameRateChange (vc->video_frame_rate(), dcp_video_frame_rate);
+               }
+       }
+
+       return FrameRateChange (dcp_video_frame_rate, dcp_video_frame_rate);
+}