comparison cavs.c @ 5243:dd11d0b32cc9 libavcodec

move dequantization into its own inline function
author stefang
date Sat, 07 Jul 2007 07:14:58 +0000
parents deb5b8213d4e
children eeba62cd2181
comparison
equal deleted inserted replaced
5242:deb5b8213d4e 5243:dd11d0b32cc9
497 * @param stride line stride in frame buffer 497 * @param stride line stride in frame buffer
498 */ 498 */
499 static int decode_residual_block(AVSContext *h, GetBitContext *gb, 499 static int decode_residual_block(AVSContext *h, GetBitContext *gb,
500 const dec_2dvlc_t *r, int esc_golomb_order, 500 const dec_2dvlc_t *r, int esc_golomb_order,
501 int qp, uint8_t *dst, int stride) { 501 int qp, uint8_t *dst, int stride) {
502 int i,pos = -1; 502 int i, level_code, esc_code, level, run, mask;
503 int level_code, esc_code, level, run, mask; 503 DCTELEM level_buf[64];
504 int level_buf[64]; 504 uint8_t run_buf[64];
505 int run_buf[64];
506 int dqm = dequant_mul[qp];
507 int dqs = dequant_shift[qp];
508 int dqa = 1 << (dqs - 1);
509 const uint8_t *scantab = h->scantable.permutated;
510 DCTELEM *block = h->block; 505 DCTELEM *block = h->block;
511 506
512 for(i=0;i<65;i++) { 507 for(i=0;i<65;i++) {
513 level_code = get_ue_code(gb,r->golomb_order); 508 level_code = get_ue_code(gb,r->golomb_order);
514 if(level_code >= ESCAPE_CODE) { 509 if(level_code >= ESCAPE_CODE) {
527 r += r->rltab[level_code][2]; 522 r += r->rltab[level_code][2];
528 } 523 }
529 level_buf[i] = level; 524 level_buf[i] = level;
530 run_buf[i] = run; 525 run_buf[i] = run;
531 } 526 }
532 /* inverse scan and dequantization */ 527 if(dequant(h,level_buf, run_buf, block, dequant_mul[qp],
533 while(--i >= 0){ 528 dequant_shift[qp], i))
534 pos += run_buf[i]; 529 return -1;
535 if(pos > 63) {
536 av_log(h->s.avctx, AV_LOG_ERROR,
537 "position out of block bounds at pic %d MB(%d,%d)\n",
538 h->picture.poc, h->mbx, h->mby);
539 return -1;
540 }
541 block[scantab[pos]] = (level_buf[i]*dqm + dqa) >> dqs;
542 }
543 h->s.dsp.cavs_idct8_add(dst,block,stride); 530 h->s.dsp.cavs_idct8_add(dst,block,stride);
544 return 0; 531 return 0;
545 } 532 }
546 533
547 534