Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Xiph.Org
aom-rav1e
Commits
a674ba93
Commit
a674ba93
authored
Oct 03, 2016
by
Yi Luo
Browse files
Fix high bitdepth variance overflow on uint32_t
BUG=webm:1305 Change-Id: I4c56631359e298b99e618c07bcbae9f793c5e2ac
parent
bf043127
Changes
1
Hide whitespace changes
Inline
Side-by-side
aom_dsp/x86/highbd_variance_sse4.c
View file @
a674ba93
...
@@ -68,39 +68,42 @@ static INLINE void variance4x4_64_sse4_1(const uint8_t *a8, int a_stride,
...
@@ -68,39 +68,42 @@ static INLINE void variance4x4_64_sse4_1(const uint8_t *a8, int a_stride,
uint32_t
aom_highbd_8_variance4x4_sse4_1
(
const
uint8_t
*
a
,
int
a_stride
,
uint32_t
aom_highbd_8_variance4x4_sse4_1
(
const
uint8_t
*
a
,
int
a_stride
,
const
uint8_t
*
b
,
int
b_stride
,
const
uint8_t
*
b
,
int
b_stride
,
uint32_t
*
sse
)
{
uint32_t
*
sse
)
{
int64_t
sum
;
int64_t
sum
,
diff
;
uint64_t
local_sse
;
uint64_t
local_sse
;
variance4x4_64_sse4_1
(
a
,
a_stride
,
b
,
b_stride
,
&
local_sse
,
&
sum
);
variance4x4_64_sse4_1
(
a
,
a_stride
,
b
,
b_stride
,
&
local_sse
,
&
sum
);
*
sse
=
(
uint32_t
)
local_sse
;
*
sse
=
(
uint32_t
)
local_sse
;
return
*
sse
-
(
uint32_t
)((
sum
*
sum
)
>>
4
);
diff
=
(
int64_t
)
*
sse
-
((
sum
*
sum
)
>>
4
);
return
(
diff
>=
0
)
?
(
uint32_t
)
diff
:
0
;
}
}
uint32_t
aom_highbd_10_variance4x4_sse4_1
(
const
uint8_t
*
a
,
int
a_stride
,
uint32_t
aom_highbd_10_variance4x4_sse4_1
(
const
uint8_t
*
a
,
int
a_stride
,
const
uint8_t
*
b
,
int
b_stride
,
const
uint8_t
*
b
,
int
b_stride
,
uint32_t
*
sse
)
{
uint32_t
*
sse
)
{
int64_t
sum
;
int64_t
sum
,
diff
;
uint64_t
local_sse
;
uint64_t
local_sse
;
variance4x4_64_sse4_1
(
a
,
a_stride
,
b
,
b_stride
,
&
local_sse
,
&
sum
);
variance4x4_64_sse4_1
(
a
,
a_stride
,
b
,
b_stride
,
&
local_sse
,
&
sum
);
*
sse
=
(
uint32_t
)
ROUND_POWER_OF_TWO
(
local_sse
,
4
);
*
sse
=
(
uint32_t
)
ROUND_POWER_OF_TWO
(
local_sse
,
4
);
sum
=
ROUND_POWER_OF_TWO
(
sum
,
2
);
sum
=
ROUND_POWER_OF_TWO
(
sum
,
2
);
return
*
sse
-
(
uint32_t
)((
sum
*
sum
)
>>
4
);
diff
=
(
int64_t
)
*
sse
-
((
sum
*
sum
)
>>
4
);
return
(
diff
>=
0
)
?
(
uint32_t
)
diff
:
0
;
}
}
uint32_t
aom_highbd_12_variance4x4_sse4_1
(
const
uint8_t
*
a
,
int
a_stride
,
uint32_t
aom_highbd_12_variance4x4_sse4_1
(
const
uint8_t
*
a
,
int
a_stride
,
const
uint8_t
*
b
,
int
b_stride
,
const
uint8_t
*
b
,
int
b_stride
,
uint32_t
*
sse
)
{
uint32_t
*
sse
)
{
int64_t
sum
;
int64_t
sum
,
diff
;
uint64_t
local_sse
;
uint64_t
local_sse
;
variance4x4_64_sse4_1
(
a
,
a_stride
,
b
,
b_stride
,
&
local_sse
,
&
sum
);
variance4x4_64_sse4_1
(
a
,
a_stride
,
b
,
b_stride
,
&
local_sse
,
&
sum
);
*
sse
=
(
uint32_t
)
ROUND_POWER_OF_TWO
(
local_sse
,
8
);
*
sse
=
(
uint32_t
)
ROUND_POWER_OF_TWO
(
local_sse
,
8
);
sum
=
ROUND_POWER_OF_TWO
(
sum
,
4
);
sum
=
ROUND_POWER_OF_TWO
(
sum
,
4
);
return
*
sse
-
(
uint32_t
)((
sum
*
sum
)
>>
4
);
diff
=
(
int64_t
)
*
sse
-
((
sum
*
sum
)
>>
4
);
return
diff
>=
0
?
(
uint32_t
)
diff
:
0
;
}
}
// Sub-pixel
// Sub-pixel
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a 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