_paths.push_back (p);
_last_write_times.push_back (boost::filesystem::last_write_time(p));
}
+
+
+string
+Content::video_processing_description (boost::shared_ptr<const Film> film) const
+{
+ return video ? video->processing_description(film) : "";
+}
+
+
+string
+Content::audio_processing_description (boost::shared_ptr<const Film> film) const
+{
+ return audio ? audio->processing_description(film) : "";
+}
+
*/
virtual std::list<dcpomatic::DCPTime> reel_split_points (boost::shared_ptr<const Film>) const;
+ virtual std::string video_processing_description (boost::shared_ptr<const Film> film) const;
+ virtual std::string audio_processing_description (boost::shared_ptr<const Film> film) const;
+
boost::shared_ptr<Content> clone () const;
void set_paths (std::vector<boost::filesystem::path> paths);
return RESOLUTION_2K;
}
+string
+DCPContent::video_processing_description (shared_ptr<const Film> film) const
+{
+ /* This and PlayerVideo::has_j2k() need to be kept in sync */
+
+ if (!video) {
+ return "";
+ }
+
+ string s = video->processing_description (film);
+
+ /* XXX: overlapping burnt subs... */
+
+ if (video->crop() != Crop()) {
+ s += _("JPEG2000 video will be re-compressed because the image is cropped.");
+ } else if (film->frame_size() != video->size()) {
+ s += _("JPEG2000 video will be re-compressed because the project's container is different to the DCP's.");
+ } else if (video->fade_in() || video->fade_out()) {
+ s += _("JPEG2000 video will be re-compressed because fades have been set up.");
+ } else if (video->colour_conversion()) {
+ s += _("JPEG2000 video will be re-compressed because the colour conversion is not set to 'None'");
+ } else {
+ s += _("JPEG2000 video will be passed through without any change.");
+ }
+
+ return s;
+}
+
void set_default_colour_conversion ();
std::list<dcpomatic::DCPTime> reel_split_points (boost::shared_ptr<const Film> film) const;
+ std::string video_processing_description (boost::shared_ptr<const Film> film) const;
+
std::vector<boost::filesystem::path> directories () const;
bool encrypted () const {
{
/* XXX: maybe other things */
+ /* This and DCPContent::processing_description() need to be kept in sync */
+
shared_ptr<const J2KImageProxy> j2k = dynamic_pointer_cast<const J2KImageProxy> (_in);
if (!j2k) {
return false;
} else {
checked_set (_colour_conversion, 0);
}
+ setup_description ();
} else if (check.size() > 1) {
/* Add a "many" entry and select it as an indication that multiple different
* colour conversions are present in the selection.
} else {
_fade_in->clear ();
}
+ setup_description ();
} else if (property == VideoContentProperty::FADE_OUT) {
set<Frame> check;
BOOST_FOREACH (shared_ptr<const Content> i, vc) {
} else {
_fade_out->clear ();
}
+ setup_description ();
} else if (property == DCPContentProperty::REFERENCE_VIDEO) {
if (vc.size() == 1) {
shared_ptr<DCPContent> dcp = dynamic_pointer_cast<DCPContent> (vc.front ());
return;
}
- string d = vc.front()->video->processing_description (_parent->film());
+ string d = vc.front()->video_processing_description (_parent->film());
size_t lines = count (d.begin(), d.end(), '\n');
for (int i = lines; i < 6; ++i) {