Mercurial > libavcodec.hg
comparison cscd.c @ 3034:d37065d8aeff libavcodec
Our own LZO (1X) implementation, under LGPL and optimized for readability.
Tested on CamStudio sample files.
author | reimar |
---|---|
date | Thu, 12 Jan 2006 17:52:41 +0000 |
parents | 6bc2dc147ac5 |
children | 0b546eab515d |
comparison
equal
deleted
inserted
replaced
3033:e8599ab02b38 | 3034:d37065d8aeff |
---|---|
23 #include "avcodec.h" | 23 #include "avcodec.h" |
24 | 24 |
25 #ifdef CONFIG_ZLIB | 25 #ifdef CONFIG_ZLIB |
26 #include <zlib.h> | 26 #include <zlib.h> |
27 #endif | 27 #endif |
28 #ifdef CONFIG_LZO | 28 #include "lzo.h" |
29 #include <lzo1x.h> | |
30 #endif | |
31 | 29 |
32 typedef struct { | 30 typedef struct { |
33 AVFrame pic; | 31 AVFrame pic; |
34 int linelen, height, bpp; | 32 int linelen, height, bpp; |
35 unsigned int decomp_size; | 33 unsigned int decomp_size; |
156 } | 154 } |
157 | 155 |
158 // decompress data | 156 // decompress data |
159 switch ((buf[0] >> 1) & 7) { | 157 switch ((buf[0] >> 1) & 7) { |
160 case 0: { // lzo compression | 158 case 0: { // lzo compression |
161 #ifdef CONFIG_LZO | 159 int outlen = c->decomp_size, inlen = buf_size - 2; |
162 unsigned int dlen = c->decomp_size; | 160 if (lzo1x_decode(c->decomp_buf, &outlen, &buf[2], &inlen)) |
163 if (lzo1x_decompress_safe(&buf[2], buf_size - 2, | |
164 c->decomp_buf, &dlen, NULL) != LZO_E_OK) | |
165 av_log(avctx, AV_LOG_ERROR, "error during lzo decompression\n"); | 161 av_log(avctx, AV_LOG_ERROR, "error during lzo decompression\n"); |
166 break; | 162 break; |
167 #else | |
168 av_log(avctx, AV_LOG_ERROR, "compiled without lzo (GPL) support\n"); | |
169 return -1; | |
170 #endif | |
171 } | 163 } |
172 case 1: { // zlib compression | 164 case 1: { // zlib compression |
173 #ifdef CONFIG_ZLIB | 165 #ifdef CONFIG_ZLIB |
174 unsigned long dlen = c->decomp_size; | 166 unsigned long dlen = c->decomp_size; |
175 if (uncompress(c->decomp_buf, &dlen, &buf[2], buf_size - 2) != Z_OK) | 167 if (uncompress(c->decomp_buf, &dlen, &buf[2], buf_size - 2) != Z_OK) |