Logging improvements to allow prettier displays in the server GUI.
[dcpomatic.git] / src / lib / image_content.cc
index 3f62c3ebfdccbddd487b30751e43d226d9cc3307..d62954f40f9cda054248ebf0ac02f1999b578461 100644 (file)
@@ -17,7 +17,6 @@
 
 */
 
-#include <libcxml/cxml.h>
 #include "image_content.h"
 #include "image_examiner.h"
 #include "compose.hpp"
 #include "frame_rate_change.h"
 #include "exceptions.h"
 #include "safe_stringstream.h"
+#include <libcxml/cxml.h>
+#include <libxml++/libxml++.h>
+#include <boost/foreach.hpp>
+#include <iostream>
 
 #include "i18n.h"
 
@@ -39,32 +42,20 @@ ImageContent::ImageContent (shared_ptr<const Film> film, boost::filesystem::path
        : Content (film)
        , VideoContent (film)
 {
-       bool have_j2k = false;
        if (boost::filesystem::is_regular_file (p) && valid_image_file (p)) {
                _paths.push_back (p);
-               if (valid_j2k_file (p)) {
-                       have_j2k = true;
-               }
        } else {
                for (boost::filesystem::directory_iterator i(p); i != boost::filesystem::directory_iterator(); ++i) {
                        if (boost::filesystem::is_regular_file (i->path()) && valid_image_file (i->path())) {
                                _paths.push_back (i->path ());
-                               if (valid_j2k_file (i->path ())) {
-                                       have_j2k = true;
-                               }
                        }
                }
 
                if (_paths.empty()) {
                        throw FileError (_("No valid image files were found in the folder."), p);
                }
-                               
-               sort (_paths.begin(), _paths.end(), ImageFilenameSorter ());
-       }
 
-       if (have_j2k) {
-               /* We default to no colour conversion if we have JPEG2000 files */
-               unset_colour_conversion (false);
+               sort (_paths.begin(), _paths.end(), ImageFilenameSorter ());
        }
 }
 
@@ -73,7 +64,7 @@ ImageContent::ImageContent (shared_ptr<const Film> film, cxml::ConstNodePtr node
        : Content (film, node)
        , VideoContent (film, node, version)
 {
-       
+
 }
 
 string
@@ -120,7 +111,7 @@ ImageContent::examine (shared_ptr<Job> job)
 
        shared_ptr<const Film> film = _film.lock ();
        DCPOMATIC_ASSERT (film);
-       
+
        shared_ptr<ImageExaminer> examiner (new ImageExaminer (film, shared_from_this(), job));
        take_from_video_examiner (examiner);
 }
@@ -142,7 +133,7 @@ ImageContent::full_length () const
        shared_ptr<const Film> film = _film.lock ();
        DCPOMATIC_ASSERT (film);
        FrameRateChange const frc (video_frame_rate(), film->video_frame_rate());
-       return DCPTime::from_frames (rint (video_length_after_3d_combine() * frc.factor ()), film->video_frame_rate ());
+       return DCPTime::from_frames (llrint (video_length_after_3d_combine() * frc.factor ()), film->video_frame_rate ());
 }
 
 string
@@ -168,16 +159,24 @@ ImageContent::set_video_frame_rate (float r)
                if (_video_frame_rate == r) {
                        return;
                }
-               
+
                _video_frame_rate = r;
        }
-       
+
        signal_changed (VideoContentProperty::VIDEO_FRAME_RATE);
 }
 
 void
 ImageContent::set_default_colour_conversion ()
 {
+       BOOST_FOREACH (boost::filesystem::path i, _paths) {
+               if (valid_j2k_file (i)) {
+                       /* We default to no colour conversion if we have JPEG2000 files */
+                       unset_colour_conversion ();
+                       return;
+               }
+       }
+
        bool const s = still ();
 
        boost::mutex::scoped_lock lm (_mutex);