/*
- Copyright (C) 2014 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2014-2015 Carl Hetherington <cth@carlh.net>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#include "compose.hpp"
#include <dcp/dcp.h>
#include <dcp/exceptions.h>
+#include <libxml++/libxml++.h>
#include <iterator>
#include "i18n.h"
using std::string;
using std::cout;
using std::distance;
+using std::pair;
+using std::list;
using boost::shared_ptr;
using boost::optional;
int const DCPContentProperty::CAN_BE_PLAYED = 600;
-DCPContent::DCPContent (shared_ptr<const Film> f, boost::filesystem::path p)
- : Content (f)
- , VideoContent (f)
- , SingleStreamAudioContent (f)
- , SubtitleContent (f)
+DCPContent::DCPContent (shared_ptr<const Film> film, boost::filesystem::path p)
+ : Content (film)
+ , VideoContent (film)
+ , SingleStreamAudioContent (film)
+ , SubtitleContent (film)
, _has_subtitles (false)
, _encrypted (false)
, _kdm_valid (false)
{
read_directory (p);
+ /* Default to no colour conversion for DCPs */
+ unset_colour_conversion (false);
}
-DCPContent::DCPContent (shared_ptr<const Film> f, cxml::ConstNodePtr node, int version)
- : Content (f, node)
- , VideoContent (f, node, version)
- , SingleStreamAudioContent (f, node, version)
- , SubtitleContent (f, node, version)
+DCPContent::DCPContent (shared_ptr<const Film> film, cxml::ConstNodePtr node, int version)
+ : Content (film, node)
+ , VideoContent (film, node, version)
+ , SingleStreamAudioContent (film, node, version)
+ , SubtitleContent (film, node, version)
{
_name = node->string_child ("Name");
_has_subtitles = node->bool_child ("HasSubtitles");
DCPContent::examine (shared_ptr<Job> job)
{
bool const could_be_played = can_be_played ();
-
+
job->set_progress_unknown ();
Content::examine (job);
-
+
shared_ptr<DCPExaminer> examiner (new DCPExaminer (shared_from_this ()));
take_from_video_examiner (examiner);
take_from_audio_examiner (examiner);
- boost::mutex::scoped_lock lm (_mutex);
- _name = examiner->name ();
- _has_subtitles = examiner->has_subtitles ();
- _encrypted = examiner->encrypted ();
- _kdm_valid = examiner->kdm_valid ();
+ {
+ boost::mutex::scoped_lock lm (_mutex);
+ _name = examiner->name ();
+ _has_subtitles = examiner->has_subtitles ();
+ _encrypted = examiner->encrypted ();
+ _kdm_valid = examiner->kdm_valid ();
+ }
if (could_be_played != can_be_played ()) {
signal_changed (DCPContentProperty::CAN_BE_PLAYED);
{
shared_ptr<const Film> film = _film.lock ();
DCPOMATIC_ASSERT (film);
- return DCPTime (video_length (), FrameRateChange (video_frame_rate (), film->video_frame_rate ()));
+ FrameRateChange const frc (video_frame_rate (), film->video_frame_rate ());
+ return DCPTime::from_frames (llrint (video_length () * frc.factor ()), film->video_frame_rate ());
}
string
bool
DCPContent::can_be_played () const
{
+ boost::mutex::scoped_lock lm (_mutex);
return !_encrypted || _kdm_valid;
}
return dir;
}
+
+void
+DCPContent::add_properties (list<pair<string, string> >& p) const
+{
+ SingleStreamAudioContent::add_properties (p);
+}