Scale() public method

public Scale ( int h_shift, int v_shift ) : Vector
h_shift int
v_shift int
return Vector
Example #1
0
 private short PredictPixel(Vector mv, int x,  int y, int k)
 {
     if(mv.namespace_global) {
         for(int i = 0; i < par.num_refs; i++) {
         par.global[i].GetVector(mv, x, y, i);
         }
         if(k != 0)
         mv = mv.Scale(chroma_h_shift, chroma_v_shift);
     }
     short weight = (short)(par.picture_weight_1 + par.picture_weight_2);
     short val = 0;
     int px, py;
     switch(mv.pred_mode) {
     case 1:
         px = (x << par.mv_precision) + mv.dx[0];
         py = (y << par.mv_precision) + mv.dy[0];
         val = (short)(weight*PredictSubPixel(0, px, py));
         break;
     case 2:
         px = (x << par.mv_precision) + mv.dx[1];
         py = (y << par.mv_precision) + mv.dy[1];
         val = (short)(weight*PredictSubPixel(1, px, py));
         break;
     case 3:
         px = (x << par.mv_precision) + mv.dx[0];
         py = (y << par.mv_precision) + mv.dy[0];
         val = (short)(par.picture_weight_1*PredictSubPixel(0, px, py));
         px = (x << par.mv_precision) + mv.dx[1];
         py = (x << par.mv_precision) + mv.dy[1];
         val += (short)(par.picture_weight_2*PredictSubPixel(1, px, py));
         break;
     default:
         break;
     }
     return (short)Util.RoundShift(val, par.picture_weight_bits);
 }