static int ptx_decode_frame(AVCodecContext *avctx, void *data, int *data_size,

                            AVPacket *avpkt) {

    const uint8_t *buf = avpkt->data;


    PTXContext * const s = avctx->priv_data;

    AVFrame *picture = data;

    AVFrame * const p = &s->picture;

    unsigned int offset, w, h, y, stride, bytes_per_pixel;

    uint8_t *ptr;





    offset          = AV_RL16(buf);

    w               = AV_RL16(buf+8);

    h               = AV_RL16(buf+10);

    bytes_per_pixel = AV_RL16(buf+12) >> 3;



    if (bytes_per_pixel != 2) {

        av_log_ask_for_sample(avctx, "Image format is not RGB15.\n");

        return -1;

    }



    avctx->pix_fmt = PIX_FMT_RGB555;



    if (buf_end - buf < offset)


    if (offset != 0x2c)

        av_log_ask_for_sample(avctx, "offset != 0x2c\n");



    buf += offset;



    if (p->data[0])

        avctx->release_buffer(avctx, p);



    if (av_image_check_size(w, h, 0, avctx))

        return -1;

    if (w != avctx->width || h != avctx->height)

        avcodec_set_dimensions(avctx, w, h);

    if (avctx->get_buffer(avctx, p) < 0) {

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

        return -1;

    }



    p->pict_type = AV_PICTURE_TYPE_I;



    ptr    = p->data[0];

    stride = p->linesize[0];



    for (y=0; y<h; y++) {

        if (buf_end - buf < w * bytes_per_pixel)

            break;

#if HAVE_BIGENDIAN

        unsigned int x;

        for (x=0; x<w*bytes_per_pixel; x+=bytes_per_pixel)

            AV_WN16(ptr+x, AV_RL16(buf+x));

#else

        memcpy(ptr, buf, w*bytes_per_pixel);

#endif

        ptr += stride;

        buf += w*bytes_per_pixel;

    }



    *picture = s->picture;

    *data_size = sizeof(AVPicture);



    return offset + w*h*bytes_per_pixel;

}
static int ptx_decode_frame(AVCodecContext *avctx, void *data, int *data_size,

                            AVPacket *avpkt) {

    const uint8_t *buf = avpkt->data;


    PTXContext * const s = avctx->priv_data;

    AVFrame *picture = data;

    AVFrame * const p = &s->picture;

    unsigned int offset, w, h, y, stride, bytes_per_pixel;

    uint8_t *ptr;





    offset          = AV_RL16(buf);

    w               = AV_RL16(buf+8);

    h               = AV_RL16(buf+10);

    bytes_per_pixel = AV_RL16(buf+12) >> 3;



    if (bytes_per_pixel != 2) {

        av_log_ask_for_sample(avctx, "Image format is not RGB15.\n");

        return -1;

    }



    avctx->pix_fmt = PIX_FMT_RGB555;



    if (buf_end - buf < offset)


    if (offset != 0x2c)

        av_log_ask_for_sample(avctx, "offset != 0x2c\n");



    buf += offset;



    if (p->data[0])

        avctx->release_buffer(avctx, p);



    if (av_image_check_size(w, h, 0, avctx))

        return -1;

    if (w != avctx->width || h != avctx->height)

        avcodec_set_dimensions(avctx, w, h);

    if (avctx->get_buffer(avctx, p) < 0) {

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

        return -1;

    }



    p->pict_type = AV_PICTURE_TYPE_I;



    ptr    = p->data[0];

    stride = p->linesize[0];



    for (y=0; y<h; y++) {

        if (buf_end - buf < w * bytes_per_pixel)

            break;

#if HAVE_BIGENDIAN

        unsigned int x;

        for (x=0; x<w*bytes_per_pixel; x+=bytes_per_pixel)

            AV_WN16(ptr+x, AV_RL16(buf+x));

#else

        memcpy(ptr, buf, w*bytes_per_pixel);

#endif

        ptr += stride;

        buf += w*bytes_per_pixel;

    }



    *picture = s->picture;

    *data_size = sizeof(AVPicture);



    return offset + w*h*bytes_per_pixel;

}
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;


    PTXContext * const s = VAR_0->priv_data;

    AVFrame *picture = VAR_1;

    AVFrame * const p = &s->picture;

    unsigned int VAR_5, VAR_6, VAR_7, VAR_8, VAR_9, VAR_10;

    uint8_t *ptr;





    VAR_5          = AV_RL16(VAR_4);

    VAR_6               = AV_RL16(VAR_4+8);

    VAR_7               = AV_RL16(VAR_4+10);

    VAR_10 = AV_RL16(VAR_4+12) >> 3;



    if (VAR_10 != 2) {

        av_log_ask_for_sample(VAR_0, "Image format is not RGB15.\n");

        return -1;

    }



    VAR_0->pix_fmt = PIX_FMT_RGB555;



    if (buf_end - VAR_4 < VAR_5)


    if (VAR_5 != 0x2c)

        av_log_ask_for_sample(VAR_0, "VAR_5 != 0x2c\n");



    VAR_4 += VAR_5;



    if (p->VAR_1[0])

        VAR_0->release_buffer(VAR_0, p);



    if (av_image_check_size(VAR_6, VAR_7, 0, VAR_0))

        return -1;

    if (VAR_6 != VAR_0->width || VAR_7 != VAR_0->height)

        avcodec_set_dimensions(VAR_0, VAR_6, VAR_7);

    if (VAR_0->get_buffer(VAR_0, p) < 0) {

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

        return -1;

    }



    p->pict_type = AV_PICTURE_TYPE_I;



    ptr    = p->VAR_1[0];

    VAR_9 = p->linesize[0];



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

        if (buf_end - VAR_4 < VAR_6 * VAR_10)

            break;

#if HAVE_BIGENDIAN

        unsigned int x;

        for (x=0; x<VAR_6*VAR_10; x+=VAR_10)

            AV_WN16(ptr+x, AV_RL16(VAR_4+x));

#else

        memcpy(ptr, VAR_4, VAR_6*VAR_10);

#endif

        ptr += VAR_9;

        VAR_4 += VAR_6*VAR_10;

    }



    *picture = s->picture;

    *VAR_2 = sizeof(AVPicture);



    return VAR_5 + VAR_6*VAR_7*VAR_10;

}
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; PTXContext * const s = VAR_0->priv_data; AVFrame *picture = VAR_1; AVFrame * const p = &s->picture; unsigned int VAR_5, VAR_6, VAR_7, VAR_8, VAR_9, VAR_10; uint8_t *ptr; VAR_5          = AV_RL16(VAR_4); VAR_6               = AV_RL16(VAR_4+8); VAR_7               = AV_RL16(VAR_4+10); VAR_10 = AV_RL16(VAR_4+12) >> 3; if (VAR_10 != 2) { av_log_ask_for_sample(VAR_0, "Image format is not RGB15.\n"); return -1; } VAR_0->pix_fmt = PIX_FMT_RGB555; if (buf_end - VAR_4 < VAR_5)
if (VAR_5 != 0x2c)
av_log_ask_for_sample(VAR_0, "VAR_5 != 0x2c\n"); VAR_4 += VAR_5; if (p->VAR_1[0])
VAR_0->release_buffer(VAR_0, p); if (av_image_check_size(VAR_6, VAR_7, 0, VAR_0))
return -1; if (VAR_6 != VAR_0->width || VAR_7 != VAR_0->height)
avcodec_set_dimensions(VAR_0, VAR_6, VAR_7); if (VAR_0->get_buffer(VAR_0, p) < 0) { av_log(VAR_0, AV_LOG_ERROR, "get_buffer() failed\n"); return -1; } p->pict_type = AV_PICTURE_TYPE_I; ptr    = p->VAR_1[0]; VAR_9 = p->linesize[0]; for (VAR_8=0; VAR_8<VAR_7; VAR_8++) { if (buf_end - VAR_4 < VAR_6 * VAR_10)
break; #if HAVE_BIGENDIAN
unsigned int x; for (x=0; x<VAR_6*VAR_10; x+=VAR_10) AV_WN16(ptr+x, AV_RL16(VAR_4+x)); #else
memcpy(ptr, VAR_4, VAR_6*VAR_10); #endif
ptr += VAR_9; VAR_4 += VAR_6*VAR_10; } *picture = s->picture; *VAR_2 = sizeof(AVPicture); return VAR_5 + VAR_6*VAR_7*VAR_10; }