vp9 svc: fix to make top layer frame non-ref
Add mismatch check to the datarate test of changing svc pattern on the fly. Change-Id: I6a878736de44e6a40c077ed6430aabd7fadabdd9
This commit is contained in:
parent
e14e9c9964
commit
254e2f5501
@ -589,6 +589,10 @@ void set_frame_flags_bypass_mode(int sl, int tl, int num_spatial_layers,
|
|||||||
} else {
|
} else {
|
||||||
ref_frame_config->frame_flags[sl] =
|
ref_frame_config->frame_flags[sl] =
|
||||||
VP8_EFLAG_NO_REF_ARF | VP8_EFLAG_NO_UPD_LAST | VP8_EFLAG_NO_UPD_GF;
|
VP8_EFLAG_NO_REF_ARF | VP8_EFLAG_NO_UPD_LAST | VP8_EFLAG_NO_UPD_GF;
|
||||||
|
if (sl == num_spatial_layers - 1)
|
||||||
|
ref_frame_config->frame_flags[sl] =
|
||||||
|
VP8_EFLAG_NO_UPD_ARF | VP8_EFLAG_NO_REF_ARF |
|
||||||
|
VP8_EFLAG_NO_UPD_LAST | VP8_EFLAG_NO_UPD_GF;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (tl == 0) {
|
if (tl == 0) {
|
||||||
|
@ -1879,6 +1879,13 @@ TEST_P(DatarateOnePassCbrSvc, OnePassCbrSvc3SL2TLDynamicPatternChange) {
|
|||||||
ASSERT_NO_FATAL_FAILURE(RunLoop(&video));
|
ASSERT_NO_FATAL_FAILURE(RunLoop(&video));
|
||||||
CheckLayerRateTargeting(&cfg_, number_spatial_layers_,
|
CheckLayerRateTargeting(&cfg_, number_spatial_layers_,
|
||||||
number_temporal_layers_, file_datarate_, 0.78, 1.15);
|
number_temporal_layers_, file_datarate_, 0.78, 1.15);
|
||||||
|
#if CONFIG_VP9_DECODER
|
||||||
|
// Number of temporal layers > 1, so half of the frames in this SVC pattern
|
||||||
|
// will be non-reference frame and hence encoder will avoid loopfilter.
|
||||||
|
// Since frame dropper is off, we can expect 200 (half of the sequence)
|
||||||
|
// mismatched frames.
|
||||||
|
EXPECT_EQ(static_cast<unsigned int>(200), GetMismatchFrames());
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check basic rate targeting for 1 pass CBR SVC with 3 spatial layers and on
|
// Check basic rate targeting for 1 pass CBR SVC with 3 spatial layers and on
|
||||||
|
@ -549,6 +549,8 @@ static void set_flags_and_fb_idx_for_temporal_mode2(VP9_COMP *const cpi) {
|
|||||||
if (!spatial_id) {
|
if (!spatial_id) {
|
||||||
cpi->ref_frame_flags = VP9_LAST_FLAG;
|
cpi->ref_frame_flags = VP9_LAST_FLAG;
|
||||||
} else {
|
} else {
|
||||||
|
if (spatial_id == cpi->svc.number_spatial_layers - 1)
|
||||||
|
cpi->ext_refresh_alt_ref_frame = 0;
|
||||||
cpi->ref_frame_flags = VP9_LAST_FLAG | VP9_GOLD_FLAG;
|
cpi->ref_frame_flags = VP9_LAST_FLAG | VP9_GOLD_FLAG;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user