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
Guillaume Martres
aom-rav1e
Commits
8697c6e4
Commit
8697c6e4
authored
Jul 17, 2012
by
Ronald S. Bultje
Committed by
Gerrit Code Review
Jul 17, 2012
Browse files
Merge "Fix bug in reference frame counting." into experimental
parents
821307a5
cb1e60fb
Changes
1
Hide whitespace changes
Inline
Side-by-side
vp8/encoder/encodeframe.c
View file @
8697c6e4
...
...
@@ -873,6 +873,9 @@ static void encode_sb ( VP8_COMP *cpi,
}
else
{
unsigned
char
*
segment_id
;
int
seg_ref_active
;
vp8cx_encode_inter_macroblock
(
cpi
,
x
,
tp
,
recon_yoffset
,
recon_uvoffset
,
1
);
//Note the encoder may have changed the segment_id
...
...
@@ -892,6 +895,32 @@ static void encode_sb ( VP8_COMP *cpi,
#endif
// If we have just a single reference frame coded for a segment then
// exclude from the reference frame counts used to work out
// probabilities. NOTE: At the moment we dont support custom trees
// for the reference frame coding for each segment but this is a
// possible future action.
segment_id
=
&
xd
->
mode_info_context
->
mbmi
.
segment_id
;
seg_ref_active
=
segfeature_active
(
xd
,
*
segment_id
,
SEG_LVL_REF_FRAME
);
if
(
!
seg_ref_active
||
(
(
check_segref
(
xd
,
*
segment_id
,
INTRA_FRAME
)
+
check_segref
(
xd
,
*
segment_id
,
LAST_FRAME
)
+
check_segref
(
xd
,
*
segment_id
,
GOLDEN_FRAME
)
+
check_segref
(
xd
,
*
segment_id
,
ALTREF_FRAME
)
)
>
1
)
)
{
// TODO this may not be a good idea as it makes sample size small and means
// the predictor functions cannot use data about most likely value only most
// likely unpredicted value.
//#if CONFIG_COMPRED
// // Only update count for incorrectly predicted cases
// if ( !ref_pred_flag )
//#endif
{
cpi
->
count_mb_ref_frame_usage
[
xd
->
mode_info_context
->
mbmi
.
ref_frame
]
++
;
}
}
// Count of last ref frame 0,0 usage
if
((
xd
->
mode_info_context
->
mbmi
.
mode
==
ZEROMV
)
&&
(
xd
->
mode_info_context
->
mbmi
.
ref_frame
==
LAST_FRAME
))
...
...
@@ -1706,30 +1735,6 @@ void vp8cx_encode_inter_macroblock
cpi
->
t4x4_count
++
;
}
// If we have just a single reference frame coded for a segment then
// exclude from the reference frame counts used to work out
// probabilities. NOTE: At the moment we dont support custom trees
// for the reference frame coding for each segment but this is a
// possible future action.
if
(
!
seg_ref_active
||
(
(
check_segref
(
xd
,
*
segment_id
,
INTRA_FRAME
)
+
check_segref
(
xd
,
*
segment_id
,
LAST_FRAME
)
+
check_segref
(
xd
,
*
segment_id
,
GOLDEN_FRAME
)
+
check_segref
(
xd
,
*
segment_id
,
ALTREF_FRAME
)
)
>
1
)
)
{
// TODO this may not be a good idea as it makes sample size small and means
// the predictor functions cannot use data about most likely value only most
// likely unpredicted value.
//#if CONFIG_COMPRED
// // Only update count for incorrectly predicted cases
// if ( !ref_pred_flag )
//#endif
{
cpi
->
count_mb_ref_frame_usage
[
xd
->
mode_info_context
->
mbmi
.
ref_frame
]
++
;
}
}
if
(
xd
->
mode_info_context
->
mbmi
.
ref_frame
==
INTRA_FRAME
)
{
if
(
xd
->
mode_info_context
->
mbmi
.
mode
==
B_PRED
)
...
...
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