Skip to content
GitLab
Explore
Projects
Groups
Topics
Snippets
Projects
Groups
Topics
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
BC
public
external
libvpx
Commits
e0c21264
Commit
e0c21264
authored
11 years ago
by
Dmitry Kovalev
Committed by
Gerrit Code Review
11 years ago
Browse files
Options
Download
Plain Diff
Merge "Tiny vp9_picklpf.c cleanup."
parents
3967435f
50bbd8a5
v1.14.0-linphone
1.4.X
feature/update_to_v1.9.0-linphone
feature/uwp_nuget
frame_parallel
highbitdepth
indianrunnerduck
javanwhistlingduck
khakicampbell
linphone
linphone-android
linphone-old
longtailedduck
m49-2623
m52-2743
m54-2840
m56-2924
m66-3359
m68-3440
mandarinduck
nextgen
nextgenv2
playground
sandbox/Jingning/experimental
sandbox/Jingning/transcode
sandbox/Jingning/vpx
sandbox/aconverse@google.com/ansbench
sandbox/hkuang/frame_parallel
sandbox/hkuang@google.com/decode
sandbox/jimbankoski@google.com/proposed-aom
sandbox/jingning@google.com/decoder_test_suite
sandbox/jingning@google.com/experimental
sandbox/jzern@google.com/test
sandbox/wangch@google.com/vp9
sandbox/yaowu@google.com/mergeaom
v1.12.0-linphone
v1.6.1_linphone
v1.7.0-linphone
v1.9.0-linphone
v1.9.0
v1.9.0-rc1
v1.8.2
v1.8.1
v1.8.0
v1.7.0
v1.6.1
v1.6.0
v1.5.0
v1.4.0
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
vp9/encoder/vp9_picklpf.c
+16
-16
vp9/encoder/vp9_picklpf.c
with
16 additions
and
16 deletions
vp9/encoder/vp9_picklpf.c
+
16
−
16
View file @
e0c21264
...
@@ -10,16 +10,18 @@
...
@@ -10,16 +10,18 @@
#include
<assert.h>
#include
<assert.h>
#include
<limits.h>
#include
<limits.h>
#include
"./vpx_scale_rtcd.h"
#include
"vpx_mem/vpx_mem.h"
#include
"vp9/common/vp9_loopfilter.h"
#include
"vp9/common/vp9_onyxc_int.h"
#include
"vp9/common/vp9_onyxc_int.h"
#include
"vp9/common/vp9_quant_common.h"
#include
"vp9/encoder/vp9_onyx_int.h"
#include
"vp9/encoder/vp9_onyx_int.h"
#include
"vp9/encoder/vp9_picklpf.h"
#include
"vp9/encoder/vp9_picklpf.h"
#include
"vp9/encoder/vp9_quantize.h"
#include
"vp9/encoder/vp9_quantize.h"
#include
"vp9/common/vp9_quant_common.h"
#include
"vpx_mem/vpx_mem.h"
#include
"vpx_scale/vpx_scale.h"
#include
"vp9/common/vp9_alloccommon.h"
#include
"vp9/common/vp9_loopfilter.h"
#include
"./vpx_scale_rtcd.h"
static
int
get_max_filter_level
(
VP9_COMP
*
cpi
)
{
static
int
get_max_filter_level
(
VP9_COMP
*
cpi
)
{
return
cpi
->
twopass
.
section_intra_rating
>
8
?
MAX_LOOP_FILTER
*
3
/
4
return
cpi
->
twopass
.
section_intra_rating
>
8
?
MAX_LOOP_FILTER
*
3
/
4
...
@@ -28,11 +30,11 @@ static int get_max_filter_level(VP9_COMP *cpi) {
...
@@ -28,11 +30,11 @@ static int get_max_filter_level(VP9_COMP *cpi) {
static
int
try_filter_frame
(
const
YV12_BUFFER_CONFIG
*
sd
,
VP9_COMP
*
const
cpi
,
static
int
try_filter_frame
(
const
YV12_BUFFER_CONFIG
*
sd
,
VP9_COMP
*
const
cpi
,
MACROBLOCKD
*
const
xd
,
VP9_COMMON
*
const
cm
,
int
filt_level
,
int
partial_frame
)
{
int
filt_level
,
int
partial_frame
)
{
VP9_COMMON
*
const
cm
=
&
cpi
->
common
;
int
filt_err
;
int
filt_err
;
vp9_loop_filter_frame
(
cm
,
x
d
,
filt_level
,
1
,
partial_frame
);
vp9_loop_filter_frame
(
cm
,
&
cpi
->
mb
.
e_mb
d
,
filt_level
,
1
,
partial_frame
);
filt_err
=
vp9_calc_ss_err
(
sd
,
cm
->
frame_to_show
);
filt_err
=
vp9_calc_ss_err
(
sd
,
cm
->
frame_to_show
);
// Re-instate the unfiltered frame
// Re-instate the unfiltered frame
...
@@ -43,7 +45,6 @@ static int try_filter_frame(const YV12_BUFFER_CONFIG *sd, VP9_COMP *const cpi,
...
@@ -43,7 +45,6 @@ static int try_filter_frame(const YV12_BUFFER_CONFIG *sd, VP9_COMP *const cpi,
static
void
search_filter_level
(
const
YV12_BUFFER_CONFIG
*
sd
,
VP9_COMP
*
cpi
,
static
void
search_filter_level
(
const
YV12_BUFFER_CONFIG
*
sd
,
VP9_COMP
*
cpi
,
int
partial_frame
)
{
int
partial_frame
)
{
MACROBLOCKD
*
const
xd
=
&
cpi
->
mb
.
e_mbd
;
VP9_COMMON
*
const
cm
=
&
cpi
->
common
;
VP9_COMMON
*
const
cm
=
&
cpi
->
common
;
struct
loopfilter
*
const
lf
=
&
cm
->
lf
;
struct
loopfilter
*
const
lf
=
&
cm
->
lf
;
const
int
min_filter_level
=
0
;
const
int
min_filter_level
=
0
;
...
@@ -64,7 +65,7 @@ static void search_filter_level(const YV12_BUFFER_CONFIG *sd, VP9_COMP *cpi,
...
@@ -64,7 +65,7 @@ static void search_filter_level(const YV12_BUFFER_CONFIG *sd, VP9_COMP *cpi,
// Make a copy of the unfiltered / processed recon buffer
// Make a copy of the unfiltered / processed recon buffer
vpx_yv12_copy_y
(
cm
->
frame_to_show
,
&
cpi
->
last_frame_uf
);
vpx_yv12_copy_y
(
cm
->
frame_to_show
,
&
cpi
->
last_frame_uf
);
best_err
=
try_filter_frame
(
sd
,
cpi
,
xd
,
cm
,
filt_mid
,
partial_frame
);
best_err
=
try_filter_frame
(
sd
,
cpi
,
filt_mid
,
partial_frame
);
filt_best
=
filt_mid
;
filt_best
=
filt_mid
;
ss_err
[
filt_mid
]
=
best_err
;
ss_err
[
filt_mid
]
=
best_err
;
...
@@ -86,7 +87,7 @@ static void search_filter_level(const YV12_BUFFER_CONFIG *sd, VP9_COMP *cpi,
...
@@ -86,7 +87,7 @@ static void search_filter_level(const YV12_BUFFER_CONFIG *sd, VP9_COMP *cpi,
if
(
filt_direction
<=
0
&&
filt_low
!=
filt_mid
)
{
if
(
filt_direction
<=
0
&&
filt_low
!=
filt_mid
)
{
// Get Low filter error score
// Get Low filter error score
if
(
ss_err
[
filt_low
]
<
0
)
{
if
(
ss_err
[
filt_low
]
<
0
)
{
filt_err
=
try_filter_frame
(
sd
,
cpi
,
xd
,
cm
,
filt_low
,
partial_frame
);
filt_err
=
try_filter_frame
(
sd
,
cpi
,
filt_low
,
partial_frame
);
ss_err
[
filt_low
]
=
filt_err
;
ss_err
[
filt_low
]
=
filt_err
;
}
else
{
}
else
{
filt_err
=
ss_err
[
filt_low
];
filt_err
=
ss_err
[
filt_low
];
...
@@ -105,7 +106,7 @@ static void search_filter_level(const YV12_BUFFER_CONFIG *sd, VP9_COMP *cpi,
...
@@ -105,7 +106,7 @@ static void search_filter_level(const YV12_BUFFER_CONFIG *sd, VP9_COMP *cpi,
// Now look at filt_high
// Now look at filt_high
if
(
filt_direction
>=
0
&&
filt_high
!=
filt_mid
)
{
if
(
filt_direction
>=
0
&&
filt_high
!=
filt_mid
)
{
if
(
ss_err
[
filt_high
]
<
0
)
{
if
(
ss_err
[
filt_high
]
<
0
)
{
filt_err
=
try_filter_frame
(
sd
,
cpi
,
xd
,
cm
,
filt_high
,
partial_frame
);
filt_err
=
try_filter_frame
(
sd
,
cpi
,
filt_high
,
partial_frame
);
ss_err
[
filt_high
]
=
filt_err
;
ss_err
[
filt_high
]
=
filt_err
;
}
else
{
}
else
{
filt_err
=
ss_err
[
filt_high
];
filt_err
=
ss_err
[
filt_high
];
...
@@ -119,7 +120,7 @@ static void search_filter_level(const YV12_BUFFER_CONFIG *sd, VP9_COMP *cpi,
...
@@ -119,7 +120,7 @@ static void search_filter_level(const YV12_BUFFER_CONFIG *sd, VP9_COMP *cpi,
// Half the step distance if the best filter value was the same as last time
// Half the step distance if the best filter value was the same as last time
if
(
filt_best
==
filt_mid
)
{
if
(
filt_best
==
filt_mid
)
{
filter_step
=
filter_step
/
2
;
filter_step
/
=
2
;
filt_direction
=
0
;
filt_direction
=
0
;
}
else
{
}
else
{
filt_direction
=
(
filt_best
<
filt_mid
)
?
-
1
:
1
;
filt_direction
=
(
filt_best
<
filt_mid
)
?
-
1
:
1
;
...
@@ -143,9 +144,8 @@ void vp9_pick_filter_level(const YV12_BUFFER_CONFIG *sd, VP9_COMP *cpi,
...
@@ -143,9 +144,8 @@ void vp9_pick_filter_level(const YV12_BUFFER_CONFIG *sd, VP9_COMP *cpi,
const
int
max_filter_level
=
get_max_filter_level
(
cpi
);
const
int
max_filter_level
=
get_max_filter_level
(
cpi
);
const
int
q
=
vp9_ac_quant
(
cm
->
base_qindex
,
0
);
const
int
q
=
vp9_ac_quant
(
cm
->
base_qindex
,
0
);
// These values were determined by linear fitting the result of the
// These values were determined by linear fitting the result of the
// searched level
// searched level, filt_guess = q * 0.316206 + 3.87252
// filt_guess = q * 0.316206 + 3.87252
int
filt_guess
=
ROUND_POWER_OF_TWO
(
q
*
20723
+
1015158
,
18
);
int
filt_guess
=
(
q
*
20723
+
1015158
+
(
1
<<
17
))
>>
18
;
if
(
cm
->
frame_type
==
KEY_FRAME
)
if
(
cm
->
frame_type
==
KEY_FRAME
)
filt_guess
-=
4
;
filt_guess
-=
4
;
lf
->
filter_level
=
clamp
(
filt_guess
,
min_filter_level
,
max_filter_level
);
lf
->
filter_level
=
clamp
(
filt_guess
,
min_filter_level
,
max_filter_level
);
...
...
This diff is collapsed.
Click to expand it.
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!
Save comment
Cancel
Please
register
or
sign in
to comment
Menu
Explore
Projects
Groups
Topics
Snippets