Add appearance dialog for SubRip subtitles.
[dcpomatic.git] / src / lib / player.cc
index b8eadf793ae3f54c516764efbbc91717df9d01f2..ecf37b57662b6b89c198a15f3035626ba3b5dce7 100644 (file)
@@ -74,6 +74,7 @@ using boost::shared_ptr;
 using boost::weak_ptr;
 using boost::dynamic_pointer_cast;
 using boost::optional;
+using boost::scoped_ptr;
 
 Player::Player (shared_ptr<const Film> film, shared_ptr<const Playlist> playlist)
        : _film (film)
@@ -218,7 +219,10 @@ Player::playlist_content_changed (weak_ptr<Content> w, int property, bool freque
                property == ContentProperty::TRIM_END ||
                property == ContentProperty::PATH ||
                property == VideoContentProperty::VIDEO_FRAME_TYPE ||
-               property == DCPContentProperty::CAN_BE_PLAYED
+               property == DCPContentProperty::CAN_BE_PLAYED ||
+               property == SubRipContentProperty::SUBTITLE_COLOUR ||
+               property == SubRipContentProperty::SUBTITLE_OUTLINE ||
+               property == SubRipContentProperty::SUBTITLE_OUTLINE_COLOUR
                ) {
 
                _have_valid_pieces = false;
@@ -752,9 +756,16 @@ Player::get_reel_assets ()
                if (!j) {
                        continue;
                }
-               DCPDecoder decoder (j, false);
+
+               scoped_ptr<DCPDecoder> decoder;
+               try {
+                       decoder.reset (new DCPDecoder (j, false));
+               } catch (...) {
+                       return a;
+               }
+
                int64_t offset = 0;
-               BOOST_FOREACH (shared_ptr<dcp::Reel> k, decoder.reels()) {
+               BOOST_FOREACH (shared_ptr<dcp::Reel> k, decoder->reels()) {
                        DCPTime const from = i->position() + DCPTime::from_frames (offset, _film->video_frame_rate());
                        if (j->reference_video ()) {
                                a.push_back (
@@ -775,6 +786,7 @@ Player::get_reel_assets ()
                        }
 
                        if (j->reference_subtitle ()) {
+                               DCPOMATIC_ASSERT (k->main_subtitle ());
                                a.push_back (
                                        ReferencedReelAsset (
                                                k->main_subtitle (),