diff options
| author | Carl Hetherington <cth@carlh.net> | 2021-09-12 22:43:52 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2021-09-13 01:22:00 +0200 |
| commit | 60450bd93af0b331d7b98c88aa199366305f0721 (patch) | |
| tree | 23451d313c8e83f74fb2be6d99656cbf98cb21d9 /src/lib/ffmpeg_decoder.cc | |
| parent | df811a0dd2772417496991b72fde0ef3304241d9 (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_decoder.cc')
| -rw-r--r-- | src/lib/ffmpeg_decoder.cc | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/lib/ffmpeg_decoder.cc b/src/lib/ffmpeg_decoder.cc index 3202dcd3e..72372fca8 100644 --- a/src/lib/ffmpeg_decoder.cc +++ b/src/lib/ffmpeg_decoder.cc @@ -622,12 +622,14 @@ FFmpegDecoder::decode_and_process_subtitle_packet (AVPacket* packet) return; } + auto sub_period = subtitle_period (packet, ffmpeg_content()->subtitle_stream()->stream(_format_context), sub); + /* Stop any current subtitle, either at the time it was supposed to stop, or now if now is sooner */ if (_have_current_subtitle) { if (_current_subtitle_to) { - only_text()->emit_stop (min(*_current_subtitle_to, subtitle_period(sub).from + _pts_offset)); + only_text()->emit_stop (min(*_current_subtitle_to, sub_period.from + _pts_offset)); } else { - only_text()->emit_stop (subtitle_period(sub).from + _pts_offset); + only_text()->emit_stop (sub_period.from + _pts_offset); } _have_current_subtitle = false; } @@ -641,7 +643,6 @@ FFmpegDecoder::decode_and_process_subtitle_packet (AVPacket* packet) /* Subtitle PTS (within the source, not taking into account any of the source that we may have chopped off for the DCP). */ - auto sub_period = subtitle_period (sub); ContentTime from; from = sub_period.from + _pts_offset; if (sub_period.to) { |
