From 351942d335db261ac6fe54f2f8a3f439fef22d47 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Thu, 20 Feb 2020 17:38:11 +0100 Subject: [PATCH] Apply FFmpeg palette fix to examination too; fix build with old FFmpeg. --- src/lib/examine_ffmpeg_subtitles_job.cc | 7 ++++--- src/lib/ffmpeg_decoder.cc | 6 +++--- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/lib/examine_ffmpeg_subtitles_job.cc b/src/lib/examine_ffmpeg_subtitles_job.cc index af548b794..b9d5f54e5 100644 --- a/src/lib/examine_ffmpeg_subtitles_job.cc +++ b/src/lib/examine_ffmpeg_subtitles_job.cc @@ -82,16 +82,17 @@ ExamineFFmpegSubtitlesJob::run () /* sub_p looks up into a BGRA palette which is here (i.e. first byte B, second G, third R, fourth A) */ - uint32_t const * palette = (uint32_t *) rect->pict.data[1]; + uint8_t const * palette = rect->pict.data[1]; #else /* sub_p looks up into a BGRA palette which is here (i.e. first byte B, second G, third R, fourth A) */ - uint32_t const * palette = (uint32_t *) rect->data[1]; + uint8_t const * palette = rect->data[1]; #endif for (int j = 0; j < rect->nb_colors; ++j) { - RGBA c ((palette[j] & 0xff0000) >> 16, (palette[j] & 0xff00) >> 8, palette[j] & 0xff, (palette[j] & 0xff000000) >> 24); + RGBA c (palette[2], palette[1], palette[0], palette[3]); _content->subtitle_stream()->set_colour (c, c); + palette += 4; } } } diff --git a/src/lib/ffmpeg_decoder.cc b/src/lib/ffmpeg_decoder.cc index 77b608fa8..350362478 100644 --- a/src/lib/ffmpeg_decoder.cc +++ b/src/lib/ffmpeg_decoder.cc @@ -626,23 +626,23 @@ FFmpegDecoder::decode_bitmap_subtitle (AVSubtitleRect const * rect, ContentTime #ifdef DCPOMATIC_HAVE_AVSUBTITLERECT_PICT /* Start of the first line in the subtitle */ uint8_t* sub_p = rect->pict.data[0]; - /* sub_p looks up into a BGRA palette which is here + /* 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) */ - uint32_t const * palette = (uint32_t *) rect->pict.data[1]; + uint8_t const * palette = rect->pict.data[1]; #else /* Start of the first line in the subtitle */ uint8_t* sub_p = rect->data[0]; /* sub_p looks up into a BGRA palette which is at rect->data[1]. (first byte B, second G, third R, fourth A) */ + uint8_t const * palette = rect->data[1]; #endif /* And the stream has a map of those palette colours to colours chosen by the user; created a `mapped' palette from those settings. */ map colour_map = ffmpeg_content()->subtitle_stream()->colours (); vector mapped_palette (rect->nb_colors); - uint8_t const * palette = rect->data[1]; for (int i = 0; i < rect->nb_colors; ++i) { RGBA c (palette[2], palette[1], palette[0], palette[3]); map::const_iterator j = colour_map.find (c); -- 2.30.2