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
Xiph.Org
aom-rav1e
Commits
c38fc52d
Commit
c38fc52d
authored
Jan 14, 2016
by
Jingning Han
Committed by
Gerrit Code Review
Jan 14, 2016
Browse files
Merge "Handle single ref mv pair in the candidate list for compound mode" into nextgenv2
parents
727ca802
3944cfb1
Changes
2
Hide whitespace changes
Inline
Side-by-side
vp10/decoder/decodemv.c
View file @
c38fc52d
...
...
@@ -900,6 +900,15 @@ static void read_inter_block_mode_info(VP10Decoder *const pbi,
mbmi
->
mode
!=
ZEROMV
)
{
uint8_t
ref_frame_type
=
vp10_ref_frame_type
(
mbmi
->
ref_frame
);
if
(
xd
->
ref_mv_count
[
ref_frame_type
]
==
1
&&
mbmi
->
mode
==
NEARESTMV
)
{
int
i
;
nearestmv
[
0
]
=
xd
->
ref_mv_stack
[
ref_frame_type
][
0
].
this_mv
;
nearestmv
[
1
]
=
xd
->
ref_mv_stack
[
ref_frame_type
][
0
].
comp_mv
;
for
(
i
=
0
;
i
<
MAX_MV_REF_CANDIDATES
;
++
i
)
lower_mv_precision
(
&
nearestmv
[
i
].
as_mv
,
allow_hp
);
}
if
(
xd
->
ref_mv_count
[
ref_frame_type
]
>
1
)
{
int
i
;
nearestmv
[
0
]
=
xd
->
ref_mv_stack
[
ref_frame_type
][
0
].
this_mv
;
...
...
vp10/encoder/rdopt.c
View file @
c38fc52d
...
...
@@ -4502,7 +4502,7 @@ static int64_t handle_inter_mode(VP10_COMP *cpi, MACROBLOCK *x,
#if CONFIG_REF_MV
if
(
this_mode
==
NEARESTMV
&&
is_comp_pred
)
{
uint8_t
ref_frame_type
=
vp10_ref_frame_type
(
mbmi
->
ref_frame
);
if
(
mbmi_ext
->
ref_mv_count
[
ref_frame_type
]
>
1
)
{
if
(
mbmi_ext
->
ref_mv_count
[
ref_frame_type
]
>
0
)
{
cur_mv
[
0
]
=
mbmi_ext
->
ref_mv_stack
[
ref_frame_type
][
0
].
this_mv
;
cur_mv
[
1
]
=
mbmi_ext
->
ref_mv_stack
[
ref_frame_type
][
0
].
comp_mv
;
...
...
@@ -5722,39 +5722,37 @@ void vp10_rd_pick_inter_mode_sb(VP10_COMP *cpi,
best_mbmode
.
mode
=
ZEROMV
;
}
else
{
uint8_t
rf_type
=
vp10_ref_frame_type
(
best_mbmode
.
ref_frame
);
if
(
mbmi_ext
->
ref_mv_count
[
rf_type
]
>
1
)
{
int
i
;
int_mv
nearestmv
[
2
],
nearmv
[
2
];
const
int
allow_hp
=
cm
->
allow_high_precision_mv
;
int
i
;
const
int
allow_hp
=
cm
->
allow_high_precision_mv
;
int_mv
nearestmv
[
2
]
=
{
frame_mv
[
NEARESTMV
][
refs
[
0
]],
frame_mv
[
NEARESTMV
][
refs
[
1
]]
};
int_mv
nearmv
[
2
]
=
{
frame_mv
[
NEARMV
][
refs
[
0
]],
frame_mv
[
NEARMV
][
refs
[
1
]]
};
if
(
mbmi_ext
->
ref_mv_count
[
rf_type
]
>=
1
)
{
nearestmv
[
0
]
=
mbmi_ext
->
ref_mv_stack
[
rf_type
][
0
].
this_mv
;
nearestmv
[
1
]
=
mbmi_ext
->
ref_mv_stack
[
rf_type
][
0
].
comp_mv
;
}
if
(
mbmi_ext
->
ref_mv_count
[
rf_type
]
>
1
)
{
nearmv
[
0
]
=
mbmi_ext
->
ref_mv_stack
[
rf_type
][
1
].
this_mv
;
nearmv
[
1
]
=
mbmi_ext
->
ref_mv_stack
[
rf_type
][
1
].
comp_mv
;
}
for
(
i
=
0
;
i
<
MAX_MV_REF_CANDIDATES
;
++
i
)
{
lower_mv_precision
(
&
nearestmv
[
i
].
as_mv
,
allow_hp
);
lower_mv_precision
(
&
nearmv
[
i
].
as_mv
,
allow_hp
);
}
if
(
nearestmv
[
0
].
as_int
==
best_mbmode
.
mv
[
0
].
as_int
&&
nearestmv
[
1
].
as_int
==
best_mbmode
.
mv
[
1
].
as_int
)
best_mbmode
.
mode
=
NEARESTMV
;
else
if
(
nearmv
[
0
].
as_int
==
best_mbmode
.
mv
[
0
].
as_int
&&
nearmv
[
1
].
as_int
==
best_mbmode
.
mv
[
1
].
as_int
)
best_mbmode
.
mode
=
NEARMV
;
else
if
(
best_mbmode
.
mv
[
0
].
as_int
==
0
&&
best_mbmode
.
mv
[
1
].
as_int
==
0
)
best_mbmode
.
mode
=
ZEROMV
;
}
else
{
if
(
frame_mv
[
NEARESTMV
][
refs
[
0
]].
as_int
==
best_mbmode
.
mv
[
0
].
as_int
&&
(
frame_mv
[
NEARESTMV
][
refs
[
1
]].
as_int
==
best_mbmode
.
mv
[
1
].
as_int
))
best_mbmode
.
mode
=
NEARESTMV
;
else
if
(
frame_mv
[
NEARMV
][
refs
[
0
]].
as_int
==
best_mbmode
.
mv
[
0
].
as_int
&&
(
frame_mv
[
NEARMV
][
refs
[
1
]].
as_int
==
best_mbmode
.
mv
[
1
].
as_int
))
best_mbmode
.
mode
=
NEARMV
;
else
if
(
best_mbmode
.
mv
[
0
].
as_int
==
0
&&
best_mbmode
.
mv
[
1
].
as_int
==
0
)
best_mbmode
.
mode
=
ZEROMV
;
for
(
i
=
0
;
i
<
MAX_MV_REF_CANDIDATES
;
++
i
)
{
lower_mv_precision
(
&
nearestmv
[
i
].
as_mv
,
allow_hp
);
lower_mv_precision
(
&
nearmv
[
i
].
as_mv
,
allow_hp
);
}
if
(
nearestmv
[
0
].
as_int
==
best_mbmode
.
mv
[
0
].
as_int
&&
nearestmv
[
1
].
as_int
==
best_mbmode
.
mv
[
1
].
as_int
)
best_mbmode
.
mode
=
NEARESTMV
;
else
if
(
nearmv
[
0
].
as_int
==
best_mbmode
.
mv
[
0
].
as_int
&&
nearmv
[
1
].
as_int
==
best_mbmode
.
mv
[
1
].
as_int
)
best_mbmode
.
mode
=
NEARMV
;
else
if
(
best_mbmode
.
mv
[
0
].
as_int
==
0
&&
best_mbmode
.
mv
[
1
].
as_int
==
0
)
best_mbmode
.
mode
=
ZEROMV
;
}
#else
if
(
frame_mv
[
NEARESTMV
][
refs
[
0
]].
as_int
==
best_mbmode
.
mv
[
0
].
as_int
&&
...
...
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