static int tqi_decode_frame(AVCodecContext *avctx,

                            void *data, int *data_size,

                            AVPacket *avpkt)

{

    const uint8_t *buf = avpkt->data;

    int buf_size = avpkt->size;

    const uint8_t *buf_end = buf+buf_size;

    TqiContext *t = avctx->priv_data;

    MpegEncContext *s = &t->s;



    s->width  = AV_RL16(&buf[0]);

    s->height = AV_RL16(&buf[2]);

    tqi_calculate_qtable(s, buf[4]);

    buf += 8;



    if (t->frame.data[0])

        avctx->release_buffer(avctx, &t->frame);



    if (s->avctx->width!=s->width || s->avctx->height!=s->height)

        avcodec_set_dimensions(s->avctx, s->width, s->height);



    if(avctx->get_buffer(avctx, &t->frame) < 0) {

        av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n");

        return -1;

    }



    av_fast_malloc(&t->bitstream_buf, &t->bitstream_buf_size, (buf_end-buf) + FF_INPUT_BUFFER_PADDING_SIZE);

    if (!t->bitstream_buf)

        return AVERROR(ENOMEM);

    s->dsp.bswap_buf(t->bitstream_buf, (const uint32_t*)buf, (buf_end-buf)/4);

    init_get_bits(&s->gb, t->bitstream_buf, 8*(buf_end-buf));



    s->last_dc[0] = s->last_dc[1] = s->last_dc[2] = 0;

    for (s->mb_y=0; s->mb_y<(avctx->height+15)/16; s->mb_y++)

    for (s->mb_x=0; s->mb_x<(avctx->width+15)/16; s->mb_x++)

    {

        if(tqi_decode_mb(s, t->block) < 0)

            break;

        tqi_idct_put(t, t->block);

    }



    *data_size = sizeof(AVFrame);

    *(AVFrame*)data = t->frame;

    return buf_size;

}

static int tqi_decode_frame(AVCodecContext *avctx,

                            void *data, int *data_size,

                            AVPacket *avpkt)

{

    const uint8_t *buf = avpkt->data;

    int buf_size = avpkt->size;

    const uint8_t *buf_end = buf+buf_size;

    TqiContext *t = avctx->priv_data;

    MpegEncContext *s = &t->s;



    s->width  = AV_RL16(&buf[0]);

    s->height = AV_RL16(&buf[2]);

    tqi_calculate_qtable(s, buf[4]);

    buf += 8;



    if (t->frame.data[0])

        avctx->release_buffer(avctx, &t->frame);



    if (s->avctx->width!=s->width || s->avctx->height!=s->height)

        avcodec_set_dimensions(s->avctx, s->width, s->height);



    if(avctx->get_buffer(avctx, &t->frame) < 0) {

        av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n");

        return -1;

    }



    av_fast_malloc(&t->bitstream_buf, &t->bitstream_buf_size, (buf_end-buf) + FF_INPUT_BUFFER_PADDING_SIZE);

    if (!t->bitstream_buf)

        return AVERROR(ENOMEM);

    s->dsp.bswap_buf(t->bitstream_buf, (const uint32_t*)buf, (buf_end-buf)/4);

    init_get_bits(&s->gb, t->bitstream_buf, 8*(buf_end-buf));



    s->last_dc[0] = s->last_dc[1] = s->last_dc[2] = 0;

    for (s->mb_y=0; s->mb_y<(avctx->height+15)/16; s->mb_y++)

    for (s->mb_x=0; s->mb_x<(avctx->width+15)/16; s->mb_x++)

    {

        if(tqi_decode_mb(s, t->block) < 0)

            break;

        tqi_idct_put(t, t->block);

    }



    *data_size = sizeof(AVFrame);

    *(AVFrame*)data = t->frame;

    return buf_size;

}

    av_fast_malloc(&t->bitstream_buf, &t->bitstream_buf_size, (buf_end-buf) + FF_INPUT_BUFFER_PADDING_SIZE);
static int FUNC_0(AVCodecContext *VAR_0,

                            void *VAR_1, int *VAR_2,

                            AVPacket *VAR_3)

{

    const uint8_t *VAR_4 = VAR_3->VAR_1;

    int VAR_5 = VAR_3->size;

    const uint8_t *VAR_6 = VAR_4+VAR_5;

    TqiContext *t = VAR_0->priv_data;

    MpegEncContext *s = &t->s;



    s->width  = AV_RL16(&VAR_4[0]);

    s->height = AV_RL16(&VAR_4[2]);

    tqi_calculate_qtable(s, VAR_4[4]);

    VAR_4 += 8;



    if (t->frame.VAR_1[0])

        VAR_0->release_buffer(VAR_0, &t->frame);



    if (s->VAR_0->width!=s->width || s->VAR_0->height!=s->height)

        avcodec_set_dimensions(s->VAR_0, s->width, s->height);



    if(VAR_0->get_buffer(VAR_0, &t->frame) < 0) {

        av_log(VAR_0, AV_LOG_ERROR, "get_buffer() failed\n");

        return -1;

    }



    av_fast_malloc(&t->bitstream_buf, &t->bitstream_buf_size, (VAR_6-VAR_4) + FF_INPUT_BUFFER_PADDING_SIZE);

    if (!t->bitstream_buf)

        return AVERROR(ENOMEM);

    s->dsp.bswap_buf(t->bitstream_buf, (const uint32_t*)VAR_4, (VAR_6-VAR_4)/4);

    init_get_bits(&s->gb, t->bitstream_buf, 8*(VAR_6-VAR_4));



    s->last_dc[0] = s->last_dc[1] = s->last_dc[2] = 0;

    for (s->mb_y=0; s->mb_y<(VAR_0->height+15)/16; s->mb_y++)

    for (s->mb_x=0; s->mb_x<(VAR_0->width+15)/16; s->mb_x++)

    {

        if(tqi_decode_mb(s, t->block) < 0)

            break;

        tqi_idct_put(t, t->block);

    }



    *VAR_2 = sizeof(AVFrame);

    *(AVFrame*)VAR_1 = t->frame;

    return VAR_5;

}

static int FUNC_0(AVCodecContext *VAR_0,
void *VAR_1, int *VAR_2,
AVPacket *VAR_3)
{ const uint8_t *VAR_4 = VAR_3->VAR_1; int VAR_5 = VAR_3->size; const uint8_t *VAR_6 = VAR_4+VAR_5; TqiContext *t = VAR_0->priv_data; MpegEncContext *s = &t->s; s->width  = AV_RL16(&VAR_4[0]); s->height = AV_RL16(&VAR_4[2]); tqi_calculate_qtable(s, VAR_4[4]); VAR_4 += 8; if (t->frame.VAR_1[0])
VAR_0->release_buffer(VAR_0, &t->frame); if (s->VAR_0->width!=s->width || s->VAR_0->height!=s->height)
avcodec_set_dimensions(s->VAR_0, s->width, s->height); if(VAR_0->get_buffer(VAR_0, &t->frame) < 0) { av_log(VAR_0, AV_LOG_ERROR, "get_buffer() failed\n"); return -1; } av_fast_malloc(&t->bitstream_buf, &t->bitstream_buf_size, (VAR_6-VAR_4) + FF_INPUT_BUFFER_PADDING_SIZE); if (!t->bitstream_buf)
return AVERROR(ENOMEM); s->dsp.bswap_buf(t->bitstream_buf, (const uint32_t*)VAR_4, (VAR_6-VAR_4)/4); init_get_bits(&s->gb, t->bitstream_buf, 8*(VAR_6-VAR_4)); s->last_dc[0] = s->last_dc[1] = s->last_dc[2] = 0; for (s->mb_y=0; s->mb_y<(VAR_0->height+15)/16; s->mb_y++) for (s->mb_x=0; s->mb_x<(VAR_0->width+15)/16; s->mb_x++) { if(tqi_decode_mb(s, t->block) < 0)
break; tqi_idct_put(t, t->block); } *VAR_2 = sizeof(AVFrame); *(AVFrame*)VAR_1 = t->frame; return VAR_5; }