Stop always predicting from last keyframe in the 3TL VP8 case.

Bug: webrtc:10314
Change-Id: I510c84cce0ec05ad8ef977d57cba9585aabc0538
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/131141
Reviewed-by: Elad Alon <eladalon@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27441}
This commit is contained in:
philipel
2019-04-03 13:24:54 +02:00
committed by Commit Bot
parent ade945d834
commit 5982d008a8
2 changed files with 32 additions and 32 deletions

View File

@ -177,14 +177,14 @@ DefaultTemporalLayers::GetDependencyInfo(size_t num_layers) {
// TL0 also references and updates the 'last' buffer. // TL0 also references and updates the 'last' buffer.
// TL1 also references 'last' and references and updates 'golden'. // TL1 also references 'last' and references and updates 'golden'.
// TL2 references both 'last' and 'golden' but updates no buffer. // TL2 references both 'last' and 'golden' but updates no buffer.
return {{"SSS", {kReferenceAndUpdate, kNone, kReference}}, return {{"SSS", {kReferenceAndUpdate, kNone, kNone}},
{"--D", {kReference, kNone, kReference, kFreezeEntropy}}, {"--D", {kReference, kNone, kNone, kFreezeEntropy}},
{"-SS", {kReference, kUpdate, kReference}}, {"-SS", {kReference, kUpdate, kNone}},
{"--D", {kReference, kReference, kReference, kFreezeEntropy}}, {"--D", {kReference, kReference, kNone, kFreezeEntropy}},
{"SRR", {kReferenceAndUpdate, kNone, kReference}}, {"SRR", {kReferenceAndUpdate, kNone, kNone}},
{"--D", {kReference, kReference, kReference, kFreezeEntropy}}, {"--D", {kReference, kReference, kNone, kFreezeEntropy}},
{"-DS", {kReference, kReferenceAndUpdate, kReference}}, {"-DS", {kReference, kReferenceAndUpdate, kNone}},
{"--D", {kReference, kReference, kReference, kFreezeEntropy}}}; {"--D", {kReference, kReference, kNone, kFreezeEntropy}}};
} }
case 4: case 4:
// TL0 references and updates only the 'last' buffer. // TL0 references and updates only the 'last' buffer.

View File

@ -170,22 +170,22 @@ TEST_F(TemporalLayersTest, 3Layers) {
tl.UpdateConfiguration(0, &cfg); tl.UpdateConfiguration(0, &cfg);
int expected_flags[16] = { int expected_flags[16] = {
kTemporalUpdateLastRefAltRef, kTemporalUpdateLast,
kTemporalUpdateNoneNoRefGolden, kTemporalUpdateNoneNoRefGoldenAltRef,
kTemporalUpdateGoldenWithoutDependencyRefAltRef, kTemporalUpdateGoldenWithoutDependency,
kTemporalUpdateNone, kTemporalUpdateNoneNoRefAltRef,
kTemporalUpdateLastRefAltRef, kTemporalUpdateLast,
kTemporalUpdateNone, kTemporalUpdateNoneNoRefAltRef,
kTemporalUpdateGoldenRefAltRef, kTemporalUpdateGolden,
kTemporalUpdateNone, kTemporalUpdateNoneNoRefAltRef,
kTemporalUpdateLastRefAltRef, kTemporalUpdateLast,
kTemporalUpdateNoneNoRefGolden, kTemporalUpdateNoneNoRefGoldenAltRef,
kTemporalUpdateGoldenWithoutDependencyRefAltRef, kTemporalUpdateGoldenWithoutDependency,
kTemporalUpdateNone, kTemporalUpdateNoneNoRefAltRef,
kTemporalUpdateLastRefAltRef, kTemporalUpdateLast,
kTemporalUpdateNone, kTemporalUpdateNoneNoRefAltRef,
kTemporalUpdateGoldenRefAltRef, kTemporalUpdateGolden,
kTemporalUpdateNone, kTemporalUpdateNoneNoRefAltRef,
}; };
int expected_temporal_idx[16] = {0, 2, 1, 2, 0, 2, 1, 2, int expected_temporal_idx[16] = {0, 2, 1, 2, 0, 2, 1, 2,
0, 2, 1, 2, 0, 2, 1, 2}; 0, 2, 1, 2, 0, 2, 1, 2};
@ -526,7 +526,7 @@ TEST_F(TemporalLayersTest, DoesNotReferenceUnlessGuaranteedToExist) {
tl_config = tl.UpdateLayerConfig(0, timestamp + 1); tl_config = tl.UpdateLayerConfig(0, timestamp + 1);
EXPECT_TRUE(tl_config.last_buffer_flags & BufferFlags::kReference); EXPECT_TRUE(tl_config.last_buffer_flags & BufferFlags::kReference);
EXPECT_FALSE(tl_config.golden_buffer_flags & BufferFlags::kReference); EXPECT_FALSE(tl_config.golden_buffer_flags & BufferFlags::kReference);
EXPECT_TRUE(tl_config.arf_buffer_flags & BufferFlags::kReference); EXPECT_FALSE(tl_config.arf_buffer_flags & BufferFlags::kReference);
// TL0 base layer frame. // TL0 base layer frame.
tl_config = tl.UpdateLayerConfig(0, timestamp + 2); tl_config = tl.UpdateLayerConfig(0, timestamp + 2);
@ -547,7 +547,7 @@ TEST_F(TemporalLayersTest, DoesNotReferenceUnlessGuaranteedToExist) {
tl_config = tl.UpdateLayerConfig(0, ++timestamp + 1); tl_config = tl.UpdateLayerConfig(0, ++timestamp + 1);
EXPECT_TRUE(tl_config.last_buffer_flags & BufferFlags::kReference); EXPECT_TRUE(tl_config.last_buffer_flags & BufferFlags::kReference);
EXPECT_TRUE(tl_config.golden_buffer_flags & BufferFlags::kReference); EXPECT_TRUE(tl_config.golden_buffer_flags & BufferFlags::kReference);
EXPECT_TRUE(tl_config.arf_buffer_flags & BufferFlags::kReference); EXPECT_FALSE(tl_config.arf_buffer_flags & BufferFlags::kReference);
} }
TEST_F(TemporalLayersTest, DoesNotReferenceUnlessGuaranteedToExistLongDelay) { TEST_F(TemporalLayersTest, DoesNotReferenceUnlessGuaranteedToExistLongDelay) {
@ -627,12 +627,12 @@ TEST_F(TemporalLayersTest, KeyFrame) {
int expected_flags[8] = { int expected_flags[8] = {
kTemporalUpdateLastRefAltRef, kTemporalUpdateLastRefAltRef,
kTemporalUpdateNoneNoRefGolden, kTemporalUpdateNoneNoRefGoldenAltRef,
kTemporalUpdateGoldenWithoutDependencyRefAltRef, kTemporalUpdateGoldenWithoutDependency,
kTemporalUpdateNone, kTemporalUpdateNoneNoRefAltRef,
kTemporalUpdateLastRefAltRef, kTemporalUpdateLast,
kTemporalUpdateNone, kTemporalUpdateNoneNoRefAltRef,
kTemporalUpdateGoldenRefAltRef, kTemporalUpdateGolden,
kTemporalUpdateNone, kTemporalUpdateNone,
}; };
int expected_temporal_idx[8] = {0, 2, 1, 2, 0, 2, 1, 2}; int expected_temporal_idx[8] = {0, 2, 1, 2, 0, 2, 1, 2};