Mercurial > libavcodec.hg
changeset 5653:1b0c60bfae2a libavcodec
Simplify nuv: factor out LZO decompression
author | reimar |
---|---|
date | Sun, 09 Sep 2007 08:22:07 +0000 |
parents | 941e5deeb2a4 |
children | 93a54fcfa2f4 |
files | nuv.c |
diffstat | 1 files changed, 9 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/nuv.c Sat Sep 08 14:52:21 2007 +0000 +++ b/nuv.c Sun Sep 09 08:22:07 2007 +0000 @@ -114,11 +114,19 @@ // skip rest of the frameheader. buf = &buf[12]; buf_size -= 12; + if (comptype == NUV_RTJPEG_IN_LZO || comptype == NUV_LZO) { + int outlen = c->decomp_size, inlen = buf_size; + if (lzo1x_decode(c->decomp_buf, &outlen, buf, &inlen)) + av_log(avctx, AV_LOG_ERROR, "error during lzo decompression\n"); + buf = c->decomp_buf; + buf_size = c->decomp_size; + } c->pic.pict_type = FF_I_TYPE; c->pic.key_frame = 1; // decompress/copy/whatever data switch (comptype) { + case NUV_LZO: case NUV_UNCOMPRESSED: { int height = c->height; if (buf_size < c->width * height * 3 / 2) { @@ -128,24 +136,11 @@ copy_frame(&c->pic, buf, c->width, height); break; } + case NUV_RTJPEG_IN_LZO: case NUV_RTJPEG: { rtjpeg_decode_frame_yuv420(&c->rtj, &c->pic, buf, buf_size); break; } - case NUV_RTJPEG_IN_LZO: { - int outlen = c->decomp_size, inlen = buf_size; - if (lzo1x_decode(c->decomp_buf, &outlen, buf, &inlen)) - av_log(avctx, AV_LOG_ERROR, "error during lzo decompression\n"); - rtjpeg_decode_frame_yuv420(&c->rtj, &c->pic, c->decomp_buf, c->decomp_size); - break; - } - case NUV_LZO: { - int outlen = c->decomp_size, inlen = buf_size; - if (lzo1x_decode(c->decomp_buf, &outlen, buf, &inlen)) - av_log(avctx, AV_LOG_ERROR, "error during lzo decompression\n"); - copy_frame(&c->pic, c->decomp_buf, c->width, c->height); - break; - } case NUV_BLACK: { memset(c->pic.data[0], 0, c->width * c->height); memset(c->pic.data[1], 128, c->width * c->height / 4);