diff options
author | asapersson <asapersson@webrtc.org> | 2015-11-04 07:40:36 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-11-04 15:40:44 +0000 |
commit | 5d4e944391043dddc36fc3d5570a34be1b286a5a (patch) | |
tree | 68daa38cdfda68c6f5ae22726c4d4971525af78c | |
parent | e56c7636912db2f859c4d1bf11e614780001bb0f (diff) | |
download | webrtc-5d4e944391043dddc36fc3d5570a34be1b286a5a.tar.gz |
Revert of Change type of pid_diff (int16_t -> uint8_t) according to updates in RTP payload profile. (patchset #3 id:40001 of https://codereview.webrtc.org/1427253002/ )
Reason for revert:
Breaks bot.
Original issue's description:
> Change type of pid_diff (int16_t -> uint8_t) according to updates in RTP payload profile. Max p_diff is 8 bits.
>
> Change type of number of reference pictures (size_t -> uint8_t). Max is 2 bits.
>
> Size of WebRtcRTPHeader: 4352 -> 1784 bytes.
>
> BUG=webrtc:5144, chromium:500602
>
> Committed: https://crrev.com/81c5c7f8157f767747bd97419eb0a589207354cf
> Cr-Commit-Position: refs/heads/master@{#10504}
TBR=stefan@webrtc.org,mflodman@webrtc.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:5144, chromium:500602
Review URL: https://codereview.webrtc.org/1423493005
Cr-Commit-Position: refs/heads/master@{#10508}
5 files changed, 17 insertions, 18 deletions
diff --git a/webrtc/modules/interface/module_common_types.h b/webrtc/modules/interface/module_common_types.h index 8d96870703..e76a71495b 100644 --- a/webrtc/modules/interface/module_common_types.h +++ b/webrtc/modules/interface/module_common_types.h @@ -133,7 +133,7 @@ struct GofInfoVP9 { temporal_idx[i] = src.temporal_idx[i]; temporal_up_switch[i] = src.temporal_up_switch[i]; num_ref_pics[i] = src.num_ref_pics[i]; - for (uint8_t r = 0; r < num_ref_pics[i]; ++r) { + for (size_t r = 0; r < num_ref_pics[i]; ++r) { pid_diff[i][r] = src.pid_diff[i][r]; } } @@ -142,8 +142,8 @@ struct GofInfoVP9 { size_t num_frames_in_gof; uint8_t temporal_idx[kMaxVp9FramesInGof]; bool temporal_up_switch[kMaxVp9FramesInGof]; - uint8_t num_ref_pics[kMaxVp9FramesInGof]; - uint8_t pid_diff[kMaxVp9FramesInGof][kMaxVp9RefPics]; + size_t num_ref_pics[kMaxVp9FramesInGof]; + int16_t pid_diff[kMaxVp9FramesInGof][kMaxVp9RefPics]; }; struct RTPVideoHeaderVP9 { @@ -187,9 +187,9 @@ struct RTPVideoHeaderVP9 { uint8_t gof_idx; // Index to predefined temporal frame info in SS data. - uint8_t num_ref_pics; // Number of reference pictures used by this layer - // frame. - uint8_t pid_diff[kMaxVp9RefPics]; // P_DIFF signaled to derive the PictureID + size_t num_ref_pics; // Number of reference pictures used by this layer + // frame. + int16_t pid_diff[kMaxVp9RefPics]; // P_DIFF signaled to derive the PictureID // of the reference pictures. int16_t ref_picture_id[kMaxVp9RefPics]; // PictureID of reference pictures. diff --git a/webrtc/modules/rtp_rtcp/source/rtp_format_vp9.cc b/webrtc/modules/rtp_rtcp/source/rtp_format_vp9.cc index 6a00724096..0e76a8eae8 100644 --- a/webrtc/modules/rtp_rtcp/source/rtp_format_vp9.cc +++ b/webrtc/modules/rtp_rtcp/source/rtp_format_vp9.cc @@ -246,7 +246,7 @@ bool WriteRefIndices(const RTPVideoHeaderVP9& vp9, vp9.num_ref_pics == 0 || vp9.num_ref_pics > kMaxVp9RefPics) { return false; } - for (uint8_t i = 0; i < vp9.num_ref_pics; ++i) { + for (size_t i = 0; i < vp9.num_ref_pics; ++i) { bool n_bit = !(i == vp9.num_ref_pics - 1); RETURN_FALSE_ON_ERROR(writer->WriteBits(vp9.pid_diff[i], 7)); RETURN_FALSE_ON_ERROR(writer->WriteBits(n_bit ? 1 : 0, 1)); @@ -301,7 +301,7 @@ bool WriteSsData(const RTPVideoHeaderVP9& vp9, rtc::BitBufferWriter* writer) { writer->WriteBits(vp9.gof.temporal_up_switch[i] ? 1 : 0, 1)); RETURN_FALSE_ON_ERROR(writer->WriteBits(vp9.gof.num_ref_pics[i], 2)); RETURN_FALSE_ON_ERROR(writer->WriteBits(kReservedBitValue0, 2)); - for (uint8_t r = 0; r < vp9.gof.num_ref_pics[i]; ++r) { + for (size_t r = 0; r < vp9.gof.num_ref_pics[i]; ++r) { RETURN_FALSE_ON_ERROR(writer->WriteUInt8(vp9.gof.pid_diff[i][r])); } } @@ -466,7 +466,7 @@ bool ParseSsData(rtc::BitBuffer* parser, RTPVideoHeaderVP9* vp9) { vp9->gof.temporal_up_switch[i] = u_bit ? true : false; vp9->gof.num_ref_pics[i] = r; - for (uint8_t p = 0; p < vp9->gof.num_ref_pics[i]; ++p) { + for (size_t p = 0; p < vp9->gof.num_ref_pics[i]; ++p) { uint8_t p_diff; RETURN_FALSE_ON_ERROR(parser->ReadUInt8(&p_diff)); vp9->gof.pid_diff[i][p] = p_diff; diff --git a/webrtc/modules/rtp_rtcp/source/rtp_format_vp9_unittest.cc b/webrtc/modules/rtp_rtcp/source/rtp_format_vp9_unittest.cc index a81e3fec8b..66ab5cdb71 100644 --- a/webrtc/modules/rtp_rtcp/source/rtp_format_vp9_unittest.cc +++ b/webrtc/modules/rtp_rtcp/source/rtp_format_vp9_unittest.cc @@ -55,7 +55,7 @@ void VerifyHeader(const RTPVideoHeaderVP9& expected, actual.gof.temporal_up_switch[i]); EXPECT_EQ(expected.gof.temporal_idx[i], actual.gof.temporal_idx[i]); EXPECT_EQ(expected.gof.num_ref_pics[i], actual.gof.num_ref_pics[i]); - for (uint8_t j = 0; j < expected.gof.num_ref_pics[i]; j++) { + for (size_t j = 0; j < expected.gof.num_ref_pics[i]; j++) { EXPECT_EQ(expected.gof.pid_diff[i][j], actual.gof.pid_diff[i][j]); } } @@ -545,9 +545,9 @@ TEST_F(RtpDepacketizerVp9Test, ParseLayerInfoWithFlexibleMode) { TEST_F(RtpDepacketizerVp9Test, ParseRefIdx) { const uint8_t kHeaderLength = 6; const int16_t kPictureId = 17; - const uint8_t kPdiff1 = 17; - const uint8_t kPdiff2 = 18; - const uint8_t kPdiff3 = 127; + const int16_t kPdiff1 = 17; + const int16_t kPdiff2 = 18; + const int16_t kPdiff3 = 127; uint8_t packet[13] = {0}; packet[0] = 0xD8; // I:1 P:1 L:0 F:1 B:1 E:0 V:0 R:0 packet[1] = 0x80 | ((kPictureId >> 8) & 0x7F); // Two byte pictureID. @@ -577,7 +577,7 @@ TEST_F(RtpDepacketizerVp9Test, ParseRefIdx) { } TEST_F(RtpDepacketizerVp9Test, ParseRefIdxFailsWithNoPictureId) { - const uint8_t kPdiff = 3; + const int16_t kPdiff = 3; uint8_t packet[13] = {0}; packet[0] = 0x58; // I:0 P:1 L:0 F:1 B:1 E:0 V:0 R:0 packet[1] = (kPdiff << 1); // P,F: P_DIFF:3 N:0 @@ -587,7 +587,7 @@ TEST_F(RtpDepacketizerVp9Test, ParseRefIdxFailsWithNoPictureId) { } TEST_F(RtpDepacketizerVp9Test, ParseRefIdxFailsWithTooManyRefPics) { - const uint8_t kPdiff = 3; + const int16_t kPdiff = 3; uint8_t packet[13] = {0}; packet[0] = 0xD8; // I:1 P:1 L:0 F:1 B:1 E:0 V:0 R:0 packet[1] = kMaxOneBytePictureId; // I: PICTURE ID:127 diff --git a/webrtc/modules/video_coding/main/source/jitter_buffer.cc b/webrtc/modules/video_coding/main/source/jitter_buffer.cc index b1309aa8fa..bc63411346 100644 --- a/webrtc/modules/video_coding/main/source/jitter_buffer.cc +++ b/webrtc/modules/video_coding/main/source/jitter_buffer.cc @@ -168,7 +168,6 @@ void Vp9SsMap::AdvanceFront(uint32_t timestamp) { ss_map_[timestamp] = gof; } -// TODO(asapersson): Update according to updates in RTP payload profile. bool Vp9SsMap::UpdatePacket(VCMPacket* packet) { uint8_t gof_idx = packet->codecSpecificHeader.codecHeader.VP9.gof_idx; if (gof_idx == kNoGofIdx) @@ -187,7 +186,7 @@ bool Vp9SsMap::UpdatePacket(VCMPacket* packet) { // TODO(asapersson): Set vp9.ref_picture_id[i] and add usage. vp9->num_ref_pics = it->second.num_ref_pics[gof_idx]; - for (uint8_t i = 0; i < it->second.num_ref_pics[gof_idx]; ++i) { + for (size_t i = 0; i < it->second.num_ref_pics[gof_idx]; ++i) { vp9->pid_diff[i] = it->second.pid_diff[gof_idx][i]; } return true; diff --git a/webrtc/modules/video_coding/main/source/session_info.cc b/webrtc/modules/video_coding/main/source/session_info.cc index 1e6af8b427..9a1bc54e52 100644 --- a/webrtc/modules/video_coding/main/source/session_info.cc +++ b/webrtc/modules/video_coding/main/source/session_info.cc @@ -126,7 +126,7 @@ void VCMSessionInfo::SetGofInfo(const GofInfoVP9& gof_info, size_t idx) { gof_info.temporal_up_switch[idx]; packets_.front().codecSpecificHeader.codecHeader.VP9.num_ref_pics = gof_info.num_ref_pics[idx]; - for (uint8_t i = 0; i < gof_info.num_ref_pics[idx]; ++i) { + for (size_t i = 0; i < gof_info.num_ref_pics[idx]; ++i) { packets_.front().codecSpecificHeader.codecHeader.VP9.pid_diff[i] = gof_info.pid_diff[idx][i]; } |