int ff_jpegls_decode_lse(MJpegDecodeContext *s)

{

    int id;

    int tid, wt, maxtab, i, j;



    int len = get_bits(&s->gb, 16);  /* length: FIXME: verify field validity */

    id = get_bits(&s->gb, 8);



    switch (id) {

    case 1:

        s->maxval = get_bits(&s->gb, 16);

        s->t1     = get_bits(&s->gb, 16);

        s->t2     = get_bits(&s->gb, 16);

        s->t3     = get_bits(&s->gb, 16);

        s->reset  = get_bits(&s->gb, 16);



//        ff_jpegls_reset_coding_parameters(s, 0);

        //FIXME quant table?

        break;

    case 2:

        s->palette_index = 0;

    case 3:

        tid= get_bits(&s->gb, 8);

        wt = get_bits(&s->gb, 8);



        if (len < 5)

            return AVERROR_INVALIDDATA;



        if (wt < 1 || wt > MAX_COMPONENTS) {

            avpriv_request_sample(s->avctx, "wt %d", wt);

            return AVERROR_PATCHWELCOME;

        }



        if (!s->maxval)

            maxtab = 255;

        else if ((5 + wt*(s->maxval+1)) < 65535)

            maxtab = s->maxval;

        else

            maxtab = 65530/wt - 1;



        if(s->avctx->debug & FF_DEBUG_PICT_INFO) {

            av_log(s->avctx, AV_LOG_DEBUG, "LSE palette %d tid:%d wt:%d maxtab:%d\n", id, tid, wt, maxtab);

        }

        if (maxtab >= 256) {

            avpriv_request_sample(s->avctx, ">8bit palette");

            return AVERROR_PATCHWELCOME;

        }

        maxtab = FFMIN(maxtab, (len - 5) / wt + s->palette_index);



        if (s->palette_index > maxtab)

            return AVERROR_INVALIDDATA;



        if ((s->avctx->pix_fmt == AV_PIX_FMT_GRAY8 || s->avctx->pix_fmt == AV_PIX_FMT_PAL8) &&

            (s->picture_ptr->format == AV_PIX_FMT_GRAY8 || s->picture_ptr->format == AV_PIX_FMT_PAL8)) {

            uint32_t *pal = s->picture_ptr->data[1];

            s->picture_ptr->format =

            s->avctx->pix_fmt = AV_PIX_FMT_PAL8;

            for (i=s->palette_index; i<=maxtab; i++) {

                pal[i] = 0;

                for (j=0; j<wt; j++) {

                    pal[i] |= get_bits(&s->gb, 8) << (8*(wt-j-1));

                }

            }

            s->palette_index = i;

        }

        break;

    case 4:

        avpriv_request_sample(s->avctx, "oversize image");

        return AVERROR(ENOSYS);

    default:

        av_log(s->avctx, AV_LOG_ERROR, "invalid id %d\n", id);

        return AVERROR_INVALIDDATA;

    }

    av_dlog(s->avctx, "ID=%i, T=%i,%i,%i\n", id, s->t1, s->t2, s->t3);



    return 0;

}

int ff_jpegls_decode_lse(MJpegDecodeContext *s)

{

    int id;

    int tid, wt, maxtab, i, j;



    int len = get_bits(&s->gb, 16);  

    id = get_bits(&s->gb, 8);



    switch (id) {

    case 1:

        s->maxval = get_bits(&s->gb, 16);

        s->t1     = get_bits(&s->gb, 16);

        s->t2     = get_bits(&s->gb, 16);

        s->t3     = get_bits(&s->gb, 16);

        s->reset  = get_bits(&s->gb, 16);





        

        break;

    case 2:

        s->palette_index = 0;

    case 3:

        tid= get_bits(&s->gb, 8);

        wt = get_bits(&s->gb, 8);



        if (len < 5)

            return AVERROR_INVALIDDATA;



        if (wt < 1 || wt > MAX_COMPONENTS) {

            avpriv_request_sample(s->avctx, "wt %d", wt);

            return AVERROR_PATCHWELCOME;

        }



        if (!s->maxval)

            maxtab = 255;

        else if ((5 + wt*(s->maxval+1)) < 65535)

            maxtab = s->maxval;

        else

            maxtab = 65530/wt - 1;



        if(s->avctx->debug & FF_DEBUG_PICT_INFO) {

            av_log(s->avctx, AV_LOG_DEBUG, "LSE palette %d tid:%d wt:%d maxtab:%d\n", id, tid, wt, maxtab);

        }

        if (maxtab >= 256) {

            avpriv_request_sample(s->avctx, ">8bit palette");

            return AVERROR_PATCHWELCOME;

        }

        maxtab = FFMIN(maxtab, (len - 5) / wt + s->palette_index);



        if (s->palette_index > maxtab)

            return AVERROR_INVALIDDATA;



        if ((s->avctx->pix_fmt == AV_PIX_FMT_GRAY8 || s->avctx->pix_fmt == AV_PIX_FMT_PAL8) &&

            (s->picture_ptr->format == AV_PIX_FMT_GRAY8 || s->picture_ptr->format == AV_PIX_FMT_PAL8)) {

            uint32_t *pal = s->picture_ptr->data[1];

            s->picture_ptr->format =

            s->avctx->pix_fmt = AV_PIX_FMT_PAL8;

            for (i=s->palette_index; i<=maxtab; i++) {

                pal[i] = 0;

                for (j=0; j<wt; j++) {

                    pal[i] |= get_bits(&s->gb, 8) << (8*(wt-j-1));

                }

            }

            s->palette_index = i;

        }

        break;

    case 4:

        avpriv_request_sample(s->avctx, "oversize image");

        return AVERROR(ENOSYS);

    default:

        av_log(s->avctx, AV_LOG_ERROR, "invalid id %d\n", id);

        return AVERROR_INVALIDDATA;

    }

    av_dlog(s->avctx, "ID=%i, T=%i,%i,%i\n", id, s->t1, s->t2, s->t3);



    return 0;

}

int FUNC_0(MJpegDecodeContext *VAR_0)

{

    int VAR_1;

    int VAR_2, VAR_3, VAR_4, VAR_5, VAR_6;



    int VAR_7 = get_bits(&VAR_0->gb, 16);  

    VAR_1 = get_bits(&VAR_0->gb, 8);



    switch (VAR_1) {

    case 1:

        VAR_0->maxval = get_bits(&VAR_0->gb, 16);

        VAR_0->t1     = get_bits(&VAR_0->gb, 16);

        VAR_0->t2     = get_bits(&VAR_0->gb, 16);

        VAR_0->t3     = get_bits(&VAR_0->gb, 16);

        VAR_0->reset  = get_bits(&VAR_0->gb, 16);





        

        break;

    case 2:

        VAR_0->palette_index = 0;

    case 3:

        VAR_2= get_bits(&VAR_0->gb, 8);

        VAR_3 = get_bits(&VAR_0->gb, 8);



        if (VAR_7 < 5)

            return AVERROR_INVALIDDATA;



        if (VAR_3 < 1 || VAR_3 > MAX_COMPONENTS) {

            avpriv_request_sample(VAR_0->avctx, "VAR_3 %d", VAR_3);

            return AVERROR_PATCHWELCOME;

        }



        if (!VAR_0->maxval)

            VAR_4 = 255;

        else if ((5 + VAR_3*(VAR_0->maxval+1)) < 65535)

            VAR_4 = VAR_0->maxval;

        else

            VAR_4 = 65530/VAR_3 - 1;



        if(VAR_0->avctx->debug & FF_DEBUG_PICT_INFO) {

            av_log(VAR_0->avctx, AV_LOG_DEBUG, "LSE palette %d VAR_2:%d VAR_3:%d VAR_4:%d\n", VAR_1, VAR_2, VAR_3, VAR_4);

        }

        if (VAR_4 >= 256) {

            avpriv_request_sample(VAR_0->avctx, ">8bit palette");

            return AVERROR_PATCHWELCOME;

        }

        VAR_4 = FFMIN(VAR_4, (VAR_7 - 5) / VAR_3 + VAR_0->palette_index);



        if (VAR_0->palette_index > VAR_4)

            return AVERROR_INVALIDDATA;



        if ((VAR_0->avctx->pix_fmt == AV_PIX_FMT_GRAY8 || VAR_0->avctx->pix_fmt == AV_PIX_FMT_PAL8) &&

            (VAR_0->picture_ptr->format == AV_PIX_FMT_GRAY8 || VAR_0->picture_ptr->format == AV_PIX_FMT_PAL8)) {

            uint32_t *pal = VAR_0->picture_ptr->data[1];

            VAR_0->picture_ptr->format =

            VAR_0->avctx->pix_fmt = AV_PIX_FMT_PAL8;

            for (VAR_5=VAR_0->palette_index; VAR_5<=VAR_4; VAR_5++) {

                pal[VAR_5] = 0;

                for (VAR_6=0; VAR_6<VAR_3; VAR_6++) {

                    pal[VAR_5] |= get_bits(&VAR_0->gb, 8) << (8*(VAR_3-VAR_6-1));

                }

            }

            VAR_0->palette_index = VAR_5;

        }

        break;

    case 4:

        avpriv_request_sample(VAR_0->avctx, "oversize image");

        return AVERROR(ENOSYS);

    default:

        av_log(VAR_0->avctx, AV_LOG_ERROR, "invalid VAR_1 %d\n", VAR_1);

        return AVERROR_INVALIDDATA;

    }

    av_dlog(VAR_0->avctx, "ID=%VAR_5, T=%VAR_5,%VAR_5,%VAR_5\n", VAR_1, VAR_0->t1, VAR_0->t2, VAR_0->t3);



    return 0;

}

int FUNC_0(MJpegDecodeContext *VAR_0)
{ int VAR_1; int VAR_2, VAR_3, VAR_4, VAR_5, VAR_6; int VAR_7 = get_bits(&VAR_0->gb, 16); VAR_1 = get_bits(&VAR_0->gb, 8); switch (VAR_1) { case 1:
VAR_0->maxval = get_bits(&VAR_0->gb, 16); VAR_0->t1     = get_bits(&VAR_0->gb, 16); VAR_0->t2     = get_bits(&VAR_0->gb, 16); VAR_0->t3     = get_bits(&VAR_0->gb, 16); VAR_0->reset  = get_bits(&VAR_0->gb, 16); break; case 2:
VAR_0->palette_index = 0; case 3:
VAR_2= get_bits(&VAR_0->gb, 8); VAR_3 = get_bits(&VAR_0->gb, 8); if (VAR_7 < 5)
return AVERROR_INVALIDDATA; if (VAR_3 < 1 || VAR_3 > MAX_COMPONENTS) { avpriv_request_sample(VAR_0->avctx, "VAR_3 %d", VAR_3); return AVERROR_PATCHWELCOME; } if (!VAR_0->maxval)
VAR_4 = 255; else if ((5 + VAR_3*(VAR_0->maxval+1)) < 65535)
VAR_4 = VAR_0->maxval; else
VAR_4 = 65530/VAR_3 - 1; if(VAR_0->avctx->debug & FF_DEBUG_PICT_INFO) { av_log(VAR_0->avctx, AV_LOG_DEBUG, "LSE palette %d VAR_2:%d VAR_3:%d VAR_4:%d\n", VAR_1, VAR_2, VAR_3, VAR_4); } if (VAR_4 >= 256) { avpriv_request_sample(VAR_0->avctx, ">8bit palette"); return AVERROR_PATCHWELCOME; } VAR_4 = FFMIN(VAR_4, (VAR_7 - 5) / VAR_3 + VAR_0->palette_index); if (VAR_0->palette_index > VAR_4)
return AVERROR_INVALIDDATA; if ((VAR_0->avctx->pix_fmt == AV_PIX_FMT_GRAY8 || VAR_0->avctx->pix_fmt == AV_PIX_FMT_PAL8) &&
(VAR_0->picture_ptr->format == AV_PIX_FMT_GRAY8 || VAR_0->picture_ptr->format == AV_PIX_FMT_PAL8)) { uint32_t *pal = VAR_0->picture_ptr->data[1]; VAR_0->picture_ptr->format =
VAR_0->avctx->pix_fmt = AV_PIX_FMT_PAL8; for (VAR_5=VAR_0->palette_index; VAR_5<=VAR_4; VAR_5++) { pal[VAR_5] = 0; for (VAR_6=0; VAR_6<VAR_3; VAR_6++) { pal[VAR_5] |= get_bits(&VAR_0->gb, 8) << (8*(VAR_3-VAR_6-1)); } } VAR_0->palette_index = VAR_5; } break; case 4:
avpriv_request_sample(VAR_0->avctx, "oversize image"); return AVERROR(ENOSYS); default:
av_log(VAR_0->avctx, AV_LOG_ERROR, "invalid VAR_1 %d\n", VAR_1); return AVERROR_INVALIDDATA; } av_dlog(VAR_0->avctx, "ID=%VAR_5, T=%VAR_5,%VAR_5,%VAR_5\n", VAR_1, VAR_0->t1, VAR_0->t2, VAR_0->t3); return 0; }