static int ptx_decode_frame(AVCodecContext *avctx, void *data, int *data_size,
                            AVPacket *avpkt) {
    const uint8_t *buf = avpkt->data;
    const uint8_t *buf_end = avpkt->data + avpkt->size;
    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;
    if (buf_end - buf < 14)
    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 (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;
    const uint8_t *buf_end = avpkt->data + avpkt->size;
    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;
    if (buf_end - buf < 14)
    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 (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;
    const uint8_t *VAR_5 = VAR_3->VAR_1 + VAR_3->size;
    PTXContext * const s = VAR_0->priv_data;
    AVFrame *picture = VAR_1;
    AVFrame * const p = &s->picture;
    unsigned int VAR_6, VAR_7, VAR_8, VAR_9, VAR_10, VAR_11;
    uint8_t *ptr;
    if (VAR_5 - VAR_4 < 14)
    VAR_6          = AV_RL16(VAR_4);
    VAR_7               = AV_RL16(VAR_4+8);
    VAR_8               = AV_RL16(VAR_4+10);
    VAR_11 = AV_RL16(VAR_4+12) >> 3;
    if (VAR_11 != 2) {
        av_log_ask_for_sample(VAR_0, "Image format is not RGB15.\n");
        return -1;
    }
    VAR_0->pix_fmt = PIX_FMT_RGB555;
    if (VAR_6 != 0x2c)
        av_log_ask_for_sample(VAR_0, "VAR_6 != 0x2c\n");
    VAR_4 += VAR_6;
    if (p->VAR_1[0])
        VAR_0->release_buffer(VAR_0, p);
    if (av_image_check_size(VAR_7, VAR_8, 0, VAR_0))
        return -1;
    if (VAR_7 != VAR_0->width || VAR_8 != VAR_0->height)
        avcodec_set_dimensions(VAR_0, VAR_7, VAR_8);
    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_10 = p->linesize[0];
    for (VAR_9=0; VAR_9<VAR_8; VAR_9++) {
        if (VAR_5 - VAR_4 < VAR_7 * VAR_11)
            break;
#if HAVE_BIGENDIAN
        unsigned int x;
        for (x=0; x<VAR_7*VAR_11; x+=VAR_11)
            AV_WN16(ptr+x, AV_RL16(VAR_4+x));
#else
        memcpy(ptr, VAR_4, VAR_7*VAR_11);
#endif
        ptr += VAR_10;
        VAR_4 += VAR_7*VAR_11;
    }
    *picture = s->picture;
    *VAR_2 = sizeof(AVPicture);
    return VAR_6 + VAR_7*VAR_8*VAR_11;
}
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; const uint8_t *VAR_5 = VAR_3->VAR_1 + VAR_3->size; PTXContext * const s = VAR_0->priv_data; AVFrame *picture = VAR_1; AVFrame * const p = &s->picture; unsigned int VAR_6, VAR_7, VAR_8, VAR_9, VAR_10, VAR_11; uint8_t *ptr; if (VAR_5 - VAR_4 < 14)
VAR_6          = AV_RL16(VAR_4); VAR_7               = AV_RL16(VAR_4+8); VAR_8               = AV_RL16(VAR_4+10); VAR_11 = AV_RL16(VAR_4+12) >> 3; if (VAR_11 != 2) { av_log_ask_for_sample(VAR_0, "Image format is not RGB15.\n"); return -1; } VAR_0->pix_fmt = PIX_FMT_RGB555; if (VAR_6 != 0x2c)
av_log_ask_for_sample(VAR_0, "VAR_6 != 0x2c\n"); VAR_4 += VAR_6; if (p->VAR_1[0])
VAR_0->release_buffer(VAR_0, p); if (av_image_check_size(VAR_7, VAR_8, 0, VAR_0))
return -1; if (VAR_7 != VAR_0->width || VAR_8 != VAR_0->height)
avcodec_set_dimensions(VAR_0, VAR_7, VAR_8); 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_10 = p->linesize[0]; for (VAR_9=0; VAR_9<VAR_8; VAR_9++) { if (VAR_5 - VAR_4 < VAR_7 * VAR_11)
break; #if HAVE_BIGENDIAN
unsigned int x; for (x=0; x<VAR_7*VAR_11; x+=VAR_11) AV_WN16(ptr+x, AV_RL16(VAR_4+x)); #else
memcpy(ptr, VAR_4, VAR_7*VAR_11); #endif
ptr += VAR_10; VAR_4 += VAR_7*VAR_11; } *picture = s->picture; *VAR_2 = sizeof(AVPicture); return VAR_6 + VAR_7*VAR_8*VAR_11; }