Modify VP8 RTP to always use 2 bytes for picture Id

Bug: webrtc:7877
Change-Id: Ic40a7e142918399d05d02e8858313fe9b62d042b
Reviewed-on: https://chromium-review.googlesource.com/596967
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#19282}
This commit is contained in:
Gustavo Garcia 2017-08-01 23:21:42 +02:00 committed by Commit Bot
parent 5a2c2b3c35
commit eb94436b38
3 changed files with 22 additions and 31 deletions

View File

@ -579,9 +579,6 @@ size_t RtpPacketizerVp8::PictureIdLength() const {
if (hdr_info_.pictureId == kNoPictureId) {
return 0;
}
if (hdr_info_.pictureId <= 0x7F) {
return 1;
}
return 2;
}

View File

@ -158,17 +158,11 @@ void RtpFormatVp8TestHelper::CheckPictureID() {
auto buffer = packet_.payload();
if (hdr_info_->pictureId != kNoPictureId) {
EXPECT_BIT_I_EQ(buffer[1], 1);
if (hdr_info_->pictureId > 0x7F) {
EXPECT_BIT_EQ(buffer[payload_start_], 7, 1);
EXPECT_EQ(buffer[payload_start_] & 0x7F,
(hdr_info_->pictureId >> 8) & 0x7F);
EXPECT_EQ(buffer[payload_start_ + 1], hdr_info_->pictureId & 0xFF);
payload_start_ += 2;
} else {
EXPECT_BIT_EQ(buffer[payload_start_], 7, 0);
EXPECT_EQ(buffer[payload_start_] & 0x7F, (hdr_info_->pictureId) & 0x7F);
payload_start_ += 1;
}
EXPECT_BIT_EQ(buffer[payload_start_], 7, 1);
EXPECT_EQ(buffer[payload_start_] & 0x7F,
(hdr_info_->pictureId >> 8) & 0x7F);
EXPECT_EQ(buffer[payload_start_ + 1], hdr_info_->pictureId & 0xFF);
payload_start_ += 2;
} else {
EXPECT_BIT_I_EQ(buffer[1], 0);
}

View File

@ -105,7 +105,7 @@ TEST_F(RtpPacketizerVp8Test, TestStrictMode) {
const size_t kNumPartitions = GTEST_ARRAY_SIZE_(kSizeVector);
ASSERT_TRUE(Init(kSizeVector, kNumPartitions));
hdr_info_.pictureId = 200; // > 0x7F should produce 2-byte PictureID.
hdr_info_.pictureId = 200;
const size_t kMaxPayloadSize = 13;
RtpPacketizerVp8 packetizer(hdr_info_, kMaxPayloadSize, 0, kStrict);
size_t num_packets = packetizer.SetPayloadData(helper_->payload_data(),
@ -135,7 +135,7 @@ TEST_F(RtpPacketizerVp8Test, TestStrictEqualTightPartitions) {
const size_t kNumPartitions = GTEST_ARRAY_SIZE_(kSizeVector);
ASSERT_TRUE(Init(kSizeVector, kNumPartitions));
hdr_info_.pictureId = 200; // > 0x7F should produce 2-byte PictureID.
hdr_info_.pictureId = 200;
const int kMaxPayloadSize = 14;
RtpPacketizerVp8 packetizer(hdr_info_, kMaxPayloadSize, 0, kStrict);
size_t num_packets = packetizer.SetPayloadData(helper_->payload_data(),
@ -160,7 +160,7 @@ TEST_F(RtpPacketizerVp8Test, TestAggregateMode) {
const size_t kNumPartitions = GTEST_ARRAY_SIZE_(kSizeVector);
ASSERT_TRUE(Init(kSizeVector, kNumPartitions));
hdr_info_.pictureId = 20; // <= 0x7F should produce 1-byte PictureID.
hdr_info_.pictureId = 20;
const size_t kMaxPayloadSize = 25;
RtpPacketizerVp8 packetizer(hdr_info_, kMaxPayloadSize, 0, kAggregate);
size_t num_packets = packetizer.SetPayloadData(helper_->payload_data(),
@ -168,7 +168,7 @@ TEST_F(RtpPacketizerVp8Test, TestAggregateMode) {
helper_->fragmentation());
// The expected sizes are obtained by hand.
const size_t kExpectedSizes[] = {23, 23, 23, 23};
const size_t kExpectedSizes[] = {24, 24, 24, 24};
const int kExpectedPart[] = {0, 0, 0, 1};
const bool kExpectedFragStart[] = {true, false, false, true};
const size_t kExpectedNum = GTEST_ARRAY_SIZE_(kExpectedSizes);
@ -188,7 +188,7 @@ TEST_F(RtpPacketizerVp8Test, TestAggregateModePacketReductionCauseExtraPacket) {
const size_t kNumPartitions = GTEST_ARRAY_SIZE_(kSizeVector);
ASSERT_TRUE(Init(kSizeVector, kNumPartitions));
hdr_info_.pictureId = 20; // <= 0x7F should produce 1-byte PictureID.
hdr_info_.pictureId = 20;
const size_t kMaxPayloadSize = 25;
const size_t kLastPacketReductionLen = 5;
RtpPacketizerVp8 packetizer(hdr_info_, kMaxPayloadSize,
@ -198,7 +198,7 @@ TEST_F(RtpPacketizerVp8Test, TestAggregateModePacketReductionCauseExtraPacket) {
helper_->fragmentation());
// The expected sizes are obtained by hand.
const size_t kExpectedSizes[] = {23, 23, 23, 13, 13};
const size_t kExpectedSizes[] = {24, 24, 24, 14, 14};
const int kExpectedPart[] = {0, 0, 0, 1, 2};
const bool kExpectedFragStart[] = {true, false, false, true, true};
const size_t kExpectedNum = GTEST_ARRAY_SIZE_(kExpectedSizes);
@ -215,7 +215,7 @@ TEST_F(RtpPacketizerVp8Test, TestAggregateModePacketReduction) {
const size_t kNumPartitions = GTEST_ARRAY_SIZE_(kSizeVector);
ASSERT_TRUE(Init(kSizeVector, kNumPartitions));
hdr_info_.pictureId = 20; // <= 0x7F should produce 1-byte PictureID.
hdr_info_.pictureId = 20;
const size_t kMaxPayloadSize = 25;
const size_t kLastPacketReductionLen = 1;
RtpPacketizerVp8 packetizer(hdr_info_, kMaxPayloadSize,
@ -225,7 +225,7 @@ TEST_F(RtpPacketizerVp8Test, TestAggregateModePacketReduction) {
helper_->fragmentation());
// The expected sizes are obtained by hand.
const size_t kExpectedSizes[] = {23, 23, 23, 23};
const size_t kExpectedSizes[] = {24, 24, 24, 24};
const int kExpectedPart[] = {0, 0, 0, 1};
const bool kExpectedFragStart[] = {true, false, false, true};
const size_t kExpectedNum = GTEST_ARRAY_SIZE_(kExpectedSizes);
@ -242,7 +242,7 @@ TEST_F(RtpPacketizerVp8Test, TestAggregateModeSmallPartitions) {
const size_t kNumPartitions = GTEST_ARRAY_SIZE_(kSizeVector);
ASSERT_TRUE(Init(kSizeVector, kNumPartitions));
hdr_info_.pictureId = 20; // <= 0x7F should produce 1-byte PictureID.
hdr_info_.pictureId = 20;
const size_t kMaxPayloadSize = 13;
RtpPacketizerVp8 packetizer(hdr_info_, kMaxPayloadSize, 0, kAggregate);
size_t num_packets = packetizer.SetPayloadData(helper_->payload_data(),
@ -250,7 +250,7 @@ TEST_F(RtpPacketizerVp8Test, TestAggregateModeSmallPartitions) {
helper_->fragmentation());
// The expected sizes are obtained by hand.
const size_t kExpectedSizes[] = {10, 10, 9};
const size_t kExpectedSizes[] = {11, 11, 10};
const int kExpectedPart[] = {0, 2, 4};
const bool kExpectedFragStart[] = {true, true, true};
const size_t kExpectedNum = GTEST_ARRAY_SIZE_(kExpectedSizes);
@ -267,7 +267,7 @@ TEST_F(RtpPacketizerVp8Test, TestAggregateModeManyPartitions1) {
const size_t kNumPartitions = GTEST_ARRAY_SIZE_(kSizeVector);
ASSERT_TRUE(Init(kSizeVector, kNumPartitions));
hdr_info_.pictureId = 20; // <= 0x7F should produce 1-byte PictureID.
hdr_info_.pictureId = 20;
const size_t kMaxPayloadSize = 1000;
RtpPacketizerVp8 packetizer(hdr_info_, kMaxPayloadSize, 0, kAggregate);
size_t num_packets = packetizer.SetPayloadData(helper_->payload_data(),
@ -275,7 +275,7 @@ TEST_F(RtpPacketizerVp8Test, TestAggregateModeManyPartitions1) {
helper_->fragmentation());
// The expected sizes are obtained by hand.
const size_t kExpectedSizes[] = {803, 803, 803, 803};
const size_t kExpectedSizes[] = {804, 804, 804, 804};
const int kExpectedPart[] = {0, 0, 1, 5};
const bool kExpectedFragStart[] = {true, false, true, true};
const size_t kExpectedNum = GTEST_ARRAY_SIZE_(kExpectedSizes);
@ -295,7 +295,7 @@ TEST_F(RtpPacketizerVp8Test, TestAggregateModeManyPartitions2) {
const size_t kNumPartitions = GTEST_ARRAY_SIZE_(kSizeVector);
ASSERT_TRUE(Init(kSizeVector, kNumPartitions));
hdr_info_.pictureId = 20; // <= 0x7F should produce 1-byte PictureID.
hdr_info_.pictureId = 20;
const size_t kMaxPayloadSize = 1000;
RtpPacketizerVp8 packetizer(hdr_info_, kMaxPayloadSize, 0, kAggregate);
size_t num_packets = packetizer.SetPayloadData(helper_->payload_data(),
@ -303,7 +303,7 @@ TEST_F(RtpPacketizerVp8Test, TestAggregateModeManyPartitions2) {
helper_->fragmentation());
// The expected sizes are obtained by hand.
const size_t kExpectedSizes[] = {802, 803, 603, 803, 803, 803};
const size_t kExpectedSizes[] = {803, 804, 604, 804, 804, 804};
const int kExpectedPart[] = {0, 0, 1, 4, 4, 5};
const bool kExpectedFragStart[] = {true, false, true, true, false, true};
const size_t kExpectedNum = GTEST_ARRAY_SIZE_(kExpectedSizes);
@ -323,7 +323,7 @@ TEST_F(RtpPacketizerVp8Test, TestAggregateModeTwoLargePartitions) {
const size_t kNumPartitions = GTEST_ARRAY_SIZE_(kSizeVector);
ASSERT_TRUE(Init(kSizeVector, kNumPartitions));
hdr_info_.pictureId = 20; // <= 0x7F should produce 1-byte PictureID.
hdr_info_.pictureId = 20;
const size_t kMaxPayloadSize = 1460;
RtpPacketizerVp8 packetizer(hdr_info_, kMaxPayloadSize, 0, kAggregate);
size_t num_packets = packetizer.SetPayloadData(helper_->payload_data(),
@ -331,7 +331,7 @@ TEST_F(RtpPacketizerVp8Test, TestAggregateModeTwoLargePartitions) {
helper_->fragmentation());
// The expected sizes are obtained by hand.
const size_t kExpectedSizes[] = {830, 830, 1137, 1137};
const size_t kExpectedSizes[] = {831, 831, 1138, 1138};
const int kExpectedPart[] = {0, 0, 1, 1};
const bool kExpectedFragStart[] = {true, false, true, false};
const size_t kExpectedNum = GTEST_ARRAY_SIZE_(kExpectedSizes);
@ -381,7 +381,7 @@ TEST_F(RtpPacketizerVp8Test, TestEqualSizeWithLastPacketReduction) {
const size_t kNumPartitions = GTEST_ARRAY_SIZE_(kSizeVector);
ASSERT_TRUE(Init(kSizeVector, kNumPartitions));
hdr_info_.pictureId = 200; // > 0x7F should produce 2-byte PictureID
hdr_info_.pictureId = 200;
const size_t kMaxPayloadSize = 15; // Small enough to produce 5 packets.
const size_t kLastPacketReduction = 5;
RtpPacketizerVp8 packetizer(hdr_info_, kMaxPayloadSize, kLastPacketReduction);