X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fffmpeg.cc;h=ce87cc14f2d7801f2974202008012f624b09d1ae;hb=58dce923b9d438a27ce1cd7e3125370f74d46e3a;hp=1f16514d7496b780b31d1ff5a4002d54c0f63923;hpb=73654117144c6de0ec4efe39ddc88485df546cc9;p=dcpomatic.git diff --git a/src/lib/ffmpeg.cc b/src/lib/ffmpeg.cc index 1f16514d7..ce87cc14f 100644 --- a/src/lib/ffmpeg.cc +++ b/src/lib/ffmpeg.cc @@ -131,8 +131,9 @@ FFmpeg::setup_general () av_dict_set (&options, "analyzeduration", raw_convert (5 * 60 * 1000000).c_str(), 0); av_dict_set (&options, "probesize", raw_convert (5 * 60 * 1000000).c_str(), 0); - if (avformat_open_input (&_format_context, 0, 0, &options) < 0) { - throw OpenFileError (_ffmpeg_content->path(0).string ()); + int e = avformat_open_input (&_format_context, 0, 0, &options); + if (e < 0) { + throw OpenFileError (_ffmpeg_content->path(0).string(), e, true); } if (avformat_find_stream_info (_format_context, 0) < 0) { @@ -281,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 (); } @@ -374,7 +381,7 @@ FFmpeg::pts_offset (vector > 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;