Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Guillaume Martres
aom-rav1e
Commits
e6fadb5b
Commit
e6fadb5b
authored
Jun 10, 2014
by
Dmitry Kovalev
Committed by
Gerrit Code Review
Jun 10, 2014
Browse files
Merge "Cleaning up vp9_variance_mmx.c."
parents
4a8103d6
ac3d97f1
Changes
1
Hide whitespace changes
Inline
Side-by-side
vp9/encoder/x86/vp9_variance_mmx.c
View file @
e6fadb5b
...
...
@@ -12,141 +12,92 @@
#include
"vp9/encoder/vp9_variance.h"
#include
"vpx_ports/mem.h"
extern
unsigned
int
vp9_get8x8var_mmx
(
const
unsigned
char
*
src_ptr
,
int
source_stride
,
const
unsigned
char
*
ref_ptr
,
int
recon_stride
,
unsigned
int
*
SSE
,
int
*
Sum
);
extern
unsigned
int
vp9_get4x4var_mmx
(
const
unsigned
char
*
src_ptr
,
int
source_stride
,
const
unsigned
char
*
ref_ptr
,
int
recon_stride
,
unsigned
int
*
SSE
,
int
*
Sum
);
unsigned
int
vp9_variance4x4_mmx
(
const
unsigned
char
*
src_ptr
,
int
source_stride
,
const
unsigned
char
*
ref_ptr
,
int
recon_stride
,
unsigned
int
*
sse
)
{
unsigned
int
var
;
int
avg
;
vp9_get4x4var_mmx
(
src_ptr
,
source_stride
,
ref_ptr
,
recon_stride
,
&
var
,
&
avg
);
*
sse
=
var
;
return
(
var
-
(((
unsigned
int
)
avg
*
avg
)
>>
4
));
unsigned
int
vp9_get8x8var_mmx
(
const
uint8_t
*
src
,
int
src_stride
,
const
uint8_t
*
ref
,
int
ref_stride
,
unsigned
int
*
sse
,
int
*
sum
);
unsigned
int
vp9_get4x4var_mmx
(
const
uint8_t
*
src
,
int
src_stride
,
const
uint8_t
*
ref
,
int
ref_stride
,
unsigned
int
*
SSE
,
int
*
sum
);
unsigned
int
vp9_variance4x4_mmx
(
const
uint8_t
*
src
,
int
src_stride
,
const
uint8_t
*
ref
,
int
ref_stride
,
unsigned
int
*
sse
)
{
int
sum
;
vp9_get4x4var_mmx
(
src
,
src_stride
,
ref
,
ref_stride
,
sse
,
&
sum
);
return
*
sse
-
(((
unsigned
int
)
sum
*
sum
)
>>
4
);
}
unsigned
int
vp9_variance8x8_mmx
(
const
unsigned
char
*
src_ptr
,
int
source_stride
,
const
unsigned
char
*
ref_ptr
,
int
recon_stride
,
unsigned
int
*
sse
)
{
unsigned
int
var
;
int
avg
;
unsigned
int
vp9_variance8x8_mmx
(
const
uint8_t
*
src
,
int
src_stride
,
const
uint8_t
*
ref
,
int
ref_stride
,
unsigned
int
*
sse
)
{
int
sum
;
vp9_get8x8var_mmx
(
src
,
src_stride
,
ref
,
ref_stride
,
sse
,
&
sum
);
return
*
sse
-
(((
unsigned
int
)
sum
*
sum
)
>>
6
);
}
unsigned
int
vp9_mse16x16_mmx
(
const
uint8_t
*
src
,
int
src_stride
,
const
uint8_t
*
ref
,
int
ref_stride
,
unsigned
int
*
sse
)
{
unsigned
int
sse0
,
sse1
,
sse2
,
sse3
;
int
sum0
,
sum1
,
sum2
,
sum3
;
vp9_get8x8var_mmx
(
src_ptr
,
source_stride
,
ref_ptr
,
recon_stride
,
&
var
,
&
avg
);
*
sse
=
var
;
vp9_get8x8var_mmx
(
src
,
src_stride
,
ref
,
ref_stride
,
&
sse0
,
&
sum0
);
vp9_get8x8var_mmx
(
src
+
8
,
src_stride
,
ref
+
8
,
ref_stride
,
&
sse1
,
&
sum1
);
vp9_get8x8var_mmx
(
src
+
8
*
src_stride
,
src_stride
,
ref
+
8
*
ref_stride
,
ref_stride
,
&
sse2
,
&
sum2
);
vp9_get8x8var_mmx
(
src
+
8
*
src_stride
+
8
,
src_stride
,
ref
+
8
*
ref_stride
+
8
,
ref_stride
,
&
sse3
,
&
sum3
);
return
(
var
-
(((
unsigned
int
)
avg
*
avg
)
>>
6
));
*
sse
=
sse0
+
sse1
+
sse2
+
sse3
;
return
*
sse
;
}
unsigned
int
vp9_mse16x16_mmx
(
const
unsigned
char
*
src_ptr
,
int
source_stride
,
const
unsigned
char
*
ref_ptr
,
int
recon_stride
,
unsigned
int
*
sse
)
{
unsigned
int
sse0
,
sse1
,
sse2
,
sse3
,
var
;
int
sum0
,
sum1
,
sum2
,
sum3
;
unsigned
int
vp9_variance16x16_mmx
(
const
uint8_t
*
src
,
int
src_stride
,
const
uint8_t
*
ref
,
int
ref_stride
,
unsigned
int
*
sse
)
{
unsigned
int
sse0
,
sse1
,
sse2
,
sse3
;
int
sum0
,
sum1
,
sum2
,
sum3
,
sum
;
vp9_get8x8var_mmx
(
src_ptr
,
source_stride
,
ref_ptr
,
recon_stride
,
&
sse0
,
&
sum0
);
vp9_get8x8var_mmx
(
src_ptr
+
8
,
source_stride
,
ref_ptr
+
8
,
recon_stride
,
&
sse1
,
&
sum1
);
vp9_get8x8var_mmx
(
src_ptr
+
8
*
source_stride
,
source_stride
,
ref_ptr
+
8
*
recon_stride
,
recon_stride
,
&
sse2
,
&
sum2
);
vp9_get8x8var_mmx
(
src_ptr
+
8
*
source_stride
+
8
,
source_stride
,
ref_ptr
+
8
*
recon_stride
+
8
,
recon_stride
,
&
sse3
,
&
sum3
);
vp9_get8x8var_mmx
(
src
,
src_stride
,
ref
,
ref_stride
,
&
sse0
,
&
sum0
);
vp9_get8x8var_mmx
(
src
+
8
,
src_stride
,
ref
+
8
,
ref_stride
,
&
sse1
,
&
sum1
);
vp9_get8x8var_mmx
(
src
+
8
*
src_stride
,
src_stride
,
ref
+
8
*
ref_stride
,
ref_stride
,
&
sse2
,
&
sum2
);
vp9_get8x8var_mmx
(
src
+
8
*
src_stride
+
8
,
src_stride
,
ref
+
8
*
ref_stride
+
8
,
ref_stride
,
&
sse3
,
&
sum3
);
var
=
sse0
+
sse1
+
sse2
+
sse3
;
*
sse
=
var
;
return
var
;
*
sse
=
sse0
+
sse1
+
sse2
+
sse3
;
sum
=
sum0
+
sum1
+
sum2
+
sum3
;
return
*
sse
-
(((
unsigned
int
)
sum
*
sum
)
>>
8
)
;
}
unsigned
int
vp9_variance16x8_mmx
(
const
uint8_t
*
src
,
int
src_stride
,
const
uint8_t
*
ref
,
int
ref_stride
,
unsigned
int
*
sse
)
{
unsigned
int
sse0
,
sse1
;
int
sum0
,
sum1
,
sum
;
unsigned
int
vp9_variance16x16_mmx
(
const
unsigned
char
*
src_ptr
,
int
source_stride
,
const
unsigned
char
*
ref_ptr
,
int
recon_stride
,
unsigned
int
*
sse
)
{
unsigned
int
sse0
,
sse1
,
sse2
,
sse3
,
var
;
int
sum0
,
sum1
,
sum2
,
sum3
,
avg
;
vp9_get8x8var_mmx
(
src_ptr
,
source_stride
,
ref_ptr
,
recon_stride
,
&
sse0
,
&
sum0
);
vp9_get8x8var_mmx
(
src_ptr
+
8
,
source_stride
,
ref_ptr
+
8
,
recon_stride
,
&
sse1
,
&
sum1
);
vp9_get8x8var_mmx
(
src_ptr
+
8
*
source_stride
,
source_stride
,
ref_ptr
+
8
*
recon_stride
,
recon_stride
,
&
sse2
,
&
sum2
);
vp9_get8x8var_mmx
(
src_ptr
+
8
*
source_stride
+
8
,
source_stride
,
ref_ptr
+
8
*
recon_stride
+
8
,
recon_stride
,
&
sse3
,
&
sum3
);
var
=
sse0
+
sse1
+
sse2
+
sse3
;
avg
=
sum0
+
sum1
+
sum2
+
sum3
;
*
sse
=
var
;
return
(
var
-
(((
unsigned
int
)
avg
*
avg
)
>>
8
));
}
vp9_get8x8var_mmx
(
src
,
src_stride
,
ref
,
ref_stride
,
&
sse0
,
&
sum0
);
vp9_get8x8var_mmx
(
src
+
8
,
src_stride
,
ref
+
8
,
ref_stride
,
&
sse1
,
&
sum1
);
unsigned
int
vp9_variance16x8_mmx
(
const
unsigned
char
*
src_ptr
,
int
source_stride
,
const
unsigned
char
*
ref_ptr
,
int
recon_stride
,
unsigned
int
*
sse
)
{
unsigned
int
sse0
,
sse1
,
var
;
int
sum0
,
sum1
,
avg
;
vp9_get8x8var_mmx
(
src_ptr
,
source_stride
,
ref_ptr
,
recon_stride
,
&
sse0
,
&
sum0
);
vp9_get8x8var_mmx
(
src_ptr
+
8
,
source_stride
,
ref_ptr
+
8
,
recon_stride
,
&
sse1
,
&
sum1
);
var
=
sse0
+
sse1
;
avg
=
sum0
+
sum1
;
*
sse
=
var
;
return
(
var
-
(((
unsigned
int
)
avg
*
avg
)
>>
7
));
*
sse
=
sse0
+
sse1
;
sum
=
sum0
+
sum1
;
return
*
sse
-
(((
unsigned
int
)
sum
*
sum
)
>>
7
);
}
unsigned
int
vp9_variance8x16_mmx
(
const
unsigned
char
*
src_ptr
,
int
source_stride
,
const
unsigned
char
*
ref_ptr
,
int
recon_stride
,
unsigned
int
*
sse
)
{
unsigned
int
sse0
,
sse1
,
var
;
int
sum0
,
sum1
,
avg
;
vp9_get8x8var_mmx
(
src_ptr
,
source_stride
,
ref_ptr
,
recon_stride
,
&
sse0
,
&
sum0
);
vp9_get8x8var_mmx
(
src_ptr
+
8
*
source_stride
,
source_stride
,
ref_ptr
+
8
*
recon_stride
,
recon_stride
,
&
sse1
,
&
sum1
);
unsigned
int
vp9_variance8x16_mmx
(
const
uint8_t
*
src
,
int
src_stride
,
const
uint8_t
*
ref
,
int
ref_stride
,
unsigned
int
*
sse
)
{
unsigned
int
sse0
,
sse1
;
int
sum0
,
sum1
,
sum
;
v
ar
=
sse0
+
sse1
;
avg
=
sum0
+
sum1
;
*
sse
=
var
;
v
p9_get8x8var_mmx
(
src
,
src_stride
,
ref
,
ref_stride
,
&
sse0
,
&
sum0
)
;
vp9_get8x8var_mmx
(
src
+
8
*
src_stride
,
src_stride
,
ref
+
8
*
ref_stride
,
ref_stride
,
&
sse1
,
&
sum1
)
;
return
(
var
-
(((
unsigned
int
)
avg
*
avg
)
>>
7
));
*
sse
=
sse0
+
sse1
;
sum
=
sum0
+
sum1
;
return
*
sse
-
(((
unsigned
int
)
sum
*
sum
)
>>
7
);
}
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment