comparison h263.c @ 1053:f07fd48c23d4 libavcodec

direct blocksize in bframes fix (might fix qpel+bframe bug)
author michaelni
date Sat, 08 Feb 2003 18:23:39 +0000
parents a78f6f72d54e
children bb5de8a59da8
comparison
equal deleted inserted replaced
1052:f529b09e64b7 1053:f07fd48c23d4
401 const int mb_index= s->mb_x + s->mb_y*s->mb_width; 401 const int mb_index= s->mb_x + s->mb_y*s->mb_width;
402 int xy= s->block_index[0]; 402 int xy= s->block_index[0];
403 uint16_t time_pp= s->pp_time; 403 uint16_t time_pp= s->pp_time;
404 uint16_t time_pb= s->pb_time; 404 uint16_t time_pb= s->pb_time;
405 int i; 405 int i;
406 406
407 //FIXME avoid divides 407 //FIXME avoid divides
408 switch(s->co_located_type_table[mb_index]){ 408 switch(s->co_located_type_table[mb_index]){
409 case 0: 409 case 0:
410 s->mv_type= MV_TYPE_16X16; 410 s->mv[0][0][0] = s->mv[0][1][0] = s->mv[0][2][0] = s->mv[0][3][0] = s->motion_val[xy][0]*time_pb/time_pp + mx;
411 s->mv[0][0][0] = s->motion_val[xy][0]*time_pb/time_pp + mx; 411 s->mv[0][0][1] = s->mv[0][1][1] = s->mv[0][2][1] = s->mv[0][3][1] = s->motion_val[xy][1]*time_pb/time_pp + my;
412 s->mv[0][0][1] = s->motion_val[xy][1]*time_pb/time_pp + my; 412 s->mv[1][0][0] = s->mv[1][1][0] = s->mv[1][2][0] = s->mv[1][3][0] = mx ? s->mv[0][0][0] - s->motion_val[xy][0]
413 s->mv[1][0][0] = mx ? s->mv[0][0][0] - s->motion_val[xy][0]
414 : s->motion_val[xy][0]*(time_pb - time_pp)/time_pp; 413 : s->motion_val[xy][0]*(time_pb - time_pp)/time_pp;
415 s->mv[1][0][1] = my ? s->mv[0][0][1] - s->motion_val[xy][1] 414 s->mv[1][0][1] = s->mv[1][1][1] = s->mv[1][2][1] = s->mv[1][3][1] = my ? s->mv[0][0][1] - s->motion_val[xy][1]
416 : s->motion_val[xy][1]*(time_pb - time_pp)/time_pp; 415 : s->motion_val[xy][1]*(time_pb - time_pp)/time_pp;
416 if((s->avctx->workaround_bugs & FF_BUG_DIRECT_BLOCKSIZE) || !s->quarter_sample)
417 s->mv_type= MV_TYPE_16X16;
418 else
419 s->mv_type= MV_TYPE_8X8;
417 break; 420 break;
418 case CO_LOCATED_TYPE_4MV: 421 case CO_LOCATED_TYPE_4MV:
419 s->mv_type = MV_TYPE_8X8; 422 s->mv_type = MV_TYPE_8X8;
420 for(i=0; i<4; i++){ 423 for(i=0; i<4; i++){
421 xy= s->block_index[i]; 424 xy= s->block_index[i];