Add packetization and coding/decoding of feedback message format.

BUG=webrtc:4312
R=stefan@webrtc.org

Review URL: https://codereview.webrtc.org/1175263002 .

Cr-Commit-Position: refs/heads/master@{#9651}
This commit is contained in:
Erik Språng
2015-07-29 10:46:54 +02:00
parent f1828e8ed9
commit a3b8769860
9 changed files with 1442 additions and 90 deletions

View File

@ -92,18 +92,27 @@ class RtcpPacket {
PacketReadyCallback* callback) const;
protected:
RtcpPacket() : kHeaderLength(4) {}
RtcpPacket() {}
virtual bool Create(uint8_t* packet,
size_t* index,
size_t max_length,
PacketReadyCallback* callback) const = 0;
void CreateHeader(uint8_t count_or_format,
uint8_t packet_type,
size_t length,
uint8_t* buffer,
size_t* pos) const;
bool OnBufferFull(uint8_t* packet,
size_t* index,
RtcpPacket::PacketReadyCallback* callback) const;
const size_t kHeaderLength;
virtual size_t BlockLength() const = 0;
size_t HeaderLength() const;
static const size_t kHeaderLength = 4;
private:
bool CreateAndAddAppended(uint8_t* packet,
@ -114,6 +123,8 @@ class RtcpPacket {
std::vector<RtcpPacket*> appended_packets_;
};
// TODO(sprang): Move RtcpPacket subclasses out to separate files.
class Empty : public RtcpPacket {
public:
Empty() : RtcpPacket() {}
@ -126,6 +137,8 @@ class Empty : public RtcpPacket {
size_t max_length,
RtcpPacket::PacketReadyCallback* callback) const override;
size_t BlockLength() const override;
private:
DISALLOW_COPY_AND_ASSIGN(Empty);
};
@ -651,6 +664,8 @@ class Nack : public RtcpPacket {
size_t max_length,
RtcpPacket::PacketReadyCallback* callback) const override;
size_t BlockLength() const override;
private:
RTCPUtility::RTCPPacketRTPFBNACK nack_;