comparison rv34.c @ 8370:edea96e4367b libavcodec

use precalculated mb_pos where available
author kostya
date Wed, 17 Dec 2008 20:10:15 +0000
parents 45c3780b1a96
children 2ebc9b2c7459
comparison
equal deleted inserted replaced
8369:45c3780b1a96 8370:edea96e4367b
1146 if(s->mb_x && dist > s->mb_width) 1146 if(s->mb_x && dist > s->mb_width)
1147 r->avail_cache[0] = s->current_picture_ptr->mb_type[mb_pos - s->mb_stride - 1]; 1147 r->avail_cache[0] = s->current_picture_ptr->mb_type[mb_pos - s->mb_stride - 1];
1148 1148
1149 s->qscale = r->si.quant; 1149 s->qscale = r->si.quant;
1150 cbp = cbp2 = rv34_decode_mb_header(r, intra_types); 1150 cbp = cbp2 = rv34_decode_mb_header(r, intra_types);
1151 r->cbp_luma [s->mb_x + s->mb_y * s->mb_stride] = cbp; 1151 r->cbp_luma [mb_pos] = cbp;
1152 r->cbp_chroma[s->mb_x + s->mb_y * s->mb_stride] = cbp >> 16; 1152 r->cbp_chroma[mb_pos] = cbp >> 16;
1153 if(s->pict_type == FF_I_TYPE) 1153 if(s->pict_type == FF_I_TYPE)
1154 r->deblock_coefs[mb_pos] = 0xFFFF; 1154 r->deblock_coefs[mb_pos] = 0xFFFF;
1155 else 1155 else
1156 r->deblock_coefs[mb_pos] = rv34_set_deblock_coef(r) | r->cbp_luma[mb_pos]; 1156 r->deblock_coefs[mb_pos] = rv34_set_deblock_coef(r) | r->cbp_luma[mb_pos];
1157 s->current_picture_ptr->qscale_table[s->mb_x + s->mb_y * s->mb_stride] = s->qscale; 1157 s->current_picture_ptr->qscale_table[mb_pos] = s->qscale;
1158 1158
1159 if(cbp == -1) 1159 if(cbp == -1)
1160 return -1; 1160 return -1;
1161 1161
1162 luma_dc_quant = r->block_type == RV34_MB_P_MIX16x16 ? r->luma_dc_quant_p[s->qscale] : r->luma_dc_quant_i[s->qscale]; 1162 luma_dc_quant = r->block_type == RV34_MB_P_MIX16x16 ? r->luma_dc_quant_p[s->qscale] : r->luma_dc_quant_i[s->qscale];
1186 blkoff = ((i & 1) << 2) + ((i & 2) << 4); 1186 blkoff = ((i & 1) << 2) + ((i & 2) << 4);
1187 rv34_decode_block(s->block[blknum] + blkoff, gb, r->cur_vlcs, r->chroma_vlc, 1); 1187 rv34_decode_block(s->block[blknum] + blkoff, gb, r->cur_vlcs, r->chroma_vlc, 1);
1188 rv34_dequant4x4(s->block[blknum] + blkoff, rv34_qscale_tab[rv34_chroma_quant[1][s->qscale]],rv34_qscale_tab[rv34_chroma_quant[0][s->qscale]]); 1188 rv34_dequant4x4(s->block[blknum] + blkoff, rv34_qscale_tab[rv34_chroma_quant[1][s->qscale]],rv34_qscale_tab[rv34_chroma_quant[0][s->qscale]]);
1189 rv34_inv_transform(s->block[blknum] + blkoff); 1189 rv34_inv_transform(s->block[blknum] + blkoff);
1190 } 1190 }
1191 if(IS_INTRA(s->current_picture_ptr->mb_type[s->mb_x + s->mb_y*s->mb_stride])) 1191 if(IS_INTRA(s->current_picture_ptr->mb_type[mb_pos]))
1192 rv34_output_macroblock(r, intra_types, cbp2, r->is16); 1192 rv34_output_macroblock(r, intra_types, cbp2, r->is16);
1193 else 1193 else
1194 rv34_apply_differences(r, cbp2); 1194 rv34_apply_differences(r, cbp2);
1195 1195
1196 return 0; 1196 return 0;