#include "i18n.h"
-#define LOG_GENERAL(...) dcpomatic_log->log (String::compose (__VA_ARGS__), LogEntry::TYPE_GENERAL);
-
using std::string;
using std::vector;
using std::list;
using boost::dynamic_pointer_cast;
using boost::optional;
using dcp::raw_convert;
+using namespace dcpomatic;
int const FFmpegContentProperty::SUBTITLE_STREAMS = 100;
int const FFmpegContentProperty::SUBTITLE_STREAM = 101;
int const FFmpegContentProperty::FILTERS = 102;
+int const FFmpegContentProperty::KDM = 103;
FFmpegContent::FFmpegContent (boost::filesystem::path p)
: Content (p)
+#ifdef DCPOMATIC_VARIANT_SWAROOP
, _encrypted (false)
+#endif
{
}
_color_trc = get_optional_enum<AVColorTransferCharacteristic>(node, "ColorTransferCharacteristic");
_colorspace = get_optional_enum<AVColorSpace>(node, "Colorspace");
_bits_per_pixel = node->optional_number_child<int> ("BitsPerPixel");
- _decryption_key = node->optional_string_child ("DecryptionKey");
+#ifdef DCPOMATIC_VARIANT_SWAROOP
_encrypted = node->optional_bool_child("Encrypted").get_value_or(false);
+#endif
}
FFmpegContent::FFmpegContent (vector<shared_ptr<Content> > c)
_color_trc = ref->_color_trc;
_colorspace = ref->_colorspace;
_bits_per_pixel = ref->_bits_per_pixel;
+#ifdef DCPOMATIC_VARIANT_SWAROOP
_encrypted = ref->_encrypted;
+#endif
}
void
if (_bits_per_pixel) {
node->add_child("BitsPerPixel")->add_child_text (raw_convert<string> (*_bits_per_pixel));
}
- if (_decryption_key) {
- node->add_child("DecryptionKey")->add_child_text (_decryption_key.get());
- }
+#ifdef DCPOMATIC_VARIANT_SWAROOP
if (_encrypted) {
node->add_child("Encypted")->add_child_text ("1");
}
+#endif
}
void
ChangeSignaller<Content> cc1 (this, FFmpegContentProperty::SUBTITLE_STREAMS);
ChangeSignaller<Content> cc2 (this, FFmpegContentProperty::SUBTITLE_STREAM);
- job->set_progress_unknown ();
+ if (job) {
+ job->set_progress_unknown ();
+ }
Content::examine (film, job);
AudioStreamPtr as = audio->streams().front();
AudioMapping m = as->mapping ();
- film->make_audio_mapping_default (m, first_path);
+ m.make_default (film ? film->audio_processor() : 0, first_path);
as->set_mapping (m);
}
_subtitle_stream = _subtitle_streams.front ();
}
+#ifdef DCPOMATIC_VARIANT_SWAROOP
_encrypted = first_path.extension() == ".ecinema";
+#endif
}
if (examiner->has_video ()) {
set_default_colour_conversion ();
}
+
+#ifdef DCPOMATIC_VARIANT_SWAROOP
+ _id = examiner->id ();
+#endif
}
string
return DCPTime::from_frames (llrint (video->length_after_3d_combine() * frc.factor()), film->video_frame_rate());
}
+ if (audio) {
+ DCPTime longest;
+ BOOST_FOREACH (AudioStreamPtr i, audio->streams()) {
+ longest = max (longest, DCPTime::from_frames(llrint(i->length() / frc.speed_up), i->frame_rate()));
+ }
+ return longest;
+ }
+
+ /* XXX: subtitle content? */
+
+ return DCPTime();
+}
+
+DCPTime
+FFmpegContent::approximate_length () const
+{
+ if (video) {
+ return DCPTime::from_frames (video->length_after_3d_combine(), 24);
+ }
+
DCPOMATIC_ASSERT (audio);
- DCPTime longest;
+ Frame longest = 0;
BOOST_FOREACH (AudioStreamPtr i, audio->streams ()) {
- longest = max (longest, DCPTime::from_frames (llrint (i->length() / frc.speed_up), i->frame_rate()));
+ longest = max (longest, Frame(llrint(i->length())));
}
- return longest;
+ return DCPTime::from_frames (longest, 24);
}
void
void
FFmpegContent::add_properties (shared_ptr<const Film> film, list<UserProperty>& p) const
{
- Content::add_properties (p);
+ Content::add_properties (film, p);
if (video) {
video->add_properties (p);
Content::take_settings_from (c);
_filters = fc->_filters;
}
+
+#ifdef DCPOMATIC_VARIANT_SWAROOP
+void
+FFmpegContent::add_kdm (EncryptedECinemaKDM kdm)
+{
+ ChangeSignaller<Content> cc (this, FFmpegContentProperty::KDM);
+ boost::mutex::scoped_lock lm (_mutex);
+ _kdm = kdm;
+
+}
+#endif