Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Yushin Cho
aom-rav1e
Commits
0fec8f97
Commit
0fec8f97
authored
Jun 12, 2014
by
Tim Kopp
Browse files
Improved vp9 denoiser running avg update.
Change-Id: Ie0aa41fb7957755544321897b3bb2dd92f392027
parent
ff388071
Changes
1
Hide whitespace changes
Inline
Side-by-side
vp9/encoder/vp9_denoiser.c
View file @
0fec8f97
...
...
@@ -22,27 +22,43 @@ int vp9_denoiser_filter() {
int
update_running_avg
(
uint8_t
*
mc_avg
,
int
mc_avg_stride
,
uint8_t
*
avg
,
int
avg_stride
,
uint8_t
*
sig
,
int
sig_stride
,
BLOCK_SIZE
bs
)
{
// Indices: 0, 1, 2, 3, 4, 5 ,6, 7,
static
const
uint8_t
adjustments
[]
=
{
0
,
0
,
0
,
0
,
3
,
3
,
3
,
3
,
// 8, 9,10,11,12,13,14,15,16
4
,
4
,
4
,
4
,
4
,
4
,
4
,
4
,
6
};
int
increase_denoising
,
BLOCK_SIZE
bs
)
{
int
r
,
c
;
int
diff
;
int
adjustment
;
int
diff
,
adj
,
absdiff
;
int
shift_inc1
=
0
,
shift_inc2
=
1
;
int
adj_val
[]
=
{
3
,
4
,
6
};
int
total_adj
=
0
;
if
(
increase_denoising
)
{
shift_inc1
=
1
;
shift_inc2
=
2
;
}
for
(
r
=
0
;
r
<
heights
[
bs
];
++
r
)
{
for
(
c
=
0
;
c
<
widths
[
bs
];
++
c
)
{
diff
=
mc_avg
[
c
]
-
sig
[
c
];
a
djustment
=
adjustments
[
MIN
(
abs
(
diff
)
,
16
)]
;
a
bsdiff
=
abs
(
diff
);
if
(
diff
>
0
)
{
avg
[
c
]
=
MIN
(
UINT8_MAX
,
sig
[
c
]
+
adjustment
)
;
total_adj
+=
adjustment
;
if
(
abs
diff
<=
3
+
shift_inc1
)
{
avg
[
c
]
=
mc_avg
[
c
]
;
total_adj
+=
diff
;
}
else
{
avg
[
c
]
=
MAX
(
0
,
sig
[
c
]
-
adjustment
);
total_adj
-=
adjustment
;
switch
(
absdiff
)
{
case
4
:
case
5
:
case
6
:
case
7
:
adj
=
adj_val
[
0
];
case
8
:
case
9
:
case
10
:
case
11
:
case
12
:
case
13
:
case
14
:
case
15
:
adj
=
adj_val
[
1
];
default:
adj
=
adj_val
[
2
];
}
if
(
diff
>
0
)
{
avg
[
c
]
=
MIN
(
UINT8_MAX
,
sig
[
c
]
+
adj
);
total_adj
+=
adj
;
}
else
{
avg
[
c
]
=
MAX
(
0
,
sig
[
c
]
-
adj
);
total_adj
-=
adj
;
}
}
}
sig
+=
sig_stride
;
...
...
@@ -81,7 +97,7 @@ void vp9_denoiser_denoise(VP9_DENOISER *denoiser,
denoiser
->
mc_running_avg_y
.
y_stride
,
denoiser
->
running_avg_y
[
INTRA_FRAME
].
y_buffer
,
denoiser
->
running_avg_y
[
INTRA_FRAME
].
y_stride
,
mb
->
plane
[
0
].
src
.
buf
,
mb
->
plane
[
0
].
src
.
stride
,
bs
);
mb
->
plane
[
0
].
src
.
buf
,
mb
->
plane
[
0
].
src
.
stride
,
0
,
bs
);
if
(
decision
==
FILTER_BLOCK
)
{
}
...
...
Write
Preview
Markdown
is supported
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