X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;ds=sidebyside;f=libavcodec%2Ffraps.c;h=0829ac7e74eafc49e82bb26ba40e60bf20622648;hb=9eb42c272b122f8da02e361fc45c1f6f63c15c8a;hp=e03c1fa10c528fdb41a44bc71849054c2aa89e1d;hpb=76c655fb8f3680be765526938adf60c3ab5969fe;p=ffmpeg diff --git a/libavcodec/fraps.c b/libavcodec/fraps.c index e03c1fa10c5..0829ac7e74e 100644 --- a/libavcodec/fraps.c +++ b/libavcodec/fraps.c @@ -21,9 +21,9 @@ */ /** - * @file fraps.c + * @file * Lossless Fraps 'FPS1' decoder - * @author Roine Gustafsson + * @author Roine Gustafsson (roine at users sf net) * @author Konstantin Shishkov * * Codec algorithm for version 0 is taken from Transcode @@ -32,7 +32,7 @@ */ #include "avcodec.h" -#include "bitstream.h" +#include "get_bits.h" #include "huffman.h" #include "bytestream.h" #include "dsputil.h" @@ -63,7 +63,6 @@ static av_cold int decode_init(AVCodecContext *avctx) avctx->pix_fmt= PIX_FMT_NONE; /* set in decode_frame */ s->avctx = avctx; - s->frame.data[0] = NULL; s->tmpbuf = NULL; dsputil_init(&s->dsp, avctx); @@ -130,8 +129,10 @@ static int fraps2_decode_plane(FrapsContext *s, uint8_t *dst, int stride, int w, */ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, - const uint8_t *buf, int buf_size) + AVPacket *avpkt) { + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; FrapsContext * const s = avctx->priv_data; AVFrame *frame = data; AVFrame * const f = (AVFrame*)&s->frame; @@ -148,10 +149,10 @@ static int decode_frame(AVCodecContext *avctx, version = header & 0xff; header_size = (header & (1<<30))? 8 : 4; /* bit 30 means pad to 8 bytes */ - if (version > 2 && version != 4 && version != 5) { + if (version > 5) { av_log(avctx, AV_LOG_ERROR, "This file is encoded with Fraps version %d. " \ - "This codec can only decode version 0, 1, 2 and 4.\n", version); + "This codec can only decode versions <= 5.\n", version); return -1; } @@ -238,7 +239,7 @@ static int decode_frame(AVCodecContext *avctx, for(y=0; yheight; y++) memcpy(&f->data[0][ (avctx->height-y)*f->linesize[0] ], &buf[y*avctx->width*3], - f->linesize[0]); + 3*avctx->width); } break; @@ -288,6 +289,7 @@ static int decode_frame(AVCodecContext *avctx, } } break; + case 3: case 5: /* Virtually the same as version 4, but is for RGB24 */ avctx->pix_fmt = PIX_FMT_BGR24; @@ -364,7 +366,7 @@ static av_cold int decode_end(AVCodecContext *avctx) AVCodec fraps_decoder = { "fraps", - CODEC_TYPE_VIDEO, + AVMEDIA_TYPE_VIDEO, CODEC_ID_FRAPS, sizeof(FrapsContext), decode_init,