Я пытаюсь преобразовать данные DVBSub в AVSubtitle в формат RGB, но, похоже, это не работает. Я просто получаю случайные цвета.
Вот код:
/* rects comes from AVSubtitleRect type elsewhere*/
int bw = rects[0].w;
int bh = rects[0].h;
uint32_t colour;
uint32_t *bitmap;
int r, g, b;
/* Give it some memory */
bitmap = malloc(bw * bh * sizeof(uint32_t));
for (int y = 0; y < bh; y++)
{
for (int x = 0; x < bw; x++)
{
/* data[0] holds index data */
const uint8_t index = rects[0]->data[0][y * bw + x];
/* data[1] holds colours - get colour from index */
colour = rects[0]->data[1][4 * index];
r = (colour >> 16) & 0xFF;
g = (colour >> 8) & 0xFF;
b = (colour >> 0) & 0xFF;
/* construct bitmap pixel by pixel (24 bit RGB) */
bitmap[y * bw + x] = r << 16 | g << 8 | b;
}
}
Здесь есть некоторая информация Дамп субтитров из AVSubtitle в файл , но я не уверен Я правильно понимаю.
Я уверен, что я получаю правильные данные и текстовые субтитры выглядят хорошо. Не совсем уверен, что я делаю не так здесь.