Index: webrtc/modules/rtp_rtcp/source/rtcp_packet/rpsi.h |
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet/rpsi.h b/webrtc/modules/rtp_rtcp/source/rtcp_packet/rpsi.h |
index 1882ca6488fac5ea8e77206198305cce7ff2f02b..1fa3352335e19e24829f7d0dd75e9da1542bc9e0 100644 |
--- a/webrtc/modules/rtp_rtcp/source/rtcp_packet/rpsi.h |
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet/rpsi.h |
@@ -12,34 +12,29 @@ |
#define WEBRTC_MODULES_RTP_RTCP_SOURCE_RTCP_PACKET_RPSI_H_ |
#include "webrtc/base/basictypes.h" |
-#include "webrtc/modules/rtp_rtcp/source/rtcp_packet.h" |
+#include "webrtc/modules/rtp_rtcp/source/rtcp_packet/psfb.h" |
#include "webrtc/modules/rtp_rtcp/source/rtcp_utility.h" |
namespace webrtc { |
namespace rtcp { |
// Reference picture selection indication (RPSI) (RFC 4585). |
-class Rpsi : public RtcpPacket { |
+// Assumes native bit string stores PictureId (VP8, VP9). |
+class Rpsi : public Psfb { |
public: |
- Rpsi() |
- : RtcpPacket(), |
- padding_bytes_(0) { |
- memset(&rpsi_, 0, sizeof(rpsi_)); |
- } |
- |
- virtual ~Rpsi() {} |
- |
- void From(uint32_t ssrc) { |
- rpsi_.SenderSSRC = ssrc; |
- } |
- void To(uint32_t ssrc) { |
- rpsi_.MediaSSRC = ssrc; |
- } |
- void WithPayloadType(uint8_t payload) { |
- assert(payload <= 0x7f); |
- rpsi_.PayloadType = payload; |
- } |
+ static const uint8_t kFeedbackMessageType = 3; |
+ Rpsi(); |
+ ~Rpsi() override {} |
+ |
+ // 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 WithPayloadType(uint8_t payload); |
void WithPictureId(uint64_t picture_id); |
+ uint8_t payload_type() const { return payload_type_; } |
+ uint64_t picture_id() const { return picture_id_; } |
+ |
protected: |
bool Create(uint8_t* packet, |
size_t* index, |
@@ -47,13 +42,12 @@ class Rpsi : public RtcpPacket { |
RtcpPacket::PacketReadyCallback* callback) const override; |
private: |
- size_t BlockLength() const { |
- size_t fci_length = 2 + (rpsi_.NumberOfValidBits / 8) + padding_bytes_; |
- return kCommonFbFmtLength + fci_length; |
- } |
+ size_t BlockLength() const override { return block_length_; } |
+ static size_t CalculateBlockLength(uint8_t bitstring_size_bytes); |
- uint8_t padding_bytes_; |
- RTCPUtility::RTCPPacketPSFBRPSI rpsi_; |
+ uint8_t payload_type_; |
+ uint64_t picture_id_; |
+ size_t block_length_; |
RTC_DISALLOW_COPY_AND_ASSIGN(Rpsi); |
}; |