Allow changes to colours of FFmpeg subtitles (#795).
[dcpomatic.git] / src / lib / ffmpeg_examiner.cc
index 29cc69063c12fd60360aa64c061103a939845f46..850b8ba5facb2dae7d400d1c8a53c0584ea38b3d 100644 (file)
@@ -246,6 +246,23 @@ FFmpegExaminer::subtitle_packet (AVCodecContext* context, shared_ptr<FFmpegSubti
                                _last_subtitle_start[stream] = SubtitleStart (id, image, period.from);
                        }
                }
+
+               for (unsigned int i = 0; i < sub.num_rects; ++i) {
+                       if (sub.rects[i]->type == SUBTITLE_BITMAP) {
+                               uint32_t* palette = (uint32_t *) sub.rects[i]->pict.data[1];
+                               for (int j = 0; j < sub.rects[i]->nb_colors; ++j) {
+                                       RGBA rgba  (
+                                               (palette[j] & 0x00ff0000) >> 16,
+                                               (palette[j] & 0x0000ff00) >> 8,
+                                               (palette[j] & 0x000000ff) >> 0,
+                                               (palette[j] & 0xff000000) >> 24
+                                               );
+
+                                       stream->set_colour (rgba, rgba);
+                               }
+                       }
+               }
+
                avsubtitle_free (&sub);
        }
 }