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
Yushin Cho
aom-rav1e
Commits
1d723572
Commit
1d723572
authored
Aug 10, 2015
by
Marco Paniconi
Committed by
Gerrit Code Review
Aug 10, 2015
Browse files
Merge "Adjustments for VP9 temporal layers, for 1 pass CBR"
parents
9265bad9
0d8cb090
Changes
1
Hide whitespace changes
Inline
Side-by-side
vp9/encoder/vp9_pickmode.c
View file @
1d723572
...
...
@@ -1050,6 +1050,16 @@ static const REF_MODE ref_mode_set[RT_INTER_MODES] = {
{
GOLDEN_FRAME
,
NEARMV
},
{
GOLDEN_FRAME
,
NEWMV
}
};
static
const
REF_MODE
ref_mode_set_svc
[
RT_INTER_MODES
]
=
{
{
LAST_FRAME
,
ZEROMV
},
{
GOLDEN_FRAME
,
ZEROMV
},
{
LAST_FRAME
,
NEARESTMV
},
{
LAST_FRAME
,
NEARMV
},
{
GOLDEN_FRAME
,
NEARESTMV
},
{
GOLDEN_FRAME
,
NEARMV
},
{
LAST_FRAME
,
NEWMV
},
{
GOLDEN_FRAME
,
NEWMV
}
};
// TODO(jingning) placeholder for inter-frame non-RD mode decision.
// this needs various further optimizations. to be continued..
...
...
@@ -1203,15 +1213,19 @@ void vp9_pick_inter_mode(VP9_COMP *cpi, MACROBLOCK *x,
int
mode_rd_thresh
;
int
mode_index
;
int
i
;
PREDICTION_MODE
this_mode
=
ref_mode_set
[
idx
].
pred_mode
;
int64_t
this_sse
;
int
is_skippable
;
int
this_early_term
=
0
;
PREDICTION_MODE
this_mode
=
ref_mode_set
[
idx
].
pred_mode
;
if
(
cpi
->
use_svc
)
this_mode
=
ref_mode_set_svc
[
idx
].
pred_mode
;
if
(
!
(
cpi
->
sf
.
inter_mode_mask
[
bsize
]
&
(
1
<<
this_mode
)))
continue
;
ref_frame
=
ref_mode_set
[
idx
].
ref_frame
;
if
(
cpi
->
use_svc
)
ref_frame
=
ref_mode_set_svc
[
idx
].
ref_frame
;
if
(
!
(
cpi
->
ref_frame_flags
&
flag_list
[
ref_frame
]))
continue
;
if
(
const_motion
[
ref_frame
]
&&
this_mode
==
NEARMV
)
...
...
@@ -1239,7 +1253,7 @@ void vp9_pick_inter_mode(VP9_COMP *cpi, MACROBLOCK *x,
continue
;
if
(
this_mode
==
NEWMV
)
{
if
(
ref_frame
>
LAST_FRAME
)
{
if
(
ref_frame
>
LAST_FRAME
&&
!
cpi
->
use_svc
)
{
int
tmp_sad
;
int
dis
,
cost_list
[
5
];
...
...
@@ -1288,6 +1302,21 @@ void vp9_pick_inter_mode(VP9_COMP *cpi, MACROBLOCK *x,
x
->
pred_mv_sad
[
LAST_FRAME
]
=
best_pred_sad
;
}
if
(
cpi
->
use_svc
)
{
if
(
this_mode
==
NEWMV
&&
ref_frame
==
GOLDEN_FRAME
&&
frame_mv
[
NEWMV
][
GOLDEN_FRAME
].
as_int
!=
INVALID_MV
)
{
const
int
pre_stride
=
xd
->
plane
[
0
].
pre
[
0
].
stride
;
const
uint8_t
*
const
pre_buf
=
xd
->
plane
[
0
].
pre
[
0
].
buf
+
(
frame_mv
[
NEWMV
][
GOLDEN_FRAME
].
as_mv
.
row
>>
3
)
*
pre_stride
+
(
frame_mv
[
NEWMV
][
GOLDEN_FRAME
].
as_mv
.
col
>>
3
);
best_pred_sad
=
cpi
->
fn_ptr
[
bsize
].
sdf
(
x
->
plane
[
0
].
src
.
buf
,
x
->
plane
[
0
].
src
.
stride
,
pre_buf
,
pre_stride
);
x
->
pred_mv_sad
[
GOLDEN_FRAME
]
=
best_pred_sad
;
}
}
if
(
this_mode
!=
NEARESTMV
&&
frame_mv
[
this_mode
][
ref_frame
].
as_int
==
frame_mv
[
NEARESTMV
][
ref_frame
].
as_int
)
...
...
@@ -1310,7 +1339,8 @@ void vp9_pick_inter_mode(VP9_COMP *cpi, MACROBLOCK *x,
}
if
((
this_mode
==
NEWMV
||
filter_ref
==
SWITCHABLE
)
&&
pred_filter_search
&&
(
ref_frame
==
LAST_FRAME
)
&&
(
ref_frame
==
LAST_FRAME
||
(
ref_frame
==
GOLDEN_FRAME
&&
cpi
->
use_svc
))
&&
(((
mbmi
->
mv
[
0
].
as_mv
.
row
|
mbmi
->
mv
[
0
].
as_mv
.
col
)
&
0x07
)
!=
0
))
{
int
pf_rate
[
3
];
int64_t
pf_dist
[
3
];
...
...
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