Fix detection of same-frame to speed up simple encodes (#548).
[dcpomatic.git] / src / wx / film_viewer.cc
index a1cc5dfc4bd37dd1751523895291005069975909..e33a3c118dc92eedf9f63bb1b79c88c88d1834d8 100644 (file)
@@ -144,10 +144,14 @@ FilmViewer::set_film (shared_ptr<Film> f)
                _film.reset ();
                return;
        }
+
+       /* Always burn in subtitles, even if we are set not to, otherwise we won't see them
+          in the preview.
+       */
+       _player->set_burn_subtitles (true);
        
        _film_connection = _film->Changed.connect (boost::bind (&FilmViewer::film_changed, this, _1));
 
-       _player->set_approximate_size ();
        _player_connection = _player->Changed.connect (boost::bind (&FilmViewer::player_changed, this, _1));
 
        calculate_sizes ();
@@ -320,13 +324,6 @@ FilmViewer::calculate_sizes ()
        _out_size.width = max (64, _out_size.width);
        _out_size.height = max (64, _out_size.height);
 
-       /* The player will round its image size down to the next lowest 4 pixels
-          to speed up its scale, so do similar here to avoid black borders
-          around things.  This is a bit of a hack.
-       */
-       _out_size.width &= ~3;
-       _out_size.height &= ~3;
-
        _player->set_video_container_size (_out_size);
 }
 
@@ -362,16 +359,7 @@ FilmViewer::set_position_text ()
        double const fps = _film->video_frame_rate ();
        /* Count frame number from 1 ... not sure if this is the best idea */
        _frame_number->SetLabel (wxString::Format (wxT("%d"), int (rint (_position.seconds() * fps)) + 1));
-       
-       double w = _position.seconds ();
-       int const h = (w / 3600);
-       w -= h * 3600;
-       int const m = (w / 60);
-       w -= m * 60;
-       int const s = floor (w);
-       w -= s;
-       int const f = rint (w * fps);
-       _timecode->SetLabel (wxString::Format (wxT("%02d:%02d:%02d.%02d"), h, m, s, f));
+       _timecode->SetLabel (time_to_timecode (_position, fps));
 }
 
 void