int ff_get_qtpalette(int codec_id, AVIOContext *pb, uint32_t *palette)

{

    int tmp, bit_depth, color_table_id, greyscale, i;



    avio_seek(pb, 82, SEEK_CUR);



    /* Get the bit depth and greyscale state */

    tmp = avio_rb16(pb);

    bit_depth = tmp & 0x1F;

    greyscale = tmp & 0x20;



    /* Get the color table ID */

    color_table_id = avio_rb16(pb);



    /* Do not create a greyscale palette for Cinepak */

    if (greyscale && codec_id == AV_CODEC_ID_CINEPAK)

        return 0;



    /* If the depth is 1, 2, 4, or 8 bpp, file is palettized. */

    if ((bit_depth == 1 || bit_depth == 2 || bit_depth == 4 || bit_depth == 8)) {

        int color_count, color_start, color_end;

        uint32_t a, r, g, b;



        /* Ignore the greyscale bit for 1-bit video and sample

         * descriptions containing a color table. */

        if (greyscale && bit_depth > 1 && color_table_id) {

            int color_index, color_dec;

            /* compute the greyscale palette */

            color_count = 1 << bit_depth;

            color_index = 255;

            color_dec   = 256 / (color_count - 1);

            for (i = 0; i < color_count; i++) {

                r = g = b = color_index;

                palette[i] = (0xFFU << 24) | (r << 16) | (g << 8) | (b);

                color_index -= color_dec;

                if (color_index < 0)

                    color_index = 0;

            }

        } else if (color_table_id) {

            /* The color table ID is non-zero. Interpret this as

             * being -1, which means use the default Macintosh

             * color table */

            const uint8_t *color_table;

            color_count = 1 << bit_depth;

            if (bit_depth == 1)

                color_table = ff_qt_default_palette_2;

            else if (bit_depth == 2)

                color_table = ff_qt_default_palette_4;

            else if (bit_depth == 4)

                color_table = ff_qt_default_palette_16;

            else

                color_table = ff_qt_default_palette_256;

            for (i = 0; i < color_count; i++) {

                r = color_table[i * 3 + 0];

                g = color_table[i * 3 + 1];

                b = color_table[i * 3 + 2];

                palette[i] = (0xFFU << 24) | (r << 16) | (g << 8) | (b);

            }

        } else {

            /* The color table ID is 0; the color table is in the sample

             * description */

            color_start = avio_rb32(pb);

            avio_rb16(pb); /* color table flags */

            color_end = avio_rb16(pb);

            if ((color_start <= 255) && (color_end <= 255)) {

                for (i = color_start; i <= color_end; i++) {

                    /* each A, R, G, or B component is 16 bits;

                     * only use the top 8 bits */

                    a = avio_r8(pb);

                    avio_r8(pb);

                    r = avio_r8(pb);

                    avio_r8(pb);

                    g = avio_r8(pb);

                    avio_r8(pb);

                    b = avio_r8(pb);

                    avio_r8(pb);

                    palette[i] = (a << 24 ) | (r << 16) | (g << 8) | (b);

                }

            }

        }



        return 1;

    }



    return 0;

}

int ff_get_qtpalette(int codec_id, AVIOContext *pb, uint32_t *palette)

{

    int tmp, bit_depth, color_table_id, greyscale, i;



    avio_seek(pb, 82, SEEK_CUR);



    

    tmp = avio_rb16(pb);

    bit_depth = tmp & 0x1F;

    greyscale = tmp & 0x20;



    

    color_table_id = avio_rb16(pb);



    

    if (greyscale && codec_id == AV_CODEC_ID_CINEPAK)

        return 0;



    

    if ((bit_depth == 1 || bit_depth == 2 || bit_depth == 4 || bit_depth == 8)) {

        int color_count, color_start, color_end;

        uint32_t a, r, g, b;



        



        if (greyscale && bit_depth > 1 && color_table_id) {

            int color_index, color_dec;

            

            color_count = 1 << bit_depth;

            color_index = 255;

            color_dec   = 256 / (color_count - 1);

            for (i = 0; i < color_count; i++) {

                r = g = b = color_index;

                palette[i] = (0xFFU << 24) | (r << 16) | (g << 8) | (b);

                color_index -= color_dec;

                if (color_index < 0)

                    color_index = 0;

            }

        } else if (color_table_id) {

            





            const uint8_t *color_table;

            color_count = 1 << bit_depth;

            if (bit_depth == 1)

                color_table = ff_qt_default_palette_2;

            else if (bit_depth == 2)

                color_table = ff_qt_default_palette_4;

            else if (bit_depth == 4)

                color_table = ff_qt_default_palette_16;

            else

                color_table = ff_qt_default_palette_256;

            for (i = 0; i < color_count; i++) {

                r = color_table[i * 3 + 0];

                g = color_table[i * 3 + 1];

                b = color_table[i * 3 + 2];

                palette[i] = (0xFFU << 24) | (r << 16) | (g << 8) | (b);

            }

        } else {

            



            color_start = avio_rb32(pb);

            avio_rb16(pb); 

            color_end = avio_rb16(pb);

            if ((color_start <= 255) && (color_end <= 255)) {

                for (i = color_start; i <= color_end; i++) {

                    



                    a = avio_r8(pb);

                    avio_r8(pb);

                    r = avio_r8(pb);

                    avio_r8(pb);

                    g = avio_r8(pb);

                    avio_r8(pb);

                    b = avio_r8(pb);

                    avio_r8(pb);

                    palette[i] = (a << 24 ) | (r << 16) | (g << 8) | (b);

                }

            }

        }



        return 1;

    }



    return 0;

}

        int color_count, color_start, color_end;
int FUNC_0(int VAR_0, AVIOContext *VAR_1, uint32_t *VAR_2)

{

    int VAR_3, VAR_4, VAR_5, VAR_6, VAR_7;



    avio_seek(VAR_1, 82, SEEK_CUR);



    

    VAR_3 = avio_rb16(VAR_1);

    VAR_4 = VAR_3 & 0x1F;

    VAR_6 = VAR_3 & 0x20;



    

    VAR_5 = avio_rb16(VAR_1);



    

    if (VAR_6 && VAR_0 == AV_CODEC_ID_CINEPAK)

        return 0;



    

    if ((VAR_4 == 1 || VAR_4 == 2 || VAR_4 == 4 || VAR_4 == 8)) {

        int VAR_8, VAR_9, VAR_10;

        uint32_t a, r, g, b;



        



        if (VAR_6 && VAR_4 > 1 && VAR_5) {

            int VAR_11, VAR_12;

            

            VAR_8 = 1 << VAR_4;

            VAR_11 = 255;

            VAR_12   = 256 / (VAR_8 - 1);

            for (VAR_7 = 0; VAR_7 < VAR_8; VAR_7++) {

                r = g = b = VAR_11;

                VAR_2[VAR_7] = (0xFFU << 24) | (r << 16) | (g << 8) | (b);

                VAR_11 -= VAR_12;

                if (VAR_11 < 0)

                    VAR_11 = 0;

            }

        } else if (VAR_5) {

            





            const uint8_t *VAR_13;

            VAR_8 = 1 << VAR_4;

            if (VAR_4 == 1)

                VAR_13 = ff_qt_default_palette_2;

            else if (VAR_4 == 2)

                VAR_13 = ff_qt_default_palette_4;

            else if (VAR_4 == 4)

                VAR_13 = ff_qt_default_palette_16;

            else

                VAR_13 = ff_qt_default_palette_256;

            for (VAR_7 = 0; VAR_7 < VAR_8; VAR_7++) {

                r = VAR_13[VAR_7 * 3 + 0];

                g = VAR_13[VAR_7 * 3 + 1];

                b = VAR_13[VAR_7 * 3 + 2];

                VAR_2[VAR_7] = (0xFFU << 24) | (r << 16) | (g << 8) | (b);

            }

        } else {

            



            VAR_9 = avio_rb32(VAR_1);

            avio_rb16(VAR_1); 

            VAR_10 = avio_rb16(VAR_1);

            if ((VAR_9 <= 255) && (VAR_10 <= 255)) {

                for (VAR_7 = VAR_9; VAR_7 <= VAR_10; VAR_7++) {

                    



                    a = avio_r8(VAR_1);

                    avio_r8(VAR_1);

                    r = avio_r8(VAR_1);

                    avio_r8(VAR_1);

                    g = avio_r8(VAR_1);

                    avio_r8(VAR_1);

                    b = avio_r8(VAR_1);

                    avio_r8(VAR_1);

                    VAR_2[VAR_7] = (a << 24 ) | (r << 16) | (g << 8) | (b);

                }

            }

        }



        return 1;

    }



    return 0;

}

int FUNC_0(int VAR_0, AVIOContext *VAR_1, uint32_t *VAR_2)
{ int VAR_3, VAR_4, VAR_5, VAR_6, VAR_7; avio_seek(VAR_1, 82, SEEK_CUR); VAR_3 = avio_rb16(VAR_1); VAR_4 = VAR_3 & 0x1F; VAR_6 = VAR_3 & 0x20; VAR_5 = avio_rb16(VAR_1); if (VAR_6 && VAR_0 == AV_CODEC_ID_CINEPAK)
return 0; if ((VAR_4 == 1 || VAR_4 == 2 || VAR_4 == 4 || VAR_4 == 8)) { int VAR_8, VAR_9, VAR_10; uint32_t a, r, g, b; if (VAR_6 && VAR_4 > 1 && VAR_5) { int VAR_11, VAR_12; VAR_8 = 1 << VAR_4; VAR_11 = 255; VAR_12   = 256 / (VAR_8 - 1); for (VAR_7 = 0; VAR_7 < VAR_8; VAR_7++) { r = g = b = VAR_11; VAR_2[VAR_7] = (0xFFU << 24) | (r << 16) | (g << 8) | (b); VAR_11 -= VAR_12; if (VAR_11 < 0)
VAR_11 = 0; } } else if (VAR_5) { const uint8_t *VAR_13; VAR_8 = 1 << VAR_4; if (VAR_4 == 1)
VAR_13 = ff_qt_default_palette_2; else if (VAR_4 == 2)
VAR_13 = ff_qt_default_palette_4; else if (VAR_4 == 4)
VAR_13 = ff_qt_default_palette_16; else
VAR_13 = ff_qt_default_palette_256; for (VAR_7 = 0; VAR_7 < VAR_8; VAR_7++) { r = VAR_13[VAR_7 * 3 + 0]; g = VAR_13[VAR_7 * 3 + 1]; b = VAR_13[VAR_7 * 3 + 2]; VAR_2[VAR_7] = (0xFFU << 24) | (r << 16) | (g << 8) | (b); } } else { VAR_9 = avio_rb32(VAR_1); avio_rb16(VAR_1); VAR_10 = avio_rb16(VAR_1); if ((VAR_9 <= 255) && (VAR_10 <= 255)) { for (VAR_7 = VAR_9; VAR_7 <= VAR_10; VAR_7++) { a = avio_r8(VAR_1); avio_r8(VAR_1); r = avio_r8(VAR_1); avio_r8(VAR_1); g = avio_r8(VAR_1); avio_r8(VAR_1); b = avio_r8(VAR_1); avio_r8(VAR_1); VAR_2[VAR_7] = (a << 24 ) | (r << 16) | (g << 8) | (b); } } } return 1; } return 0; }