comparison mpegvideo.c @ 4327:a9f4d5c92218 libavcodec

skiprd
author michael
date Sat, 23 Dec 2006 03:05:36 +0000
parents fb16458e3a86
children 855350bd0daf
comparison
equal deleted inserted replaced
4326:9af83350d4fd 4327:a9f4d5c92218
4328 int skip_dct[8]; 4328 int skip_dct[8];
4329 int dct_offset = s->linesize*8; //default for progressive frames 4329 int dct_offset = s->linesize*8; //default for progressive frames
4330 uint8_t *ptr_y, *ptr_cb, *ptr_cr; 4330 uint8_t *ptr_y, *ptr_cb, *ptr_cr;
4331 int wrap_y, wrap_c; 4331 int wrap_y, wrap_c;
4332 4332
4333 for(i=0; i<mb_block_count; i++) skip_dct[i]=0; 4333 for(i=0; i<mb_block_count; i++) skip_dct[i]=s->skipdct;
4334 4334
4335 if(s->adaptive_quant){ 4335 if(s->adaptive_quant){
4336 const int last_qp= s->qscale; 4336 const int last_qp= s->qscale;
4337 const int mb_xy= mb_x + mb_y*s->mb_stride; 4337 const int mb_xy= mb_x + mb_y*s->mb_stride;
4338 4338
5288 s->mb_intra= 0; 5288 s->mb_intra= 0;
5289 ff_mpeg4_set_direct_mv(s, 0, 0); 5289 ff_mpeg4_set_direct_mv(s, 0, 0);
5290 encode_mb_hq(s, &backup_s, &best_s, CANDIDATE_MB_TYPE_DIRECT, pb, pb2, tex_pb, 5290 encode_mb_hq(s, &backup_s, &best_s, CANDIDATE_MB_TYPE_DIRECT, pb, pb2, tex_pb,
5291 &dmin, &next_block, 0, 0); 5291 &dmin, &next_block, 0, 0);
5292 } 5292 }
5293 if(!best_s.mb_intra && s->flags2&CODEC_FLAG2_SKIP_RD){
5294 int coded=0;
5295 for(i=0; i<6; i++)
5296 coded |= s->block_last_index[i];
5297 if(coded){
5298 int mx,my;
5299 memcpy(s->mv, best_s.mv, sizeof(s->mv));
5300 if(best_s.mv_dir & MV_DIRECT){
5301 mx=my=0; //FIXME find the one we actually used
5302 ff_mpeg4_set_direct_mv(s, mx, my);
5303 }else if(best_s.mv_dir&MV_DIR_BACKWARD){
5304 mx= s->mv[1][0][0];
5305 my= s->mv[1][0][1];
5306 }else{
5307 mx= s->mv[0][0][0];
5308 my= s->mv[0][0][1];
5309 }
5310
5311 s->mv_dir= best_s.mv_dir;
5312 s->mv_type = best_s.mv_type;
5313 s->mb_intra= 0;
5314 /* s->mv[0][0][0] = best_s.mv[0][0][0];
5315 s->mv[0][0][1] = best_s.mv[0][0][1];
5316 s->mv[1][0][0] = best_s.mv[1][0][0];
5317 s->mv[1][0][1] = best_s.mv[1][0][1];*/
5318 backup_s.dquant= 0;
5319 s->skipdct=1;
5320 encode_mb_hq(s, &backup_s, &best_s, CANDIDATE_MB_TYPE_INTER /* wrong but unused */, pb, pb2, tex_pb,
5321 &dmin, &next_block, mx, my);
5322 s->skipdct=0;
5323 }
5324 }
5325
5293 s->current_picture.qscale_table[xy]= best_s.qscale; 5326 s->current_picture.qscale_table[xy]= best_s.qscale;
5294 5327
5295 copy_context_after_encode(s, &best_s, -1); 5328 copy_context_after_encode(s, &best_s, -1);
5296 5329
5297 pb_bits_count= put_bits_count(&s->pb); 5330 pb_bits_count= put_bits_count(&s->pb);