comparison lzw.c @ 4726:ecb663d00b6b libavcodec

factorize
author michael
date Sun, 25 Mar 2007 14:02:54 +0000
parents 74caca70e2b3
children 23f8f6efc870
comparison
equal deleted inserted replaced
4725:74caca70e2b3 4726:ecb663d00b6b
190 l = len; 190 l = len;
191 sp = s->sp; 191 sp = s->sp;
192 oc = s->oc; 192 oc = s->oc;
193 fc = s->fc; 193 fc = s->fc;
194 194
195 while (sp > s->stack) {
196 *buf++ = *(--sp);
197 if ((--l) == 0)
198 goto the_end;
199 }
200
201 for (;;) { 195 for (;;) {
196 while (sp > s->stack) {
197 *buf++ = *(--sp);
198 if ((--l) == 0)
199 goto the_end;
200 }
202 c = lzw_get_code(s); 201 c = lzw_get_code(s);
203 if (c == s->end_code) { 202 if (c == s->end_code) {
204 s->end_code = -1; 203 s->end_code = -1;
205 break; 204 break;
206 } else if (c == s->clear_code) { 205 } else if (c == s->clear_code) {
240 if (s->cursize < LZW_MAXBITS) { 239 if (s->cursize < LZW_MAXBITS) {
241 s->top_slot <<= 1; 240 s->top_slot <<= 1;
242 s->curmask = mask[++s->cursize]; 241 s->curmask = mask[++s->cursize];
243 } 242 }
244 } 243 }
245 while (sp > s->stack) {
246 *buf++ = *(--sp);
247 if ((--l) == 0)
248 goto the_end;
249 }
250 } 244 }
251 } 245 }
252 the_end: 246 the_end:
253 s->sp = sp; 247 s->sp = sp;
254 s->oc = oc; 248 s->oc = oc;