| Index: webrtc/modules/rtp_rtcp/source/rtcp_packet/tmmbr.h
|
| diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet/tmmbr.h b/webrtc/modules/rtp_rtcp/source/rtcp_packet/tmmbr.h
|
| index 84a4180ad3fcac6d353c43f4219c24658cacf05e..4028563d0710875ec920d3bc7fa768a08f7ed4d5 100644
|
| --- a/webrtc/modules/rtp_rtcp/source/rtcp_packet/tmmbr.h
|
| +++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet/tmmbr.h
|
| @@ -6,41 +6,36 @@
|
| * tree. An additional intellectual property rights grant can be found
|
| * in the file PATENTS. All contributing project authors may
|
| * be found in the AUTHORS file in the root of the source tree.
|
| - *
|
| */
|
|
|
| #ifndef WEBRTC_MODULES_RTP_RTCP_SOURCE_RTCP_PACKET_TMMBR_H_
|
| #define WEBRTC_MODULES_RTP_RTCP_SOURCE_RTCP_PACKET_TMMBR_H_
|
|
|
| +#include <vector>
|
| +
|
| #include "webrtc/base/basictypes.h"
|
| -#include "webrtc/modules/rtp_rtcp/source/rtcp_packet.h"
|
| +#include "webrtc/modules/rtp_rtcp/source/rtcp_packet/rtpfb.h"
|
| +#include "webrtc/modules/rtp_rtcp/source/rtcp_packet/tmmb_item.h"
|
| #include "webrtc/modules/rtp_rtcp/source/rtcp_utility.h"
|
|
|
| namespace webrtc {
|
| namespace rtcp {
|
| -// Temporary Maximum Media Stream Bit Rate Request (TMMBR) (RFC 5104).
|
| -class Tmmbr : public RtcpPacket {
|
| +// Temporary Maximum Media Stream Bit Rate Request (TMMBR).
|
| +// RFC 5104, Section 4.2.1.
|
| +class Tmmbr : public Rtpfb {
|
| public:
|
| - Tmmbr() : RtcpPacket() {
|
| - memset(&tmmbr_, 0, sizeof(tmmbr_));
|
| - memset(&tmmbr_item_, 0, sizeof(tmmbr_item_));
|
| - }
|
| + static const uint8_t kFeedbackMessageType = 3;
|
|
|
| - virtual ~Tmmbr() {}
|
| + Tmmbr() {}
|
| + ~Tmmbr() override {}
|
|
|
| - void From(uint32_t ssrc) {
|
| - tmmbr_.SenderSSRC = ssrc;
|
| - }
|
| - void To(uint32_t ssrc) {
|
| - tmmbr_item_.SSRC = ssrc;
|
| - }
|
| - void WithBitrateKbps(uint32_t bitrate_kbps) {
|
| - tmmbr_item_.MaxTotalMediaBitRate = bitrate_kbps;
|
| - }
|
| - void WithOverhead(uint16_t overhead) {
|
| - assert(overhead <= 0x1ff);
|
| - tmmbr_item_.MeasuredOverhead = overhead;
|
| - }
|
| + // Parse assumes header is already parsed and validated.
|
| + bool Parse(const RTCPUtility::RtcpCommonHeader& header,
|
| + const uint8_t* payload); // Size of the payload is in the header.
|
| +
|
| + void WithTmmbr(const TmmbItem& item);
|
| +
|
| + const std::vector<TmmbItem>& requests() const { return items_; }
|
|
|
| protected:
|
| bool Create(uint8_t* packet,
|
| @@ -49,13 +44,16 @@ class Tmmbr : public RtcpPacket {
|
| RtcpPacket::PacketReadyCallback* callback) const override;
|
|
|
| private:
|
| - size_t BlockLength() const {
|
| - const size_t kFciLen = 8;
|
| - return kCommonFbFmtLength + kFciLen;
|
| + size_t BlockLength() const override {
|
| + return kHeaderLength + kCommonFeedbackLength +
|
| + TmmbItem::kLength * items_.size();
|
| }
|
|
|
| - RTCPUtility::RTCPPacketRTPFBTMMBR tmmbr_;
|
| - RTCPUtility::RTCPPacketRTPFBTMMBRItem tmmbr_item_;
|
| + // Media ssrc is unused, shadow base class setter and getter.
|
| + void To(uint32_t ssrc);
|
| + uint32_t media_ssrc() const;
|
| +
|
| + std::vector<TmmbItem> items_;
|
|
|
| RTC_DISALLOW_COPY_AND_ASSIGN(Tmmbr);
|
| };
|
|
|