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
0497b8d7
Commit
0497b8d7
authored
Aug 01, 2013
by
Dmitry Kovalev
Committed by
Gerrit Code Review
Aug 01, 2013
Browse files
Merge "vp9_get_pred_context_intra_inter cleanup."
parents
56df76bf
fb3e78a7
Changes
1
Hide whitespace changes
Inline
Side-by-side
vp9/common/vp9_pred_common.c
View file @
0497b8d7
...
...
@@ -55,34 +55,28 @@ unsigned char vp9_get_pred_context_switchable_interp(const MACROBLOCKD *xd) {
}
// Returns a context number for the given MB prediction signal
unsigned
char
vp9_get_pred_context_intra_inter
(
const
MACROBLOCKD
*
xd
)
{
int
pred_context
;
const
MODE_INFO
*
const
mi
=
xd
->
mode_info_context
;
const
MB_MODE_INFO
*
const
above_mbmi
=
&
mi
[
-
xd
->
mode_info_stride
].
mbmi
;
const
MB_MODE_INFO
*
const
left_mbmi
=
&
mi
[
-
1
].
mbmi
;
const
int
left_in_image
=
xd
->
left_available
&&
left_mbmi
->
mb_in_image
;
const
int
above_in_image
=
xd
->
up_available
&&
above_mbmi
->
mb_in_image
;
// Note:
// The mode info data structure has a one element border above and to the
// left of the entries correpsonding to real macroblocks.
// The prediction flags in these dummy entries are initialised to 0.
if
(
above_in_image
&&
left_in_image
)
{
// both edges available
if
(
left_mbmi
->
ref_frame
[
0
]
==
INTRA_FRAME
&&
above_mbmi
->
ref_frame
[
0
]
==
INTRA_FRAME
)
{
// intra/intra (3)
pred_context
=
3
;
}
else
{
// intra/inter (1) or inter/inter (0)
pred_context
=
left_mbmi
->
ref_frame
[
0
]
==
INTRA_FRAME
||
above_mbmi
->
ref_frame
[
0
]
==
INTRA_FRAME
;
}
}
else
if
(
above_in_image
||
left_in_image
)
{
// one edge available
const
MB_MODE_INFO
*
edge_mbmi
=
above_in_image
?
above_mbmi
:
left_mbmi
;
const
int
left_intra
=
left_mbmi
->
ref_frame
[
0
]
==
INTRA_FRAME
;
const
int
above_intra
=
above_mbmi
->
ref_frame
[
0
]
==
INTRA_FRAME
;
// inter: 0, intra: 2
pred_context
=
2
*
(
edge_mbmi
->
ref_frame
[
0
]
==
INTRA_FRAME
);
}
else
{
pred_context
=
0
;
}
assert
(
pred_context
>=
0
&&
pred_context
<
INTRA_INTER_CONTEXTS
);
return
pred_context
;
// The mode info data structure has a one element border above and to the
// left of the entries corresponding to real macroblocks.
// The prediction flags in these dummy entries are initialized to 0.
// 0 - inter/inter, inter/--, --/inter, --/--
// 1 - intra/inter, inter/intra
// 2 - intra/--, --/intra
// 3 - intra/intra
if
(
above_in_image
&&
left_in_image
)
// both edges available
return
left_intra
&&
above_intra
?
3
:
left_intra
||
above_intra
;
else
if
(
above_in_image
||
left_in_image
)
// one edge available
return
2
*
(
above_in_image
?
above_intra
:
left_intra
);
else
return
0
;
}
// Returns a context number for the given MB prediction signal
unsigned
char
vp9_get_pred_context_comp_inter_inter
(
const
VP9_COMMON
*
cm
,
...
...
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