+static int ALWAYS_INLINE x264_predictor_roundclip( int16_t (*dst)[2], int16_t (*mvc)[2], int i_mvc, int16_t mv_limit[2][2], uint32_t pmv )
+{
+ int cnt = 0;
+ for( int i = 0; i < i_mvc; i++ )
+ {
+ int mx = (mvc[i][0] + 2) >> 2;
+ int my = (mvc[i][1] + 2) >> 2;
+ uint32_t mv = pack16to32_mask(mx, my);
+ if( !mv || mv == pmv ) continue;
+ dst[cnt][0] = x264_clip3( mx, mv_limit[0][0], mv_limit[1][0] );
+ dst[cnt][1] = x264_clip3( my, mv_limit[0][1], mv_limit[1][1] );
+ cnt++;
+ }
+ return cnt;
+}
+
+static int ALWAYS_INLINE x264_predictor_clip( int16_t (*dst)[2], int16_t (*mvc)[2], int i_mvc, int16_t mv_limit[2][2], uint32_t pmv )
+{
+ int cnt = 0;
+ int qpel_limit[4] = {mv_limit[0][0] << 2, mv_limit[0][1] << 2, mv_limit[1][0] << 2, mv_limit[1][1] << 2};
+ for( int i = 0; i < i_mvc; i++ )
+ {
+ uint32_t mv = M32( mvc[i] );
+ int mx = mvc[i][0];
+ int my = mvc[i][1];
+ if( !mv || mv == pmv ) continue;
+ dst[cnt][0] = x264_clip3( mx, qpel_limit[0], qpel_limit[2] );
+ dst[cnt][1] = x264_clip3( my, qpel_limit[1], qpel_limit[3] );
+ cnt++;
+ }
+ return cnt;
+}
+