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:
@ -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.
|
||||||
|
@ -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};
|
||||||
|
Reference in New Issue
Block a user