Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(101)

Unified Diff: webrtc/modules/rtp_rtcp/source/rtcp_utility.h

Issue 1307663004: Add a ParseHeader method to RtcpPacket, for parsing common RTCP header. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Merged RtcpPacket header parsing with RTCPUtility Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webrtc/modules/rtp_rtcp/source/rtcp_utility.h
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_utility.h b/webrtc/modules/rtp_rtcp/source/rtcp_utility.h
index fcafe5960ee883fa04c4d17164fd1ed89b43ea81..f95cc29cf09553fca4b409516759c5ebcb363f03 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_utility.h
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_utility.h
@@ -306,12 +306,24 @@ struct RTCPModRawPacket {
uint8_t* _ptrPacketEnd;
};
-struct RTCPCommonHeader {
- uint8_t V; // Version
- bool P; // Padding
- uint8_t IC; // Item count/subtype
- uint8_t PT; // Packet Type
- uint16_t LengthInOctets;
+struct RtcpCommonHeader {
+ static const uint8_t kHeaderSizeBytes = 4;
+ RtcpCommonHeader()
+ : version(2),
+ count_or_format(0),
+ packet_type(0),
+ payload_size_bytes(0),
+ padding_bytes(0) {}
+
+ uint32_t BlockSize() const {
+ return kHeaderSizeBytes + payload_size_bytes + padding_bytes;
+ }
+
+ uint8_t version;
+ uint8_t count_or_format;
+ uint8_t packet_type;
+ uint32_t payload_size_bytes;
+ uint8_t padding_bytes;
};
enum RTCPPT : uint8_t {
@@ -333,9 +345,10 @@ enum RtcpXrBlockType : uint8_t {
kBtVoipMetric = 7
};
-bool RTCPParseCommonHeader(const uint8_t* ptrDataBegin,
- const uint8_t* ptrDataEnd,
- RTCPCommonHeader& parsedHeader);
+bool RtcpParseCommonHeader(const uint8_t* buffer,
+ size_t index,
+ size_t max_length,
+ RtcpCommonHeader* parsed_header);
class RTCPParserV2 {
public:
@@ -418,7 +431,7 @@ class RTCPParserV2 {
bool ParseXrVoipMetricItem(int block_length_4bytes);
bool ParseXrUnsupportedBlockType(int block_length_4bytes);
- bool ParseFBCommon(const RTCPCommonHeader& header);
+ bool ParseFBCommon(const RtcpCommonHeader& header);
bool ParseNACKItem();
bool ParseTMMBRItem();
bool ParseTMMBNItem();
@@ -428,7 +441,7 @@ class RTCPParserV2 {
bool ParsePsfbAppItem();
bool ParsePsfbREMBItem();
- bool ParseAPP(const RTCPCommonHeader& header);
+ bool ParseAPP(const RtcpCommonHeader& header);
bool ParseAPPItem();
private:
@@ -452,9 +465,9 @@ class RTCPPacketIterator {
RTCPPacketIterator(uint8_t* rtcpData, size_t rtcpDataLength);
~RTCPPacketIterator();
- const RTCPCommonHeader* Begin();
- const RTCPCommonHeader* Iterate();
- const RTCPCommonHeader* Current();
+ const RtcpCommonHeader* Begin();
+ const RtcpCommonHeader* Iterate();
+ const RtcpCommonHeader* Current();
private:
uint8_t* const _ptrBegin;
@@ -462,7 +475,7 @@ class RTCPPacketIterator {
uint8_t* _ptrBlock;
- RTCPCommonHeader _header;
+ RtcpCommonHeader _header;
};
} // RTCPUtility
} // namespace webrtc

Powered by Google App Engine
This is Rietveld 408576698