@ -66,6 +66,11 @@ enum SearchMethod {
SEARCH_COUNT
} ;
typedef struct {
int x ; ///< Horizontal shift
int y ; ///< Vertical shift
} IntMotionVector ;
typedef struct {
double x ; ///< Horizontal shift
double y ; ///< Vertical shift
@ -129,7 +134,7 @@ static double clean_mean(double *values, int count)
*/
static void find_block_motion ( DeshakeContext * deshake , uint8_t * src1 ,
uint8_t * src2 , int cx , int cy , int stride ,
MotionVector * mv )
Int MotionVector * mv )
{
int x , y ;
int diff ;
@ -222,7 +227,7 @@ static int block_contrast(uint8_t *src, int x, int y, int stride, int blocksize)
/**
* Find the rotation for a given block .
*/
static double block_angle ( int x , int y , int cx , int cy , MotionVector * shift )
static double block_angle ( int x , int y , int cx , int cy , Int MotionVector * shift )
{
double a1 , a2 , diff ;
@ -247,7 +252,7 @@ static void find_motion(DeshakeContext *deshake, uint8_t *src1, uint8_t *src2,
int width , int height , int stride , Transform * t )
{
int x , y ;
MotionVector mv = { 0 , 0 } ;
Int MotionVector mv = { 0 , 0 } ;
int counts [ 128 ] [ 128 ] ;
int count_max_value = 0 ;
int contrast ;
@ -278,7 +283,7 @@ static void find_motion(DeshakeContext *deshake, uint8_t *src1, uint8_t *src2,
//av_log(NULL, AV_LOG_ERROR, "%d\n", contrast);
find_block_motion ( deshake , src1 , src2 , x , y , stride , & mv ) ;
if ( mv . x ! = - 1 & & mv . y ! = - 1 ) {
counts [ ( int ) ( mv . x + deshake - > rx ) ] [ ( int ) ( mv . y + deshake - > ry ) ] + = 1 ;
counts [ mv . x + deshake - > rx ] [ mv . y + deshake - > ry ] + = 1 ;
if ( x > deshake - > rx & & y > deshake - > ry )
angles [ pos + + ] = block_angle ( x , y , 0 , 0 , & mv ) ;