summaryrefslogtreecommitdiff
path: root/src/lib/playlist.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2013-04-12 00:19:53 +0100
committerCarl Hetherington <cth@carlh.net>2013-04-12 00:19:53 +0100
commiteb6efc4dbae63b90a7389f9818676279945cdafa (patch)
tree1d84bd7438558bed98b9e4cfa08275f4b03ad4b8 /src/lib/playlist.cc
parent9b7df719c56b956e8a2aed336677550b64780c5a (diff)
Restore digests for content.
Diffstat (limited to 'src/lib/playlist.cc')
-rw-r--r--src/lib/playlist.cc44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/lib/playlist.cc b/src/lib/playlist.cc
index f346cb6e0..58086d02b 100644
--- a/src/lib/playlist.cc
+++ b/src/lib/playlist.cc
@@ -18,6 +18,7 @@
*/
#include <boost/shared_ptr.hpp>
+#include <boost/lexical_cast.hpp>
#include "playlist.h"
#include "sndfile_content.h"
#include "sndfile_decoder.h"
@@ -32,9 +33,11 @@ using std::cout;
using std::vector;
using std::min;
using std::max;
+using std::string;
using boost::shared_ptr;
using boost::weak_ptr;
using boost::dynamic_pointer_cast;
+using boost::lexical_cast;
Playlist::Playlist ()
: _audio_from (AUDIO_FFMPEG)
@@ -251,3 +254,44 @@ Playlist::default_audio_mapping () const
return m;
}
+
+string
+Playlist::audio_digest () const
+{
+ string t;
+
+ switch (_audio_from) {
+ case AUDIO_FFMPEG:
+ for (list<shared_ptr<const VideoContent> >::const_iterator i = _video.begin(); i != _video.end(); ++i) {
+ shared_ptr<const FFmpegContent> fc = dynamic_pointer_cast<const FFmpegContent> (*i);
+ if (fc) {
+ t += (*i)->digest ();
+ t += lexical_cast<string> (fc->audio_stream()->id);
+ }
+ }
+ break;
+ case AUDIO_SNDFILE:
+ for (list<shared_ptr<const SndfileContent> >::const_iterator i = _sndfile.begin(); i != _sndfile.end(); ++i) {
+ t += (*i)->digest ();
+ }
+ break;
+ }
+
+ return md5_digest (t.c_str(), t.length());
+}
+
+string
+Playlist::video_digest () const
+{
+ string t;
+
+ for (list<shared_ptr<const VideoContent> >::const_iterator i = _video.begin(); i != _video.end(); ++i) {
+ t += (*i)->digest ();
+ shared_ptr<const FFmpegContent> fc = dynamic_pointer_cast<const FFmpegContent> (*i);
+ if (fc) {
+ t += fc->subtitle_stream()->id;
+ }
+ }
+
+ return md5_digest (t.c_str(), t.length());
+}