summaryrefslogtreecommitdiff
path: root/src/lib/ffmpeg.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2021-09-12 22:43:52 +0200
committerCarl Hetherington <cth@carlh.net>2021-09-13 01:22:00 +0200
commit60450bd93af0b331d7b98c88aa199366305f0721 (patch)
tree23451d313c8e83f74fb2be6d99656cbf98cb21d9 /src/lib/ffmpeg.cc
parentdf811a0dd2772417496991b72fde0ef3304241d9 (diff)
Fix missing subtitles embedded in files decoded by FFmpeg (#2060).
Since the FFmpeg 4.4 update it seems that AVSubtitle::pts is no longer set (it's AV_NOPTS_VALUE, i think). Instead we apparently need to get the PTS from the packet, which in turn requires the stream's timebase.
Diffstat (limited to 'src/lib/ffmpeg.cc')
-rw-r--r--src/lib/ffmpeg.cc4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/lib/ffmpeg.cc b/src/lib/ffmpeg.cc
index d476b4c29..31aa18293 100644
--- a/src/lib/ffmpeg.cc
+++ b/src/lib/ffmpeg.cc
@@ -284,9 +284,9 @@ FFmpeg::avio_seek (int64_t const pos, int whence)
FFmpegSubtitlePeriod
-FFmpeg::subtitle_period (AVSubtitle const & sub)
+FFmpeg::subtitle_period (AVPacket const* packet, AVStream const* stream, AVSubtitle const & sub)
{
- auto const packet_time = ContentTime::from_seconds (static_cast<double> (sub.pts) / AV_TIME_BASE);
+ auto const packet_time = ContentTime::from_seconds (packet->pts * av_q2d(stream->time_base));
if (sub.end_display_time == static_cast<uint32_t> (-1)) {
/* End time is not known */