Mercurial > libavcodec.hg
comparison lzwenc.c @ 4832:8a5cbe8e014e libavcodec
remove code_prefix variable, no speed change
author | michael |
---|---|
date | Mon, 09 Apr 2007 22:21:49 +0000 |
parents | 4a7e1f5cdc7a |
children | cad24e81a7b4 |
comparison
equal
deleted
inserted
replaced
4831:4a7e1f5cdc7a | 4832:8a5cbe8e014e |
---|---|
218 * @return Number of bytes written or -1 on error | 218 * @return Number of bytes written or -1 on error |
219 */ | 219 */ |
220 int ff_lzw_encode(LZWEncodeState * s, const uint8_t * inbuf, int insize) | 220 int ff_lzw_encode(LZWEncodeState * s, const uint8_t * inbuf, int insize) |
221 { | 221 { |
222 int i; | 222 int i; |
223 int code_prefix = s->last_code; | |
224 | 223 |
225 if(insize * 3 > (s->bufsize - s->output_bytes) * 2){ | 224 if(insize * 3 > (s->bufsize - s->output_bytes) * 2){ |
226 return -1; | 225 return -1; |
227 } | 226 } |
228 | 227 |
229 if (code_prefix == LZW_PREFIX_EMPTY) | 228 if (s->last_code == LZW_PREFIX_EMPTY) |
230 clearTable(s); | 229 clearTable(s); |
231 | 230 |
232 for (i = 0; i < insize; i++) { | 231 for (i = 0; i < insize; i++) { |
233 uint8_t c = *inbuf++; | 232 uint8_t c = *inbuf++; |
234 int code = findCode(s, c, code_prefix); | 233 int code = findCode(s, c, s->last_code); |
235 if (s->tab[code].hash_prefix == LZW_PREFIX_FREE) { | 234 if (s->tab[code].hash_prefix == LZW_PREFIX_FREE) { |
236 writeCode(s, code_prefix); | 235 writeCode(s, s->last_code); |
237 addCode(s, c, code_prefix, code); | 236 addCode(s, c, s->last_code, code); |
238 code= hash(0, c); | 237 code= hash(0, c); |
239 } | 238 } |
240 code_prefix = s->tab[code].code; | 239 s->last_code = s->tab[code].code; |
241 if (s->tabsize >= s->maxcode - 1) { | 240 if (s->tabsize >= s->maxcode - 1) { |
242 clearTable(s); | 241 clearTable(s); |
243 } | 242 } |
244 } | 243 } |
245 s->last_code = code_prefix; | |
246 | 244 |
247 return writtenBytes(s); | 245 return writtenBytes(s); |
248 } | 246 } |
249 | 247 |
250 /** | 248 /** |