Am Fr., 26. Feb. 2021 um 12:55 Uhr schrieb Paul B Mahol <one...@gmail.com>:

> +static int decode_palette(GetByteContext *gb, uint32_t *pal)
> +{
> +    GetBitContext gbit;
> +
> +    if (bytestream2_get_bytes_left(gb) < 18)
> +        return AVERROR_INVALIDDATA;
> +
> +    memset(pal, 0, 16 * sizeof(*pal));
> +    init_get_bits8(&gbit, gb->buffer, 18);
> +
> +    for (int RGBIndex = 0; RGBIndex < 3; RGBIndex++) {
> +        for (int index = 0; index < 16; index++) {
> +            unsigned color = get_bits1(&gbit) << RGBIndex;
> +            pal[15 - index] |= color << (5 + 16);
> +        }
> +    }
> +
> +    for (int RGBIndex = 0; RGBIndex < 3; RGBIndex++) {
> +        for (int index = 0; index < 16; index++) {
> +            unsigned color = get_bits1(&gbit) << RGBIndex;
> +            pal[15 - index] |= color << (5 + 8);
> +        }
> +    }
> +
> +    for (int RGBIndex = 0; RGBIndex < 3; RGBIndex++) {
> +        for (int index = 0; index < 16; index++) {
> +            unsigned color = get_bits1(&gbit) << RGBIndex;
> +            pal[15 - index] |= color << (5 + 0);
> +        }
> +    }
> +
> +    for (int index = 0; index < 16; index++)
> +        pal[index] = (0xFFU << 24) | pal[index] | (pal[index] >> 3);

Looks much better than what I suggested but please
also fill the last two bits of each component.

Carl Eugen
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to