X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fffmpeg_decoder.cc;h=6130d8e5fb5c59be98c6aec9c6ed7b78e23eeac1;hb=HEAD;hp=dcad184fa81ea17ea3ddc5e4a0cdf7b9052984db;hpb=6ac468554c7fea0dfaefde85fb6cdd0fceaf5cad;p=dcpomatic.git diff --git a/src/lib/ffmpeg_decoder.cc b/src/lib/ffmpeg_decoder.cc index dcad184fa..45983795b 100644 --- a/src/lib/ffmpeg_decoder.cc +++ b/src/lib/ffmpeg_decoder.cc @@ -89,7 +89,7 @@ FFmpegDecoder::FFmpegDecoder (shared_ptr film, shared_ptraudio) { + if (c->has_mapped_audio()) { audio = make_shared(this, c->audio, fast); } @@ -240,7 +240,7 @@ FFmpegDecoder::pass () decode_and_process_video_packet (packet); } else if (fc->subtitle_stream() && fc->subtitle_stream()->uses_index(_format_context, si) && !only_text()->ignore()) { decode_and_process_subtitle_packet (packet); - } else { + } else if (audio) { decode_and_process_audio_packet (packet); } @@ -668,11 +668,11 @@ FFmpegDecoder::decode_and_process_subtitle_packet (AVPacket* packet) */ ContentTime from; from = sub_period.from + _pts_offset; + _have_current_subtitle = true; if (sub_period.to) { _current_subtitle_to = *sub_period.to + _pts_offset; } else { _current_subtitle_to = optional(); - _have_current_subtitle = true; } ContentBitmapText bitmap_text(from); @@ -720,7 +720,7 @@ FFmpegDecoder::process_bitmap_subtitle (AVSubtitleRect const * rect) /* sub_p looks up into a BGRA palette which is at rect->pict.data[1]; (i.e. first byte B, second G, third R, fourth A) */ - auto const palette = rect->pict.data[1]; + auto const* palette = rect->pict.data[1]; #else /* Start of the first line in the subtitle */ auto sub_p = rect->data[0]; @@ -828,13 +828,11 @@ FFmpegDecoder::process_ass_subtitle (string ass, ContentTime from) } sub::RawSubtitle base; - auto raw = sub::SSAReader::parse_line ( - base, - text, - _ffmpeg_content->video->size().width, - _ffmpeg_content->video->size().height, - sub::Colour(1, 1, 1) - ); + auto video_size = _ffmpeg_content->video->size(); + DCPOMATIC_ASSERT(video_size); + + sub::SSAReader::Context context(video_size->width, video_size->height, sub::Colour(1, 1, 1)); + auto const raw = sub::SSAReader::parse_line(base, text, context); for (auto const& i: sub::collect>(raw)) { only_text()->emit_plain_start (from, i);