Merge master.
[dcpomatic.git] / src / lib / player.cc
index ebec19b2dc40f2d86da3c51865e05eb1d9105a6e..c8ac591a7b2919a36a6f77080dad538417c08982 100644 (file)
@@ -34,7 +34,7 @@
 #include "playlist.h"
 #include "job.h"
 #include "image.h"
-#include "image_proxy.h"
+#include "raw_image_proxy.h"
 #include "ratio.h"
 #include "log.h"
 #include "scaler.h"
 #include "content_video.h"
 #include "player_video.h"
 #include "frame_rate_change.h"
+#include "dcp_content.h"
+#include "dcp_decoder.h"
+#include "dcp_subtitle_content.h"
+#include "dcp_subtitle_decoder.h"
 
 #define LOG_GENERAL(...) _film->log()->log (String::compose (__VA_ARGS__), Log::TYPE_GENERAL);
 
@@ -120,6 +124,12 @@ Player::setup_pieces ()
                        frc = FrameRateChange (fc->video_frame_rate(), _film->video_frame_rate());
                }
 
+               shared_ptr<const DCPContent> dc = dynamic_pointer_cast<const DCPContent> (*i);
+               if (dc) {
+                       decoder.reset (new DCPDecoder (dc, _film->log ()));
+                       frc = FrameRateChange (dc->video_frame_rate(), _film->video_frame_rate());
+               }
+
                /* ImageContent */
                shared_ptr<const ImageContent> ic = dynamic_pointer_cast<const ImageContent> (*i);
                if (ic) {
@@ -152,6 +162,13 @@ Player::setup_pieces ()
                        frc = best_overlap_frc;
                }
 
+               /* DCPSubtitleContent */
+               shared_ptr<const DCPSubtitleContent> dsc = dynamic_pointer_cast<const DCPSubtitleContent> (*i);
+               if (dsc) {
+                       decoder.reset (new DCPSubtitleDecoder (dsc));
+                       frc = best_overlap_frc;
+               }
+
                _pieces.push_back (shared_ptr<Piece> (new Piece (*i, decoder, frc.get ())));
        }
 
@@ -179,7 +196,7 @@ Player::content_changed (weak_ptr<Content> w, int property, bool frequent)
                Changed (frequent);
 
        } else if (
-               property == SubtitleContentProperty::SUBTITLE_USE ||
+               property == SubtitleContentProperty::USE_SUBTITLES ||
                property == SubtitleContentProperty::SUBTITLE_X_OFFSET ||
                property == SubtitleContentProperty::SUBTITLE_Y_OFFSET ||
                property == SubtitleContentProperty::SUBTITLE_SCALE ||
@@ -522,7 +539,7 @@ Player::get_subtitles (DCPTime time, DCPTime length, bool starting)
 
        for (list<shared_ptr<Piece> >::const_iterator j = subs.begin(); j != subs.end(); ++j) {
                shared_ptr<SubtitleContent> subtitle_content = dynamic_pointer_cast<SubtitleContent> ((*j)->content);
-               if (!subtitle_content->subtitle_use ()) {
+               if (!subtitle_content->use_subtitles ()) {
                        continue;
                }