X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Flib%2Fffmpeg.cc;h=bba6424847855f9a603d13ddcd3a245be988ddb5;hb=0df83d7ba261cdbb5be62db34dae7b972e05ddd9;hp=4eee089928480577a12948b52c23497d383bcdba;hpb=37b1945ffd8c9b3084d08dbdc274c8841d9162eb;p=dcpomatic.git diff --git a/src/lib/ffmpeg.cc b/src/lib/ffmpeg.cc index 4eee08992..bba642484 100644 --- a/src/lib/ffmpeg.cc +++ b/src/lib/ffmpeg.cc @@ -20,12 +20,12 @@ #include "ffmpeg.h" #include "ffmpeg_content.h" #include "film.h" -#include "ffmpeg_audio_stream.h" -#include "ffmpeg_subtitle_stream.h" #include "exceptions.h" #include "util.h" #include "raw_convert.h" #include "log.h" +#include "ffmpeg_subtitle_stream.h" +#include "compose.hpp" extern "C" { #include #include @@ -246,3 +246,19 @@ FFmpeg::avio_seek (int64_t const pos, int whence) return _file_group.seek (pos, whence); } + +FFmpegSubtitlePeriod +FFmpeg::subtitle_period (AVSubtitle const & sub) +{ + ContentTime const packet_time = ContentTime::from_seconds (static_cast (sub.pts) / AV_TIME_BASE); + + if (sub.end_display_time == static_cast (-1)) { + /* End time is not known */ + return FFmpegSubtitlePeriod (packet_time + ContentTime::from_seconds (sub.start_display_time / 1e3)); + } + + return FFmpegSubtitlePeriod ( + packet_time + ContentTime::from_seconds (sub.start_display_time / 1e3), + packet_time + ContentTime::from_seconds (sub.end_display_time / 1e3) + ); +}