Rename Time::round_up to Time::ceil.
[dcpomatic.git] / src / lib / ffmpeg.cc
index f750cfd58118f37819bf6ed23ff5ad687b2ef4fd..ce87cc14f2d7801f2974202008012f624b09d1ae 100644 (file)
@@ -133,7 +133,7 @@ FFmpeg::setup_general ()
 
        int e = avformat_open_input (&_format_context, 0, 0, &options);
        if (e < 0) {
-               throw OpenFileError (_ffmpeg_content->path(0).string(), e);
+               throw OpenFileError (_ffmpeg_content->path(0).string(), e, true);
        }
 
        if (avformat_find_stream_info (_format_context, 0) < 0) {
@@ -282,21 +282,27 @@ FFmpeg::subtitle_id (AVSubtitle const & sub)
        digester.add (sub.pts);
        for (unsigned int i = 0; i < sub.num_rects; ++i) {
                AVSubtitleRect* rect = sub.rects[i];
-               digester.add (rect->x);
-               digester.add (rect->y);
-               digester.add (rect->w);
-               digester.add (rect->h);
+               if (rect->type == SUBTITLE_BITMAP) {
+                       digester.add (rect->x);
+                       digester.add (rect->y);
+                       digester.add (rect->w);
+                       digester.add (rect->h);
 #ifdef DCPOMATIC_HAVE_AVSUBTITLERECT_PICT
-               int const line = rect->pict.linesize[0];
-               for (int j = 0; j < rect->h; ++j) {
-                       digester.add (rect->pict.data[0] + j * line, line);
-               }
+                       int const line = rect->pict.linesize[0];
+                       for (int j = 0; j < rect->h; ++j) {
+                               digester.add (rect->pict.data[0] + j * line, line);
+                       }
 #else
-               int const line = rect->linesize[0];
-               for (int j = 0; j < rect->h; ++j) {
-                       digester.add (rect->data[0] + j * line, line);
-               }
+                       int const line = rect->linesize[0];
+                       for (int j = 0; j < rect->h; ++j) {
+                               digester.add (rect->data[0] + j * line, line);
+                       }
 #endif
+               } else if (rect->type == SUBTITLE_TEXT) {
+                       digester.add (string (rect->text));
+               } else if (rect->type == SUBTITLE_ASS) {
+                       digester.add (string (rect->ass));
+               }
        }
        return digester.get ();
 }
@@ -375,7 +381,7 @@ FFmpeg::pts_offset (vector<shared_ptr<FFmpegAudioStream> > audio_streams, option
        /* Now adjust so that the video pts starts on a frame */
        if (first_video) {
                ContentTime const fvc = first_video.get() + po;
-               po += fvc.round_up (video_frame_rate) - fvc;
+               po += fvc.ceil (video_frame_rate) - fvc;
        }
 
        return po;