Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
BC
public
external
libvpx
Commits
61966b1d
Commit
61966b1d
authored
Oct 31, 2014
by
Jingning Han
Committed by
Gerrit Code Review
Oct 31, 2014
Browse files
Merge "Refactor vp9_update_rd_thresh_fact"
parents
1cffea9f
f7b46d8c
Changes
4
Hide whitespace changes
Inline
Side-by-side
vp9/encoder/vp9_pickmode.c
View file @
61966b1d
...
...
@@ -838,10 +838,12 @@ void vp9_pick_inter_mode(VP9_COMP *cpi, MACROBLOCK *x,
}
if
(
is_inter_block
(
mbmi
))
vp9_update_rd_thresh_fact
(
cpi
,
tile_data
,
bsize
,
vp9_update_rd_thresh_fact
(
tile_data
->
thresh_freq_fact
,
cpi
->
sf
.
adaptive_rd_thresh
,
bsize
,
mode_idx
[
ref_frame
][
INTER_OFFSET
(
mbmi
->
mode
)]);
else
vp9_update_rd_thresh_fact
(
cpi
,
tile_data
,
bsize
,
vp9_update_rd_thresh_fact
(
tile_data
->
thresh_freq_fact
,
cpi
->
sf
.
adaptive_rd_thresh
,
bsize
,
mode_idx
[
ref_frame
][
mbmi
->
mode
]);
*
rd_cost
=
best_rdc
;
...
...
vp9/encoder/vp9_rd.c
View file @
61966b1d
...
...
@@ -605,10 +605,9 @@ void vp9_set_rd_speed_thresholds_sub8x8(VP9_COMP *cpi) {
}
}
// TODO(jingning) Refactor this function. Use targeted smaller struct as inputs.
void
vp9_update_rd_thresh_fact
(
VP9_COMP
*
cpi
,
TileDataEnc
*
tile_data
,
void
vp9_update_rd_thresh_fact
(
int
(
*
factor_buf
)[
MAX_MODES
],
int
rd_thresh
,
int
bsize
,
int
best_mode_index
)
{
if
(
cpi
->
sf
.
adaptive_
rd_thresh
>
0
)
{
if
(
rd_thresh
>
0
)
{
const
int
top_mode
=
bsize
<
BLOCK_8X8
?
MAX_REFS
:
MAX_MODES
;
int
mode
;
for
(
mode
=
0
;
mode
<
top_mode
;
++
mode
)
{
...
...
@@ -616,12 +615,12 @@ void vp9_update_rd_thresh_fact(VP9_COMP *cpi, TileDataEnc *tile_data,
const
BLOCK_SIZE
max_size
=
MIN
(
bsize
+
2
,
BLOCK_64X64
);
BLOCK_SIZE
bs
;
for
(
bs
=
min_size
;
bs
<=
max_size
;
++
bs
)
{
int
*
const
fact
=
&
tile_data
->
thresh_freq_fact
[
bs
][
mode
];
int
*
const
fact
=
&
factor_buf
[
bs
][
mode
];
if
(
mode
==
best_mode_index
)
{
*
fact
-=
(
*
fact
>>
4
);
}
else
{
*
fact
=
MIN
(
*
fact
+
RD_THRESH_INC
,
cpi
->
sf
.
adaptive_
rd_thresh
*
RD_THRESH_MAX_FACT
);
rd_thresh
*
RD_THRESH_MAX_FACT
);
}
}
}
...
...
vp9/encoder/vp9_rd.h
View file @
61966b1d
...
...
@@ -162,8 +162,7 @@ void vp9_set_rd_speed_thresholds(struct VP9_COMP *cpi);
void
vp9_set_rd_speed_thresholds_sub8x8
(
struct
VP9_COMP
*
cpi
);
void
vp9_update_rd_thresh_fact
(
struct
VP9_COMP
*
cpi
,
struct
TileDataEnc
*
tile_data
,
void
vp9_update_rd_thresh_fact
(
int
(
*
fact
)[
MAX_MODES
],
int
rd_thresh
,
int
bsize
,
int
best_mode_index
);
static
INLINE
int
rd_less_than_thresh
(
int64_t
best_rd
,
int
thresh
,
...
...
vp9/encoder/vp9_rdopt.c
View file @
61966b1d
...
...
@@ -3398,7 +3398,8 @@ void vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi,
!
is_inter_block
(
&
best_mbmode
));
if
(
!
cpi
->
rc
.
is_src_frame_alt_ref
)
vp9_update_rd_thresh_fact
(
cpi
,
tile_data
,
bsize
,
best_mode_index
);
vp9_update_rd_thresh_fact
(
tile_data
->
thresh_freq_fact
,
sf
->
adaptive_rd_thresh
,
bsize
,
best_mode_index
);
// macroblock modes
*
mbmi
=
best_mbmode
;
...
...
@@ -3553,7 +3554,8 @@ void vp9_rd_pick_inter_mode_sb_seg_skip(VP9_COMP *cpi,
assert
((
cm
->
interp_filter
==
SWITCHABLE
)
||
(
cm
->
interp_filter
==
mbmi
->
interp_filter
));
vp9_update_rd_thresh_fact
(
cpi
,
tile_data
,
bsize
,
THR_ZEROMV
);
vp9_update_rd_thresh_fact
(
tile_data
->
thresh_freq_fact
,
cpi
->
sf
.
adaptive_rd_thresh
,
bsize
,
THR_ZEROMV
);
vp9_zero
(
best_pred_diff
);
vp9_zero
(
best_filter_diff
);
...
...
@@ -4128,7 +4130,8 @@ void vp9_rd_pick_inter_mode_sub8x8(VP9_COMP *cpi,
(
cm
->
interp_filter
==
best_mbmode
.
interp_filter
)
||
!
is_inter_block
(
&
best_mbmode
));
vp9_update_rd_thresh_fact
(
cpi
,
tile_data
,
bsize
,
best_ref_index
);
vp9_update_rd_thresh_fact
(
tile_data
->
thresh_freq_fact
,
sf
->
adaptive_rd_thresh
,
bsize
,
best_ref_index
);
// macroblock modes
*
mbmi
=
best_mbmode
;
...
...
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