Fix ID numbering.
[dcpomatic.git] / src / lib / video_content.cc
index c50d466a1f703f083a51a01d72440d0e0642d315..bfbcef9bf9cea42a170244239d40827208521a43 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2013-2014 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2013-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
@@ -29,9 +29,9 @@
 #include "frame_rate_change.h"
 #include "log.h"
 #include "safe_stringstream.h"
+#include "raw_convert.h"
 #include <libcxml/cxml.h>
 #include <dcp/colour_matrix.h>
-#include <dcp/raw_convert.h>
 #include <iomanip>
 
 #include "i18n.h"
@@ -59,7 +59,6 @@ using std::setprecision;
 using boost::shared_ptr;
 using boost::optional;
 using boost::dynamic_pointer_cast;
-using dcp::raw_convert;
 
 VideoContent::VideoContent (shared_ptr<const Film> f)
        : Content (f)
@@ -123,7 +122,7 @@ VideoContent::VideoContent (shared_ptr<const Film> f, cxml::ConstNodePtr node, i
 
        
        if (node->optional_node_child ("ColourConversion")) {
-               _colour_conversion = ColourConversion (node->node_child ("ColourConversion"));
+               _colour_conversion = ColourConversion (node->node_child ("ColourConversion"), version);
        }
        if (version >= 32) {
                _fade_in = ContentTime (node->number_child<int64_t> ("FadeIn"));
@@ -208,7 +207,7 @@ VideoContent::set_default_colour_conversion (bool signal)
 {
        {
                boost::mutex::scoped_lock lm (_mutex);
-               _colour_conversion = PresetColourConversion (_("sRGB"), 2.4, true, dcp::colour_matrix::srgb_to_xyz, 2.6).conversion;
+               _colour_conversion = ColourConversion (dcp::ColourConversion::srgb_to_xyz ());
        }
 
        if (signal) {
@@ -249,30 +248,6 @@ VideoContent::take_from_video_examiner (shared_ptr<VideoExaminer> d)
        signal_changed (ContentProperty::LENGTH);
 }
 
-
-string
-VideoContent::information () const
-{
-       if (video_size().width == 0 || video_size().height == 0) {
-               return "";
-       }
-       
-       SafeStringStream s;
-
-       s << String::compose (
-               _("%1x%2 pixels (%3:1)"),
-               video_size().width,
-               video_size().height,
-               setprecision (3), video_size().ratio ()
-               );
-
-       if (sample_aspect_ratio ()) {
-               s << String::compose (_(" sample aspect ratio %1:1"), sample_aspect_ratio().get ());
-       }
-       
-       return s.str ();
-}
-
 void
 VideoContent::set_left_crop (int c)
 {
@@ -383,7 +358,7 @@ string
 VideoContent::technical_summary () const
 {
        string s = String::compose (
-               "video: length %1, size %2x%3, rate %4",
+               N_("video: length %1, size %2x%3, rate %4"),
                video_length_after_3d_combine().seconds(),
                video_size().width,
                video_size().height,
@@ -391,7 +366,7 @@ VideoContent::technical_summary () const
                );
 
        if (sample_aspect_ratio ()) {
-               s += String::compose (_(", sample aspect ratio %1"), (sample_aspect_ratio().get ()));
+               s += String::compose (N_(", sample aspect ratio %1"), (sample_aspect_ratio().get ()));
        }
 
        return s;
@@ -417,14 +392,16 @@ VideoContent::video_size_after_3d_split () const
 }
 
 void
-VideoContent::unset_colour_conversion ()
+VideoContent::unset_colour_conversion (bool signal)
 {
        {
                boost::mutex::scoped_lock lm (_mutex);
                _colour_conversion = boost::optional<ColourConversion> ();
        }
 
-       signal_changed (VideoContentProperty::COLOUR_CONVERSION);
+       if (signal) {
+               signal_changed (VideoContentProperty::COLOUR_CONVERSION);
+       }
 }
 
 void
@@ -467,17 +444,6 @@ VideoContent::video_size_after_crop () const
        return crop().apply (video_size_after_3d_split ());
 }
 
-/** @param t A time offset from the start of this piece of content.
- *  @return Corresponding time with respect to the content.
- */
-ContentTime
-VideoContent::dcp_time_to_content_time (DCPTime t) const
-{
-       shared_ptr<const Film> film = _film.lock ();
-       DCPOMATIC_ASSERT (film);
-       return ContentTime (t, FrameRateChange (video_frame_rate(), film->video_frame_rate()));
-}
-
 void
 VideoContent::scale_and_crop_to_fit_width ()
 {
@@ -549,7 +515,15 @@ VideoContent::processing_description () const
                        video_size_after_3d_split().height
                        );
 
-               d << " (" << fixed << setprecision(2) << video_size_after_3d_split().ratio() << ":1)\n";
+
+               float ratio = video_size_after_3d_split().ratio ();
+
+               if (sample_aspect_ratio ()) {
+                       d << ", " << _("pixel aspect ratio") << " " << fixed << setprecision(2) << sample_aspect_ratio().get () << ":1";
+                       ratio *= sample_aspect_ratio().get ();
+               }
+
+               d << "\n" << _("Display aspect ratio") << " " << fixed << setprecision(2) << ratio << ":1\n";
        }
 
        if ((crop().left || crop().right || crop().top || crop().bottom) && video_size() != dcp::Size (0, 0)) {
@@ -594,3 +568,4 @@ VideoContent::processing_description () const
 
        return d.str ();
 }
+