For TL(temporal layers) = 2, the alt-ref frame should not be used as a reference.
Correction for the last frame in the cycle. Review URL: https://webrtc-codereview.appspot.com/343015 git-svn-id: http://webrtc.googlecode.com/svn/trunk@1479 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
parent
0074187436
commit
20cd06123c
@ -63,7 +63,7 @@ bool TemporalLayers::ConfigureBitrates(int bitrateKbit,
|
|||||||
temporal_pattern_[4] = kTemporalUpdateLast;
|
temporal_pattern_[4] = kTemporalUpdateLast;
|
||||||
temporal_pattern_[5] = kTemporalUpdateGolden;
|
temporal_pattern_[5] = kTemporalUpdateGolden;
|
||||||
temporal_pattern_[6] = kTemporalUpdateLast;
|
temporal_pattern_[6] = kTemporalUpdateLast;
|
||||||
temporal_pattern_[7] = kTemporalUpdateNone;
|
temporal_pattern_[7] = kTemporalUpdateNoneNoRefAltref;
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
temporal_ids_length_ = 4;
|
temporal_ids_length_ = 4;
|
||||||
@ -175,6 +175,9 @@ int TemporalLayers::EncodeFlags() {
|
|||||||
flags |= VP8_EFLAG_NO_UPD_GF;
|
flags |= VP8_EFLAG_NO_UPD_GF;
|
||||||
flags |= VP8_EFLAG_NO_UPD_LAST;
|
flags |= VP8_EFLAG_NO_UPD_LAST;
|
||||||
break;
|
break;
|
||||||
|
case kTemporalUpdateNoneNoRefAltref:
|
||||||
|
flags |= VP8_EFLAG_NO_REF_ARF;
|
||||||
|
// Deliberately no break here.
|
||||||
case kTemporalUpdateNone:
|
case kTemporalUpdateNone:
|
||||||
flags |= VP8_EFLAG_NO_UPD_GF;
|
flags |= VP8_EFLAG_NO_UPD_GF;
|
||||||
flags |= VP8_EFLAG_NO_UPD_ARF;
|
flags |= VP8_EFLAG_NO_UPD_ARF;
|
||||||
|
@ -35,6 +35,8 @@ class TemporalLayers {
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
enum TemporalReferences {
|
enum TemporalReferences {
|
||||||
|
// Second layer and last frame in cycle, for 2 layers.
|
||||||
|
kTemporalUpdateNoneNoRefAltref = 6,
|
||||||
// Highest enhancement layer.
|
// Highest enhancement layer.
|
||||||
kTemporalUpdateNone = 5,
|
kTemporalUpdateNone = 5,
|
||||||
// Second enhancement layer.
|
// Second enhancement layer.
|
||||||
|
@ -40,6 +40,11 @@ enum {
|
|||||||
VP8_EFLAG_NO_UPD_ARF |
|
VP8_EFLAG_NO_UPD_ARF |
|
||||||
VP8_EFLAG_NO_UPD_LAST |
|
VP8_EFLAG_NO_UPD_LAST |
|
||||||
VP8_EFLAG_NO_UPD_ENTROPY,
|
VP8_EFLAG_NO_UPD_ENTROPY,
|
||||||
|
kTemporalUpdateNoneNoRefAltRef = VP8_EFLAG_NO_REF_ARF |
|
||||||
|
VP8_EFLAG_NO_UPD_GF |
|
||||||
|
VP8_EFLAG_NO_UPD_ARF |
|
||||||
|
VP8_EFLAG_NO_UPD_LAST |
|
||||||
|
VP8_EFLAG_NO_UPD_ENTROPY,
|
||||||
};
|
};
|
||||||
|
|
||||||
TEST(TemporalLayersTest, 2Layers) {
|
TEST(TemporalLayersTest, 2Layers) {
|
||||||
@ -55,7 +60,7 @@ TEST(TemporalLayersTest, 2Layers) {
|
|||||||
kTemporalUpdateLast,
|
kTemporalUpdateLast,
|
||||||
kTemporalUpdateGolden,
|
kTemporalUpdateGolden,
|
||||||
kTemporalUpdateLast,
|
kTemporalUpdateLast,
|
||||||
kTemporalUpdateNone,
|
kTemporalUpdateNoneNoRefAltRef,
|
||||||
kTemporalUpdateLast,
|
kTemporalUpdateLast,
|
||||||
kTemporalUpdateGoldenWithoutDependency,
|
kTemporalUpdateGoldenWithoutDependency,
|
||||||
kTemporalUpdateLast,
|
kTemporalUpdateLast,
|
||||||
@ -63,7 +68,7 @@ TEST(TemporalLayersTest, 2Layers) {
|
|||||||
kTemporalUpdateLast,
|
kTemporalUpdateLast,
|
||||||
kTemporalUpdateGolden,
|
kTemporalUpdateGolden,
|
||||||
kTemporalUpdateLast,
|
kTemporalUpdateLast,
|
||||||
kTemporalUpdateNone
|
kTemporalUpdateNoneNoRefAltRef
|
||||||
};
|
};
|
||||||
int expected_temporal_idx[16] =
|
int expected_temporal_idx[16] =
|
||||||
{ 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1 };
|
{ 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1 };
|
||||||
|
Loading…
x
Reference in New Issue
Block a user