From df948f03b34dc652c2b3a944535fc01ec22395ce Mon Sep 17 00:00:00 2001 From: danilchap Date: Fri, 13 Nov 2015 03:03:13 -0800 Subject: rtcp::ReportBlock refactored to contain parsing Review URL: https://codereview.webrtc.org/1420283022 Cr-Commit-Position: refs/heads/master@{#10633} --- webrtc/modules/rtp_rtcp/source/rtcp_packet.cc | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) (limited to 'webrtc/modules/rtp_rtcp/source/rtcp_packet.cc') diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc b/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc index 792caa7b8b..4af3292659 100644 --- a/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc +++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc @@ -154,18 +154,12 @@ void CreateReceiverReport(const RTCPPacketRR& rr, // | delay since last SR (DLSR) | // +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ -void CreateReportBlocks(const std::vector& blocks, +void CreateReportBlocks(const std::vector& blocks, uint8_t* buffer, size_t* pos) { - for (std::vector::const_iterator - it = blocks.begin(); it != blocks.end(); ++it) { - AssignUWord32(buffer, pos, (*it).SSRC); - AssignUWord8(buffer, pos, (*it).FractionLost); - AssignUWord24(buffer, pos, (*it).CumulativeNumOfPacketsLost); - AssignUWord32(buffer, pos, (*it).ExtendedHighestSequenceNumber); - AssignUWord32(buffer, pos, (*it).Jitter); - AssignUWord32(buffer, pos, (*it).LastSR); - AssignUWord32(buffer, pos, (*it).DelayLastSR); + for (const ReportBlock& block : blocks) { + block.Create(buffer + *pos); + *pos += ReportBlock::kLength; } } @@ -781,7 +775,7 @@ bool SenderReport::WithReportBlock(const ReportBlock& block) { LOG(LS_WARNING) << "Max report blocks reached."; return false; } - report_blocks_.push_back(block.report_block_); + report_blocks_.push_back(block); sr_.NumberOfReportBlocks = report_blocks_.size(); return true; } @@ -805,7 +799,7 @@ bool ReceiverReport::WithReportBlock(const ReportBlock& block) { LOG(LS_WARNING) << "Max report blocks reached."; return false; } - report_blocks_.push_back(block.report_block_); + report_blocks_.push_back(block); rr_.NumberOfReportBlocks = report_blocks_.size(); return true; } -- cgit v1.2.3 From f8506cbdd88ce538d9e6c28ee39111345189778f Mon Sep 17 00:00:00 2001 From: danilchap Date: Fri, 13 Nov 2015 07:33:20 -0800 Subject: rtcp::Ij renamed to rtcp::ExtendedJitterReport to match name given in the RFC5450 private member renamed to inter_arrival_jitters_ for the same reason. rtcp::ExtendedJitterReport moved into own file accessors and Parse function added to make class usable for parsing packet Review URL: https://codereview.webrtc.org/1434213004 Cr-Commit-Position: refs/heads/master@{#10636} --- webrtc/modules/rtp_rtcp/source/rtcp_packet.cc | 45 --------------------------- 1 file changed, 45 deletions(-) (limited to 'webrtc/modules/rtp_rtcp/source/rtcp_packet.cc') diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc b/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc index 4af3292659..7c0650c488 100644 --- a/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc +++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc @@ -163,28 +163,6 @@ void CreateReportBlocks(const std::vector& blocks, } } -// Transmission Time Offsets in RTP Streams (RFC 5450). -// -// 0 1 2 3 -// 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -// hdr |V=2|P| RC | PT=IJ=195 | length | -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -// | inter-arrival jitter | -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -// . . -// . . -// . . -// | inter-arrival jitter | -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - -void CreateIj(const std::vector& ij_items, - uint8_t* buffer, - size_t* pos) { - for (uint32_t item : ij_items) - AssignUWord32(buffer, pos, item); -} - // Source Description (SDES) (RFC 3550). // // 0 1 2 3 @@ -804,29 +782,6 @@ bool ReceiverReport::WithReportBlock(const ReportBlock& block) { return true; } -bool Ij::Create(uint8_t* packet, - size_t* index, - size_t max_length, - RtcpPacket::PacketReadyCallback* callback) const { - while (*index + BlockLength() > max_length) { - if (!OnBufferFull(packet, index, callback)) - return false; - } - size_t length = ij_items_.size(); - CreateHeader(length, PT_IJ, length, packet, index); - CreateIj(ij_items_, packet, index); - return true; -} - -bool Ij::WithJitterItem(uint32_t jitter) { - if (ij_items_.size() >= kMaxNumberOfIjItems) { - LOG(LS_WARNING) << "Max inter-arrival jitter items reached."; - return false; - } - ij_items_.push_back(jitter); - return true; -} - bool Sdes::Create(uint8_t* packet, size_t* index, size_t max_length, -- cgit v1.2.3 From 0219c9b4bfcbb778137756210eb95f40d936cc66 Mon Sep 17 00:00:00 2001 From: danilchap Date: Wed, 18 Nov 2015 05:56:53 -0800 Subject: rtcp::App moved into own file and got Parse function Review URL: https://codereview.webrtc.org/1437353003 Cr-Commit-Position: refs/heads/master@{#10688} --- webrtc/modules/rtp_rtcp/source/rtcp_packet.cc | 37 --------------------------- 1 file changed, 37 deletions(-) (limited to 'webrtc/modules/rtp_rtcp/source/rtcp_packet.cc') diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc b/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc index 7c0650c488..be03d9b41a 100644 --- a/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc +++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc @@ -227,30 +227,6 @@ void CreateBye(const RTCPPacketBYE& bye, AssignUWord32(buffer, pos, csrc); } -// Application-Defined packet (APP) (RFC 3550). -// -// 0 1 2 3 -// 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -// |V=2|P| subtype | PT=APP=204 | length | -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -// | SSRC/CSRC | -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -// | name (ASCII) | -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -// | application-dependent data ... -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - -void CreateApp(const RTCPPacketAPP& app, - uint32_t ssrc, - uint8_t* buffer, - size_t* pos) { - AssignUWord32(buffer, pos, ssrc); - AssignUWord32(buffer, pos, app.Name); - memcpy(buffer + *pos, app.Data, app.Size); - *pos += app.Size; -} - // RFC 4585: Feedback format. // // Common packet format: @@ -848,19 +824,6 @@ bool Bye::WithCsrc(uint32_t csrc) { return true; } -bool App::Create(uint8_t* packet, - size_t* index, - size_t max_length, - RtcpPacket::PacketReadyCallback* callback) const { - while (*index + BlockLength() > max_length) { - if (!OnBufferFull(packet, index, callback)) - return false; - } - CreateHeader(app_.SubType, PT_APP, HeaderLength(), packet, index); - CreateApp(app_, ssrc_, packet, index); - return true; -} - bool Pli::Create(uint8_t* packet, size_t* index, size_t max_length, -- cgit v1.2.3 From 50c5136cb2ad11eb9ba3df1a1d54d527c8a0dc77 Mon Sep 17 00:00:00 2001 From: danilchap Date: Sun, 22 Nov 2015 09:03:11 -0800 Subject: RTCP Bye packet moved to own file Bye class got support for Parsing Reason field implemented Review URL: https://codereview.webrtc.org/1430013003 Cr-Commit-Position: refs/heads/master@{#10741} --- webrtc/modules/rtp_rtcp/source/rtcp_packet.cc | 47 --------------------------- 1 file changed, 47 deletions(-) (limited to 'webrtc/modules/rtp_rtcp/source/rtcp_packet.cc') diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc b/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc index be03d9b41a..e3305186a0 100644 --- a/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc +++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc @@ -19,7 +19,6 @@ using webrtc::RTCPUtility::kBtReceiverReferenceTime; using webrtc::RTCPUtility::kBtVoipMetric; using webrtc::RTCPUtility::PT_APP; -using webrtc::RTCPUtility::PT_BYE; using webrtc::RTCPUtility::PT_IJ; using webrtc::RTCPUtility::PT_PSFB; using webrtc::RTCPUtility::PT_RR; @@ -29,7 +28,6 @@ using webrtc::RTCPUtility::PT_SR; using webrtc::RTCPUtility::PT_XR; using webrtc::RTCPUtility::RTCPPacketAPP; -using webrtc::RTCPUtility::RTCPPacketBYE; using webrtc::RTCPUtility::RTCPPacketPSFBAPP; using webrtc::RTCPUtility::RTCPPacketPSFBFIR; using webrtc::RTCPUtility::RTCPPacketPSFBFIRItem; @@ -205,28 +203,6 @@ void CreateSdes(const std::vector& chunks, } } -// Bye packet (BYE) (RFC 3550). -// -// 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -// |V=2|P| SC | PT=BYE=203 | length | -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -// | SSRC/CSRC | -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -// : ... : -// +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ -// (opt) | length | reason for leaving ... -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - -void CreateBye(const RTCPPacketBYE& bye, - const std::vector& csrcs, - uint8_t* buffer, - size_t* pos) { - AssignUWord32(buffer, pos, bye.SenderSSRC); - for (uint32_t csrc : csrcs) - AssignUWord32(buffer, pos, csrc); -} - // RFC 4585: Feedback format. // // Common packet format: @@ -801,29 +777,6 @@ size_t Sdes::BlockLength() const { return length; } -bool Bye::Create(uint8_t* packet, - size_t* index, - size_t max_length, - RtcpPacket::PacketReadyCallback* callback) const { - while (*index + BlockLength() > max_length) { - if (!OnBufferFull(packet, index, callback)) - return false; - } - size_t length = HeaderLength(); - CreateHeader(length, PT_BYE, length, packet, index); - CreateBye(bye_, csrcs_, packet, index); - return true; -} - -bool Bye::WithCsrc(uint32_t csrc) { - if (csrcs_.size() >= kMaxNumberOfCsrcs) { - LOG(LS_WARNING) << "Max CSRC size reached."; - return false; - } - csrcs_.push_back(csrc); - return true; -} - bool Pli::Create(uint8_t* packet, size_t* index, size_t max_length, -- cgit v1.2.3 From f8385aded0943c7889d6e9b92f3c0978f3657bb2 Mon Sep 17 00:00:00 2001 From: danilchap Date: Fri, 27 Nov 2015 05:36:09 -0800 Subject: rtcp::Pli moved into own file and got a Parse function Created rtcp::Psfb abstract class between rtcp::Pli and rtcp::RtcpPacket to hold common data for Feedback Message. BUG=webrtc:5260 Review URL: https://codereview.webrtc.org/1446513002 Cr-Commit-Position: refs/heads/master@{#10823} --- webrtc/modules/rtp_rtcp/source/rtcp_packet.cc | 43 --------------------------- 1 file changed, 43 deletions(-) (limited to 'webrtc/modules/rtp_rtcp/source/rtcp_packet.cc') diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc b/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc index e3305186a0..d23abdcdcf 100644 --- a/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc +++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc @@ -31,7 +31,6 @@ using webrtc::RTCPUtility::RTCPPacketAPP; using webrtc::RTCPUtility::RTCPPacketPSFBAPP; using webrtc::RTCPUtility::RTCPPacketPSFBFIR; using webrtc::RTCPUtility::RTCPPacketPSFBFIRItem; -using webrtc::RTCPUtility::RTCPPacketPSFBPLI; using webrtc::RTCPUtility::RTCPPacketPSFBREMBItem; using webrtc::RTCPUtility::RTCPPacketPSFBRPSI; using webrtc::RTCPUtility::RTCPPacketPSFBSLI; @@ -203,34 +202,6 @@ void CreateSdes(const std::vector& chunks, } } -// RFC 4585: Feedback format. -// -// Common packet format: -// -// 0 1 2 3 -// 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -// |V=2|P| FMT | PT | length | -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -// | SSRC of packet sender | -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -// | SSRC of media source | -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -// : Feedback Control Information (FCI) : -// : -// - -// Picture loss indication (PLI) (RFC 4585). -// -// FCI: no feedback control information. - -void CreatePli(const RTCPPacketPSFBPLI& pli, - uint8_t* buffer, - size_t* pos) { - AssignUWord32(buffer, pos, pli.SenderSSRC); - AssignUWord32(buffer, pos, pli.MediaSSRC); -} - // Slice loss indication (SLI) (RFC 4585). // // FCI: @@ -777,20 +748,6 @@ size_t Sdes::BlockLength() const { return length; } -bool Pli::Create(uint8_t* packet, - size_t* index, - size_t max_length, - RtcpPacket::PacketReadyCallback* callback) const { - while (*index + BlockLength() > max_length) { - if (!OnBufferFull(packet, index, callback)) - return false; - } - const uint8_t kFmt = 1; - CreateHeader(kFmt, PT_PSFB, HeaderLength(), packet, index); - CreatePli(pli_, packet, index); - return true; -} - bool Sli::Create(uint8_t* packet, size_t* index, size_t max_length, -- cgit v1.2.3 From 97f7e13c23ddb26543f33bce944d501e58d1dd9b Mon Sep 17 00:00:00 2001 From: Danil Chapovalov Date: Fri, 4 Dec 2015 16:13:30 +0100 Subject: rtcp::ReceiverReport moved into own file and got Parse function BUG=webrtc:5260 R=asapersson@webrtc.org Review URL: https://codereview.webrtc.org/1453083002 . Cr-Commit-Position: refs/heads/master@{#10897} --- webrtc/modules/rtp_rtcp/source/rtcp_packet.cc | 41 --------------------------- 1 file changed, 41 deletions(-) (limited to 'webrtc/modules/rtp_rtcp/source/rtcp_packet.cc') diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc b/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc index d23abdcdcf..41ebcadc22 100644 --- a/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc +++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc @@ -21,7 +21,6 @@ using webrtc::RTCPUtility::kBtVoipMetric; using webrtc::RTCPUtility::PT_APP; using webrtc::RTCPUtility::PT_IJ; using webrtc::RTCPUtility::PT_PSFB; -using webrtc::RTCPUtility::PT_RR; using webrtc::RTCPUtility::PT_RTPFB; using webrtc::RTCPUtility::PT_SDES; using webrtc::RTCPUtility::PT_SR; @@ -36,7 +35,6 @@ using webrtc::RTCPUtility::RTCPPacketPSFBRPSI; using webrtc::RTCPUtility::RTCPPacketPSFBSLI; using webrtc::RTCPUtility::RTCPPacketPSFBSLIItem; using webrtc::RTCPUtility::RTCPPacketReportBlockItem; -using webrtc::RTCPUtility::RTCPPacketRR; using webrtc::RTCPUtility::RTCPPacketRTPFBNACK; using webrtc::RTCPUtility::RTCPPacketRTPFBNACKItem; using webrtc::RTCPUtility::RTCPPacketRTPFBTMMBN; @@ -119,21 +117,6 @@ void CreateSenderReport(const RTCPPacketSR& sr, AssignUWord32(buffer, pos, sr.SenderOctetCount); } -// Receiver report (RR), header (RFC 3550). -// -// 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -// |V=2|P| RC | PT=RR=201 | length | -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -// | SSRC of packet sender | -// +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ - -void CreateReceiverReport(const RTCPPacketRR& rr, - uint8_t* buffer, - size_t* pos) { - AssignUWord32(buffer, pos, rr.SenderSSRC); -} - // Report block (RFC 3550). // // 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 @@ -681,30 +664,6 @@ bool SenderReport::WithReportBlock(const ReportBlock& block) { return true; } -bool ReceiverReport::Create(uint8_t* packet, - size_t* index, - size_t max_length, - RtcpPacket::PacketReadyCallback* callback) const { - while (*index + BlockLength() > max_length) { - if (!OnBufferFull(packet, index, callback)) - return false; - } - CreateHeader(rr_.NumberOfReportBlocks, PT_RR, HeaderLength(), packet, index); - CreateReceiverReport(rr_, packet, index); - CreateReportBlocks(report_blocks_, packet, index); - return true; -} - -bool ReceiverReport::WithReportBlock(const ReportBlock& block) { - if (report_blocks_.size() >= kMaxNumberOfReportBlocks) { - LOG(LS_WARNING) << "Max report blocks reached."; - return false; - } - report_blocks_.push_back(block); - rr_.NumberOfReportBlocks = report_blocks_.size(); - return true; -} - bool Sdes::Create(uint8_t* packet, size_t* index, size_t max_length, -- cgit v1.2.3 From fc47ed6c0524d7ee0bc7947f0ad65fcefda34a29 Mon Sep 17 00:00:00 2001 From: Danil Chapovalov Date: Mon, 7 Dec 2015 14:46:35 +0100 Subject: rtcp::Rrtr block moved into own file and got Parse function MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit BUG=webrtc:5260 R=asapersson@webrtc.org, åsapersson Review URL: https://codereview.webrtc.org/1496883002 . Cr-Commit-Position: refs/heads/master@{#10912} --- webrtc/modules/rtp_rtcp/source/rtcp_packet.cc | 34 +++++---------------------- 1 file changed, 6 insertions(+), 28 deletions(-) (limited to 'webrtc/modules/rtp_rtcp/source/rtcp_packet.cc') diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc b/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc index 41ebcadc22..e31f7487f3 100644 --- a/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc +++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc @@ -43,7 +43,6 @@ using webrtc::RTCPUtility::RTCPPacketRTPFBTMMBR; using webrtc::RTCPUtility::RTCPPacketRTPFBTMMBRItem; using webrtc::RTCPUtility::RTCPPacketSR; using webrtc::RTCPUtility::RTCPPacketXRDLRRReportBlockItem; -using webrtc::RTCPUtility::RTCPPacketXRReceiverReferenceTimeItem; using webrtc::RTCPUtility::RTCPPacketXR; using webrtc::RTCPUtility::RTCPPacketXRVOIPMetricItem; @@ -416,30 +415,6 @@ void CreateXrBlockHeader(uint8_t block_type, AssignUWord16(buffer, pos, block_length); } -// Receiver Reference Time Report Block (RFC 3611). -// -// 0 1 2 3 -// 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -// | BT=4 | reserved | block length = 2 | -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -// | NTP timestamp, most significant word | -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -// | NTP timestamp, least significant word | -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - -void CreateRrtr(const std::vector& rrtrs, - uint8_t* buffer, - size_t* pos) { - const uint16_t kBlockLength = 2; - for (std::vector::const_iterator it = - rrtrs.begin(); it != rrtrs.end(); ++it) { - CreateXrBlockHeader(kBtReceiverReferenceTime, kBlockLength, buffer, pos); - AssignUWord32(buffer, pos, (*it).NTPMostSignificant); - AssignUWord32(buffer, pos, (*it).NTPLeastSignificant); - } -} - // DLRR Report Block (RFC 3611). // // 0 1 2 3 @@ -910,19 +885,22 @@ bool Xr::Create(uint8_t* packet, } CreateHeader(0U, PT_XR, HeaderLength(), packet, index); CreateXrHeader(xr_header_, packet, index); - CreateRrtr(rrtr_blocks_, packet, index); + for (const Rrtr& block : rrtr_blocks_) { + block.Create(packet + *index); + *index += Rrtr::kLength; + } CreateDlrr(dlrr_blocks_, packet, index); CreateVoipMetric(voip_metric_blocks_, packet, index); return true; } bool Xr::WithRrtr(Rrtr* rrtr) { - assert(rrtr); + RTC_DCHECK(rrtr); if (rrtr_blocks_.size() >= kMaxNumberOfRrtrBlocks) { LOG(LS_WARNING) << "Max RRTR blocks reached."; return false; } - rrtr_blocks_.push_back(rrtr->rrtr_block_); + rrtr_blocks_.push_back(*rrtr); return true; } -- cgit v1.2.3 From b8b6fbb7a5d2f5a14f7f6f81c253747aa28e4c7f Mon Sep 17 00:00:00 2001 From: danilchap Date: Thu, 10 Dec 2015 05:05:27 -0800 Subject: lint build/include errors fixed in rtp_rtcp module BUG=webrtc:5277 R=mflodman Review URL: https://codereview.webrtc.org/1505993003 Cr-Commit-Position: refs/heads/master@{#10971} --- webrtc/modules/rtp_rtcp/source/rtcp_packet.cc | 2 ++ 1 file changed, 2 insertions(+) (limited to 'webrtc/modules/rtp_rtcp/source/rtcp_packet.cc') diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc b/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc index e31f7487f3..cae479e39d 100644 --- a/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc +++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc @@ -10,6 +10,8 @@ #include "webrtc/modules/rtp_rtcp/source/rtcp_packet.h" +#include + #include "webrtc/base/checks.h" #include "webrtc/base/logging.h" #include "webrtc/modules/rtp_rtcp/source/byte_io.h" -- cgit v1.2.3 From 91941ae493cb37a4e1250c7d3aad1c7394b5850e Mon Sep 17 00:00:00 2001 From: danilchap Date: Tue, 15 Dec 2015 07:06:36 -0800 Subject: rtcp::VoipMetric block moved into own file and got Parse function Review URL: https://codereview.webrtc.org/1452733002 Cr-Commit-Position: refs/heads/master@{#11030} --- webrtc/modules/rtp_rtcp/source/rtcp_packet.cc | 64 +++------------------------ 1 file changed, 5 insertions(+), 59 deletions(-) (limited to 'webrtc/modules/rtp_rtcp/source/rtcp_packet.cc') diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc b/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc index cae479e39d..28cb20eca2 100644 --- a/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc +++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc @@ -46,7 +46,6 @@ using webrtc::RTCPUtility::RTCPPacketRTPFBTMMBRItem; using webrtc::RTCPUtility::RTCPPacketSR; using webrtc::RTCPUtility::RTCPPacketXRDLRRReportBlockItem; using webrtc::RTCPUtility::RTCPPacketXR; -using webrtc::RTCPUtility::RTCPPacketXRVOIPMetricItem; namespace webrtc { namespace rtcp { @@ -452,62 +451,6 @@ void CreateDlrr(const std::vector& dlrrs, } } } - -// VoIP Metrics Report Block (RFC 3611). -// -// 0 1 2 3 -// 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -// | BT=7 | reserved | block length = 8 | -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -// | SSRC of source | -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -// | loss rate | discard rate | burst density | gap density | -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -// | burst duration | gap duration | -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -// | round trip delay | end system delay | -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -// | signal level | noise level | RERL | Gmin | -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -// | R factor | ext. R factor | MOS-LQ | MOS-CQ | -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -// | RX config | reserved | JB nominal | -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -// | JB maximum | JB abs max | -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - -void CreateVoipMetric(const std::vector& metrics, - uint8_t* buffer, - size_t* pos) { - const uint16_t kBlockLength = 8; - for (std::vector::const_iterator it = - metrics.begin(); it != metrics.end(); ++it) { - CreateXrBlockHeader(kBtVoipMetric, kBlockLength, buffer, pos); - AssignUWord32(buffer, pos, (*it).SSRC); - AssignUWord8(buffer, pos, (*it).lossRate); - AssignUWord8(buffer, pos, (*it).discardRate); - AssignUWord8(buffer, pos, (*it).burstDensity); - AssignUWord8(buffer, pos, (*it).gapDensity); - AssignUWord16(buffer, pos, (*it).burstDuration); - AssignUWord16(buffer, pos, (*it).gapDuration); - AssignUWord16(buffer, pos, (*it).roundTripDelay); - AssignUWord16(buffer, pos, (*it).endSystemDelay); - AssignUWord8(buffer, pos, (*it).signalLevel); - AssignUWord8(buffer, pos, (*it).noiseLevel); - AssignUWord8(buffer, pos, (*it).RERL); - AssignUWord8(buffer, pos, (*it).Gmin); - AssignUWord8(buffer, pos, (*it).Rfactor); - AssignUWord8(buffer, pos, (*it).extRfactor); - AssignUWord8(buffer, pos, (*it).MOSLQ); - AssignUWord8(buffer, pos, (*it).MOSCQ); - AssignUWord8(buffer, pos, (*it).RXconfig); - AssignUWord8(buffer, pos, 0); - AssignUWord16(buffer, pos, (*it).JBnominal); - AssignUWord16(buffer, pos, (*it).JBmax); - AssignUWord16(buffer, pos, (*it).JBabsMax); - } -} } // namespace void RtcpPacket::Append(RtcpPacket* packet) { @@ -892,7 +835,10 @@ bool Xr::Create(uint8_t* packet, *index += Rrtr::kLength; } CreateDlrr(dlrr_blocks_, packet, index); - CreateVoipMetric(voip_metric_blocks_, packet, index); + for (const VoipMetric& block : voip_metric_blocks_) { + block.Create(packet + *index); + *index += VoipMetric::kLength; + } return true; } @@ -922,7 +868,7 @@ bool Xr::WithVoipMetric(VoipMetric* voip_metric) { LOG(LS_WARNING) << "Max Voip Metric blocks reached."; return false; } - voip_metric_blocks_.push_back(voip_metric->metric_); + voip_metric_blocks_.push_back(*voip_metric); return true; } -- cgit v1.2.3 From 54999d411b97e3df54121e5f7bfb28846f3c8086 Mon Sep 17 00:00:00 2001 From: danilchap Date: Wed, 16 Dec 2015 01:56:20 -0800 Subject: rtcp::Dlrr block moved into own file and got Parse function BUG=webrtc:5260 Review URL: https://codereview.webrtc.org/1453973005 Cr-Commit-Position: refs/heads/master@{#11044} --- webrtc/modules/rtp_rtcp/source/rtcp_packet.cc | 77 +++------------------------ 1 file changed, 8 insertions(+), 69 deletions(-) (limited to 'webrtc/modules/rtp_rtcp/source/rtcp_packet.cc') diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc b/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc index 28cb20eca2..1508658f5d 100644 --- a/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc +++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc @@ -407,50 +407,6 @@ void CreateXrHeader(const RTCPPacketXR& header, AssignUWord32(buffer, pos, header.OriginatorSSRC); } -void CreateXrBlockHeader(uint8_t block_type, - uint16_t block_length, - uint8_t* buffer, - size_t* pos) { - AssignUWord8(buffer, pos, block_type); - AssignUWord8(buffer, pos, 0); - AssignUWord16(buffer, pos, block_length); -} - -// DLRR Report Block (RFC 3611). -// -// 0 1 2 3 -// 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -// | BT=5 | reserved | block length | -// +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ -// | SSRC_1 (SSRC of first receiver) | sub- -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ block -// | last RR (LRR) | 1 -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -// | delay since last RR (DLRR) | -// +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ -// | SSRC_2 (SSRC of second receiver) | sub- -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ block -// : ... : 2 - -void CreateDlrr(const std::vector& dlrrs, - uint8_t* buffer, - size_t* pos) { - for (std::vector::const_iterator it = dlrrs.begin(); - it != dlrrs.end(); ++it) { - if ((*it).empty()) { - continue; - } - uint16_t block_length = 3 * (*it).size(); - CreateXrBlockHeader(kBtDlrr, block_length, buffer, pos); - for (Xr::DlrrBlock::const_iterator it_block = (*it).begin(); - it_block != (*it).end(); ++it_block) { - AssignUWord32(buffer, pos, (*it_block).SSRC); - AssignUWord32(buffer, pos, (*it_block).LastRR); - AssignUWord32(buffer, pos, (*it_block).DelayLastRR); - } - } -} } // namespace void RtcpPacket::Append(RtcpPacket* packet) { @@ -834,7 +790,10 @@ bool Xr::Create(uint8_t* packet, block.Create(packet + *index); *index += Rrtr::kLength; } - CreateDlrr(dlrr_blocks_, packet, index); + for (const Dlrr& block : dlrr_blocks_) { + block.Create(packet + *index); + *index += block.BlockLength(); + } for (const VoipMetric& block : voip_metric_blocks_) { block.Create(packet + *index); *index += VoipMetric::kLength; @@ -853,12 +812,12 @@ bool Xr::WithRrtr(Rrtr* rrtr) { } bool Xr::WithDlrr(Dlrr* dlrr) { - assert(dlrr); + RTC_DCHECK(dlrr); if (dlrr_blocks_.size() >= kMaxNumberOfDlrrBlocks) { LOG(LS_WARNING) << "Max DLRR blocks reached."; return false; } - dlrr_blocks_.push_back(dlrr->dlrr_block_); + dlrr_blocks_.push_back(*dlrr); return true; } @@ -873,33 +832,13 @@ bool Xr::WithVoipMetric(VoipMetric* voip_metric) { } size_t Xr::DlrrLength() const { - const size_t kBlockHeaderLen = 4; - const size_t kSubBlockLen = 12; size_t length = 0; - for (std::vector::const_iterator it = dlrr_blocks_.begin(); - it != dlrr_blocks_.end(); ++it) { - if (!(*it).empty()) { - length += kBlockHeaderLen + kSubBlockLen * (*it).size(); - } + for (const Dlrr& block : dlrr_blocks_) { + length += block.BlockLength(); } return length; } -bool Dlrr::WithDlrrItem(uint32_t ssrc, - uint32_t last_rr, - uint32_t delay_last_rr) { - if (dlrr_block_.size() >= kMaxNumberOfDlrrItems) { - LOG(LS_WARNING) << "Max DLRR items reached."; - return false; - } - RTCPPacketXRDLRRReportBlockItem dlrr; - dlrr.SSRC = ssrc; - dlrr.LastRR = last_rr; - dlrr.DelayLastRR = delay_last_rr; - dlrr_block_.push_back(dlrr); - return true; -} - RawPacket::RawPacket(size_t buffer_length) : buffer_length_(buffer_length), length_(0) { buffer_.reset(new uint8_t[buffer_length]); -- cgit v1.2.3 From a8890a57a5d03f942924ff61d3c62244f2bdab10 Mon Sep 17 00:00:00 2001 From: danilchap Date: Tue, 22 Dec 2015 03:43:04 -0800 Subject: rtcp::Nack packet moved into own file and got Parse function Review URL: https://codereview.webrtc.org/1461623003 Cr-Commit-Position: refs/heads/master@{#11111} --- webrtc/modules/rtp_rtcp/source/rtcp_packet.cc | 84 --------------------------- 1 file changed, 84 deletions(-) (limited to 'webrtc/modules/rtp_rtcp/source/rtcp_packet.cc') diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc b/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc index 1508658f5d..7a9fb9b5fd 100644 --- a/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc +++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc @@ -209,31 +209,6 @@ void CreateSli(const RTCPPacketPSFBSLI& sli, AssignUWord8(buffer, pos, (sli_item.NumberOfMB << 6) + sli_item.PictureId); } -// Generic NACK (RFC 4585). -// -// FCI: -// -// 0 1 2 3 -// 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -// | PID | BLP | -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - -void CreateNack(const RTCPPacketRTPFBNACK& nack, - const std::vector& nack_fields, - size_t start_index, - size_t end_index, - uint8_t* buffer, - size_t* pos) { - AssignUWord32(buffer, pos, nack.SenderSSRC); - AssignUWord32(buffer, pos, nack.MediaSSRC); - for (size_t i = start_index; i < end_index; ++i) { - const RTCPPacketRTPFBNACKItem& nack_item = nack_fields[i]; - AssignUWord16(buffer, pos, nack_item.PacketID); - AssignUWord16(buffer, pos, nack_item.BitMask); - } -} - // Reference picture selection indication (RPSI) (RFC 4585). // // FCI: @@ -597,65 +572,6 @@ bool Sli::Create(uint8_t* packet, return true; } -bool Nack::Create(uint8_t* packet, - size_t* index, - size_t max_length, - RtcpPacket::PacketReadyCallback* callback) const { - assert(!nack_fields_.empty()); - // If nack list can't fit in packet, try to fragment. - size_t nack_index = 0; - do { - size_t bytes_left_in_buffer = max_length - *index; - if (bytes_left_in_buffer < kCommonFbFmtLength + 4) { - if (!OnBufferFull(packet, index, callback)) - return false; - continue; - } - int64_t num_nack_fields = - std::min((bytes_left_in_buffer - kCommonFbFmtLength) / 4, - nack_fields_.size() - nack_index); - - const uint8_t kFmt = 1; - size_t size_bytes = (num_nack_fields * 4) + kCommonFbFmtLength; - size_t header_length = ((size_bytes + 3) / 4) - 1; // As 32bit words - 1 - CreateHeader(kFmt, PT_RTPFB, header_length, packet, index); - CreateNack(nack_, nack_fields_, nack_index, nack_index + num_nack_fields, - packet, index); - - nack_index += num_nack_fields; - } while (nack_index < nack_fields_.size()); - - return true; -} - -size_t Nack::BlockLength() const { - return (nack_fields_.size() * 4) + kCommonFbFmtLength; -} - -void Nack::WithList(const uint16_t* nack_list, int length) { - assert(nack_list); - assert(nack_fields_.empty()); - int i = 0; - while (i < length) { - uint16_t pid = nack_list[i++]; - // Bitmask specifies losses in any of the 16 packets following the pid. - uint16_t bitmask = 0; - while (i < length) { - int shift = static_cast(nack_list[i] - pid) - 1; - if (shift >= 0 && shift <= 15) { - bitmask |= (1 << shift); - ++i; - } else { - break; - } - } - RTCPUtility::RTCPPacketRTPFBNACKItem item; - item.PacketID = pid; - item.BitMask = bitmask; - nack_fields_.push_back(item); - } -} - bool Rpsi::Create(uint8_t* packet, size_t* index, size_t max_length, -- cgit v1.2.3 From ef3d805f6e50bc488f8e4e9e353068b78c73d17f Mon Sep 17 00:00:00 2001 From: danilchap Date: Mon, 11 Jan 2016 03:31:08 -0800 Subject: [rtp_rtcp] rtcp::Tmmbn moved into own file explicetly unchanged. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit BUG=webrtc:5260 R=åsapersson Review URL: https://codereview.webrtc.org/1578713002 Cr-Commit-Position: refs/heads/master@{#11201} --- webrtc/modules/rtp_rtcp/source/rtcp_packet.cc | 53 --------------------------- 1 file changed, 53 deletions(-) (limited to 'webrtc/modules/rtp_rtcp/source/rtcp_packet.cc') diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc b/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc index 7a9fb9b5fd..1126bea186 100644 --- a/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc +++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc @@ -39,8 +39,6 @@ using webrtc::RTCPUtility::RTCPPacketPSFBSLIItem; using webrtc::RTCPUtility::RTCPPacketReportBlockItem; using webrtc::RTCPUtility::RTCPPacketRTPFBNACK; using webrtc::RTCPUtility::RTCPPacketRTPFBNACKItem; -using webrtc::RTCPUtility::RTCPPacketRTPFBTMMBN; -using webrtc::RTCPUtility::RTCPPacketRTPFBTMMBNItem; using webrtc::RTCPUtility::RTCPPacketRTPFBTMMBR; using webrtc::RTCPUtility::RTCPPacketRTPFBTMMBRItem; using webrtc::RTCPUtility::RTCPPacketSR; @@ -297,29 +295,6 @@ void CreateTmmbr(const RTCPPacketRTPFBTMMBR& tmmbr, CreateTmmbrItem(tmmbr_item, buffer, pos); } -// Temporary Maximum Media Stream Bit Rate Notification (TMMBN) (RFC 5104). -// -// FCI: -// -// 0 1 2 3 -// 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -// | SSRC | -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -// | MxTBR Exp | MxTBR Mantissa |Measured Overhead| -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - -void CreateTmmbn(const RTCPPacketRTPFBTMMBN& tmmbn, - const std::vector& tmmbn_items, - uint8_t* buffer, - size_t* pos) { - AssignUWord32(buffer, pos, tmmbn.SenderSSRC); - AssignUWord32(buffer, pos, kUnusedMediaSourceSsrc0); - for (uint8_t i = 0; i < tmmbn_items.size(); ++i) { - CreateTmmbrItem(tmmbn_items[i], buffer, pos); - } -} - // Receiver Estimated Max Bitrate (REMB) (draft-alvestrand-rmcat-remb). // // 0 1 2 3 @@ -664,34 +639,6 @@ bool Tmmbr::Create(uint8_t* packet, return true; } -bool Tmmbn::WithTmmbr(uint32_t ssrc, uint32_t bitrate_kbps, uint16_t overhead) { - assert(overhead <= 0x1ff); - if (tmmbn_items_.size() >= kMaxNumberOfTmmbrs) { - LOG(LS_WARNING) << "Max TMMBN size reached."; - return false; - } - RTCPPacketRTPFBTMMBRItem tmmbn_item; - tmmbn_item.SSRC = ssrc; - tmmbn_item.MaxTotalMediaBitRate = bitrate_kbps; - tmmbn_item.MeasuredOverhead = overhead; - tmmbn_items_.push_back(tmmbn_item); - return true; -} - -bool Tmmbn::Create(uint8_t* packet, - size_t* index, - size_t max_length, - RtcpPacket::PacketReadyCallback* callback) const { - while (*index + BlockLength() > max_length) { - if (!OnBufferFull(packet, index, callback)) - return false; - } - const uint8_t kFmt = 4; - CreateHeader(kFmt, PT_RTPFB, HeaderLength(), packet, index); - CreateTmmbn(tmmbn_, tmmbn_items_, packet, index); - return true; -} - bool Xr::Create(uint8_t* packet, size_t* index, size_t max_length, -- cgit v1.2.3 From 7e8145f05d5f6921ffca3d62e9c4d1301c1d8bcb Mon Sep 17 00:00:00 2001 From: danilchap Date: Mon, 11 Jan 2016 11:49:19 -0800 Subject: [rtp_rtcp] rtcp::Tmmbr moved into own file MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit BUG=webrtc:5260 R=åsapersson Review URL: https://codereview.webrtc.org/1575023002 Cr-Commit-Position: refs/heads/master@{#11206} --- webrtc/modules/rtp_rtcp/source/rtcp_packet.cc | 53 --------------------------- 1 file changed, 53 deletions(-) (limited to 'webrtc/modules/rtp_rtcp/source/rtcp_packet.cc') diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc b/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc index 1126bea186..64a69f1029 100644 --- a/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc +++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc @@ -39,8 +39,6 @@ using webrtc::RTCPUtility::RTCPPacketPSFBSLIItem; using webrtc::RTCPUtility::RTCPPacketReportBlockItem; using webrtc::RTCPUtility::RTCPPacketRTPFBNACK; using webrtc::RTCPUtility::RTCPPacketRTPFBNACKItem; -using webrtc::RTCPUtility::RTCPPacketRTPFBTMMBR; -using webrtc::RTCPUtility::RTCPPacketRTPFBTMMBRItem; using webrtc::RTCPUtility::RTCPPacketSR; using webrtc::RTCPUtility::RTCPPacketXRDLRRReportBlockItem; using webrtc::RTCPUtility::RTCPPacketXR; @@ -258,43 +256,6 @@ void CreateFir(const RTCPPacketPSFBFIR& fir, AssignUWord24(buffer, pos, 0); } -void CreateTmmbrItem(const RTCPPacketRTPFBTMMBRItem& tmmbr_item, - uint8_t* buffer, - size_t* pos) { - uint32_t bitrate_bps = tmmbr_item.MaxTotalMediaBitRate * 1000; - uint32_t mantissa = 0; - uint8_t exp = 0; - ComputeMantissaAnd6bitBase2Exponent(bitrate_bps, 17, &mantissa, &exp); - - AssignUWord32(buffer, pos, tmmbr_item.SSRC); - AssignUWord8(buffer, pos, (exp << 2) + ((mantissa >> 15) & 0x03)); - AssignUWord8(buffer, pos, mantissa >> 7); - AssignUWord8(buffer, pos, (mantissa << 1) + - ((tmmbr_item.MeasuredOverhead >> 8) & 0x01)); - AssignUWord8(buffer, pos, tmmbr_item.MeasuredOverhead); -} - -// Temporary Maximum Media Stream Bit Rate Request (TMMBR) (RFC 5104). -// -// FCI: -// -// 0 1 2 3 -// 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -// | SSRC | -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -// | MxTBR Exp | MxTBR Mantissa |Measured Overhead| -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - -void CreateTmmbr(const RTCPPacketRTPFBTMMBR& tmmbr, - const RTCPPacketRTPFBTMMBRItem& tmmbr_item, - uint8_t* buffer, - size_t* pos) { - AssignUWord32(buffer, pos, tmmbr.SenderSSRC); - AssignUWord32(buffer, pos, kUnusedMediaSourceSsrc0); - CreateTmmbrItem(tmmbr_item, buffer, pos); -} - // Receiver Estimated Max Bitrate (REMB) (draft-alvestrand-rmcat-remb). // // 0 1 2 3 @@ -625,20 +586,6 @@ void Remb::AppliesTo(uint32_t ssrc) { remb_item_.SSRCs[remb_item_.NumberOfSSRCs++] = ssrc; } -bool Tmmbr::Create(uint8_t* packet, - size_t* index, - size_t max_length, - RtcpPacket::PacketReadyCallback* callback) const { - while (*index + BlockLength() > max_length) { - if (!OnBufferFull(packet, index, callback)) - return false; - } - const uint8_t kFmt = 3; - CreateHeader(kFmt, PT_RTPFB, HeaderLength(), packet, index); - CreateTmmbr(tmmbr_, tmmbr_item_, packet, index); - return true; -} - bool Xr::Create(uint8_t* packet, size_t* index, size_t max_length, -- cgit v1.2.3 From 92e677a1f8d24dfa0031d307c4a7d8e530cd4eb4 Mon Sep 17 00:00:00 2001 From: danilchap Date: Tue, 12 Jan 2016 10:04:52 -0800 Subject: [rtp_rtcp] rtcp::Sli packet moved into own file and got Parse function MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit BUG=webrtc:5260 R=åsapersson Review URL: https://codereview.webrtc.org/1551893002 Cr-Commit-Position: refs/heads/master@{#11228} --- webrtc/modules/rtp_rtcp/source/rtcp_packet.cc | 40 --------------------------- 1 file changed, 40 deletions(-) (limited to 'webrtc/modules/rtp_rtcp/source/rtcp_packet.cc') diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc b/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc index 64a69f1029..62371a861c 100644 --- a/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc +++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc @@ -34,8 +34,6 @@ using webrtc::RTCPUtility::RTCPPacketPSFBFIR; using webrtc::RTCPUtility::RTCPPacketPSFBFIRItem; using webrtc::RTCPUtility::RTCPPacketPSFBREMBItem; using webrtc::RTCPUtility::RTCPPacketPSFBRPSI; -using webrtc::RTCPUtility::RTCPPacketPSFBSLI; -using webrtc::RTCPUtility::RTCPPacketPSFBSLIItem; using webrtc::RTCPUtility::RTCPPacketReportBlockItem; using webrtc::RTCPUtility::RTCPPacketRTPFBNACK; using webrtc::RTCPUtility::RTCPPacketRTPFBNACKItem; @@ -181,30 +179,6 @@ void CreateSdes(const std::vector& chunks, } } -// Slice loss indication (SLI) (RFC 4585). -// -// FCI: -// -// 0 1 2 3 -// 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -// | First | Number | PictureID | -// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - -void CreateSli(const RTCPPacketPSFBSLI& sli, - const RTCPPacketPSFBSLIItem& sli_item, - uint8_t* buffer, - size_t* pos) { - AssignUWord32(buffer, pos, sli.SenderSSRC); - AssignUWord32(buffer, pos, sli.MediaSSRC); - - AssignUWord8(buffer, pos, sli_item.FirstMB >> 5); - AssignUWord8(buffer, pos, (sli_item.FirstMB << 3) + - ((sli_item.NumberOfMB >> 10) & 0x07)); - AssignUWord8(buffer, pos, sli_item.NumberOfMB >> 2); - AssignUWord8(buffer, pos, (sli_item.NumberOfMB << 6) + sli_item.PictureId); -} - // Reference picture selection indication (RPSI) (RFC 4585). // // FCI: @@ -494,20 +468,6 @@ size_t Sdes::BlockLength() const { return length; } -bool Sli::Create(uint8_t* packet, - size_t* index, - size_t max_length, - RtcpPacket::PacketReadyCallback* callback) const { - while (*index + BlockLength() > max_length) { - if (!OnBufferFull(packet, index, callback)) - return false; - } - const uint8_t kFmt = 2; - CreateHeader(kFmt, PT_PSFB, HeaderLength(), packet, index); - CreateSli(sli_, sli_item_, packet, index); - return true; -} - bool Rpsi::Create(uint8_t* packet, size_t* index, size_t max_length, -- cgit v1.2.3 From 2f7dea164dc49ae8a0322e3c9edb1dd23266c664 Mon Sep 17 00:00:00 2001 From: danilchap Date: Wed, 13 Jan 2016 02:03:04 -0800 Subject: [rtp_rtcp] rtcp::Empty moved into own file and renamed to CompoundPacket on the way MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Class renamed to indicated use of the rtcp::Empty class: it can only be used as container for other rtcp packets. All tests that use Append function moved from rtcp_packet_unittest, even if they did not use Empty class. This is because there is plan to make RtcpPacket class lighter by moving Append functionality to CompoundPacket class. BUG=webrtc:5260 R=åsapersson Review URL: https://codereview.webrtc.org/1582503002 Cr-Commit-Position: refs/heads/master@{#11234} --- webrtc/modules/rtp_rtcp/source/rtcp_packet.cc | 11 ----------- 1 file changed, 11 deletions(-) (limited to 'webrtc/modules/rtp_rtcp/source/rtcp_packet.cc') diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc b/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc index 62371a861c..eef2978371 100644 --- a/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc +++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet.cc @@ -390,17 +390,6 @@ void RtcpPacket::CreateHeader( AssignUWord16(buffer, pos, length); } -bool Empty::Create(uint8_t* packet, - size_t* index, - size_t max_length, - RtcpPacket::PacketReadyCallback* callback) const { - return true; -} - -size_t Empty::BlockLength() const { - return 0; -} - bool SenderReport::Create(uint8_t* packet, size_t* index, size_t max_length, -- cgit v1.2.3