Skip to content
GitLab
Menu
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
9e99e106
Commit
9e99e106
authored
Mar 03, 2014
by
Alex Converse
Committed by
Gerrit Code Review
Mar 03, 2014
Browse files
Merge "Refactor ZEROMV equivalence"
parents
5c1ba86b
f466fc8b
Changes
1
Hide whitespace changes
Inline
Side-by-side
vp9/encoder/vp9_rdopt.c
View file @
9e99e106
...
...
@@ -2731,42 +2731,6 @@ static int64_t handle_inter_mode(VP9_COMP *cpi, MACROBLOCK *x,
}
}
// if we're near/nearest and mv == 0,0, compare to zeromv
if
((
this_mode
==
NEARMV
||
this_mode
==
NEARESTMV
||
this_mode
==
ZEROMV
)
&&
frame_mv
[
refs
[
0
]].
as_int
==
0
&&
!
vp9_segfeature_active
(
&
cm
->
seg
,
mbmi
->
segment_id
,
SEG_LVL_SKIP
)
&&
(
num_refs
==
1
||
frame_mv
[
refs
[
1
]].
as_int
==
0
))
{
int
rfc
=
mbmi
->
mode_context
[
refs
[
0
]];
int
c1
=
cost_mv_ref
(
cpi
,
NEARMV
,
rfc
);
int
c2
=
cost_mv_ref
(
cpi
,
NEARESTMV
,
rfc
);
int
c3
=
cost_mv_ref
(
cpi
,
ZEROMV
,
rfc
);
if
(
this_mode
==
NEARMV
)
{
if
(
c1
>
c3
)
return
INT64_MAX
;
}
else
if
(
this_mode
==
NEARESTMV
)
{
if
(
c2
>
c3
)
return
INT64_MAX
;
}
else
{
assert
(
this_mode
==
ZEROMV
);
if
(
num_refs
==
1
)
{
if
((
c3
>=
c2
&&
mode_mv
[
NEARESTMV
][
refs
[
0
]].
as_int
==
0
)
||
(
c3
>=
c1
&&
mode_mv
[
NEARMV
][
refs
[
0
]].
as_int
==
0
))
return
INT64_MAX
;
}
else
{
if
((
c3
>=
c2
&&
mode_mv
[
NEARESTMV
][
refs
[
0
]].
as_int
==
0
&&
mode_mv
[
NEARESTMV
][
refs
[
1
]].
as_int
==
0
)
||
(
c3
>=
c1
&&
mode_mv
[
NEARMV
][
refs
[
0
]].
as_int
==
0
&&
mode_mv
[
NEARMV
][
refs
[
1
]].
as_int
==
0
))
return
INT64_MAX
;
}
}
}
for
(
i
=
0
;
i
<
num_refs
;
++
i
)
{
cur_mv
[
i
]
=
frame_mv
[
refs
[
i
]];
// Clip "next_nearest" so that it does not extend to far out of image
...
...
@@ -3360,6 +3324,43 @@ int64_t vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x,
if
(
conditional_skipintra
(
this_mode
,
best_intra_mode
))
continue
;
}
}
else
{
// if we're near/nearest and mv == 0,0, compare to zeromv
if
((
this_mode
==
NEARMV
||
this_mode
==
NEARESTMV
||
this_mode
==
ZEROMV
)
&&
frame_mv
[
this_mode
][
ref_frame
].
as_int
==
0
&&
!
vp9_segfeature_active
(
&
cm
->
seg
,
mbmi
->
segment_id
,
SEG_LVL_SKIP
)
&&
(
!
comp_pred
||
frame_mv
[
this_mode
][
second_ref_frame
].
as_int
==
0
))
{
int
rfc
=
mbmi
->
mode_context
[
ref_frame
];
int
c1
=
cost_mv_ref
(
cpi
,
NEARMV
,
rfc
);
int
c2
=
cost_mv_ref
(
cpi
,
NEARESTMV
,
rfc
);
int
c3
=
cost_mv_ref
(
cpi
,
ZEROMV
,
rfc
);
if
(
this_mode
==
NEARMV
)
{
if
(
c1
>
c3
)
continue
;
}
else
if
(
this_mode
==
NEARESTMV
)
{
if
(
c2
>
c3
)
continue
;
}
else
{
assert
(
this_mode
==
ZEROMV
);
if
(
!
comp_pred
)
{
if
((
c3
>=
c2
&&
frame_mv
[
NEARESTMV
][
ref_frame
].
as_int
==
0
)
||
(
c3
>=
c1
&&
frame_mv
[
NEARMV
][
ref_frame
].
as_int
==
0
))
continue
;
}
else
{
if
((
c3
>=
c2
&&
frame_mv
[
NEARESTMV
][
ref_frame
].
as_int
==
0
&&
frame_mv
[
NEARESTMV
][
second_ref_frame
].
as_int
==
0
)
||
(
c3
>=
c1
&&
frame_mv
[
NEARMV
][
ref_frame
].
as_int
==
0
&&
frame_mv
[
NEARMV
][
second_ref_frame
].
as_int
==
0
))
continue
;
}
}
}
}
mbmi
->
mode
=
this_mode
;
...
...
Write
Preview
Supports
Markdown
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