diff options
| author | Carl Hetherington <cth@carlh.net> | 2016-03-01 01:00:16 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2016-03-01 01:00:16 +0000 |
| commit | 0914bfdbfc498d99821c2cd0ca3a4f9a184d07b5 (patch) | |
| tree | c47583043a15279e0933f6697deefb7768ba352c /src/lib/ffmpeg_examiner.cc | |
| parent | 8b7080da3ff8b6df0df7f1858c144c163cbaf4c6 (diff) | |
Stop erroneous addition of text subtitles to the lists (when
an image subtitle is completed with a rect count of zero) which
subsequently cause hangs while the decoder looks for these
phantom text subtitles. Fixes #812.
Diffstat (limited to 'src/lib/ffmpeg_examiner.cc')
| -rw-r--r-- | src/lib/ffmpeg_examiner.cc | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/lib/ffmpeg_examiner.cc b/src/lib/ffmpeg_examiner.cc index 850b8ba5f..abca5fee7 100644 --- a/src/lib/ffmpeg_examiner.cc +++ b/src/lib/ffmpeg_examiner.cc @@ -217,13 +217,13 @@ FFmpegExaminer::subtitle_packet (AVCodecContext* context, shared_ptr<FFmpegSubti if (avcodec_decode_subtitle2 (context, &sub, &frame_finished, &_packet) >= 0 && frame_finished) { string id = subtitle_id (sub); FFmpegSubtitlePeriod const period = subtitle_period (sub); - bool const image = subtitle_is_image (sub); + bool const starts_image = subtitle_starts_image (sub); LastSubtitleMap::iterator last = _last_subtitle_start.find (stream); if (last != _last_subtitle_start.end() && last->second) { /* We have seen the start of a subtitle but not yet the end. Whatever this is finishes the previous subtitle, so add it */ - if (image) { + if (last->second->image) { stream->add_image_subtitle (last->second->id, ContentTimePeriod (last->second->time, period.from)); } else { stream->add_text_subtitle (last->second->id, ContentTimePeriod (last->second->time, period.from)); @@ -233,17 +233,17 @@ FFmpegExaminer::subtitle_packet (AVCodecContext* context, shared_ptr<FFmpegSubti _last_subtitle_start[stream] = optional<SubtitleStart> (); } else { /* This is just another subtitle, so we start again */ - _last_subtitle_start[stream] = SubtitleStart (id, image, period.from); + _last_subtitle_start[stream] = SubtitleStart (id, starts_image, period.from); } } else if (sub.num_rects == 1) { if (period.to) { - if (image) { + if (starts_image) { stream->add_image_subtitle (id, ContentTimePeriod (period.from, period.to.get ())); } else { stream->add_text_subtitle (id, ContentTimePeriod (period.from, period.to.get ())); } } else { - _last_subtitle_start[stream] = SubtitleStart (id, image, period.from); + _last_subtitle_start[stream] = SubtitleStart (id, starts_image, period.from); } } |
