summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/content.cc15
-rw-r--r--src/lib/content.h3
-rw-r--r--src/lib/dcp_content.cc28
-rw-r--r--src/lib/dcp_content.h2
-rw-r--r--src/lib/player_video.cc2
5 files changed, 50 insertions, 0 deletions
diff --git a/src/lib/content.cc b/src/lib/content.cc
index 4242477d4..79f50d985 100644
--- a/src/lib/content.cc
+++ b/src/lib/content.cc
@@ -511,3 +511,18 @@ Content::add_path (boost::filesystem::path p)
_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) : "";
+}
+
diff --git a/src/lib/content.h b/src/lib/content.h
index a2d78aa68..543e3cba0 100644
--- a/src/lib/content.h
+++ b/src/lib/content.h
@@ -98,6 +98,9 @@ public:
*/
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);
diff --git a/src/lib/dcp_content.cc b/src/lib/dcp_content.cc
index ca210b558..07bd946b0 100644
--- a/src/lib/dcp_content.cc
+++ b/src/lib/dcp_content.cc
@@ -760,3 +760,31 @@ DCPContent::resolution () const
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;
+}
+
diff --git a/src/lib/dcp_content.h b/src/lib/dcp_content.h
index 6d707670f..16c546e96 100644
--- a/src/lib/dcp_content.h
+++ b/src/lib/dcp_content.h
@@ -74,6 +74,8 @@ public:
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 {
diff --git a/src/lib/player_video.cc b/src/lib/player_video.cc
index 10e798ed5..1dd64540a 100644
--- a/src/lib/player_video.cc
+++ b/src/lib/player_video.cc
@@ -224,6 +224,8 @@ PlayerVideo::has_j2k () 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;