mirror of
https://github.com/mollyim/webrtc.git
synced 2025-05-15 23:01:21 +01:00

Remove PayloadUnion's public member variables, so that the outside world has to go through the accessors. This is good code hygiene in general. For example, it makes it possible to make the audio and video states Optional, so that exactly one of them can be live at any one time. BUG=webrtc:8159 Change-Id: Ie617b9038f961b329bd67b45478ff33d97148447 Reviewed-on: https://webrtc-review.googlesource.com/4428 Commit-Queue: Karl Wiberg <kwiberg@webrtc.org> Reviewed-by: Danil Chapovalov <danilchap@webrtc.org> Cr-Commit-Position: refs/heads/master@{#20064}
68 lines
2.1 KiB
C++
68 lines
2.1 KiB
C++
/*
|
|
* Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
|
|
*
|
|
* Use of this source code is governed by a BSD-style license
|
|
* that can be found in the LICENSE file in the root of the source
|
|
* 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 MODULES_RTP_RTCP_SOURCE_RTP_UTILITY_H_
|
|
#define MODULES_RTP_RTCP_SOURCE_RTP_UTILITY_H_
|
|
|
|
#include <cstring>
|
|
#include <map>
|
|
|
|
#include "modules/rtp_rtcp/include/receive_statistics.h"
|
|
#include "modules/rtp_rtcp/include/rtp_header_extension_map.h"
|
|
#include "modules/rtp_rtcp/include/rtp_rtcp_defines.h"
|
|
#include "modules/rtp_rtcp/source/rtp_rtcp_config.h"
|
|
#include "rtc_base/deprecation.h"
|
|
#include "typedefs.h" // NOLINT(build/include)
|
|
|
|
namespace webrtc {
|
|
|
|
const uint8_t kRtpMarkerBitMask = 0x80;
|
|
|
|
RtpFeedback* NullObjectRtpFeedback();
|
|
|
|
namespace RtpUtility {
|
|
|
|
struct Payload {
|
|
Payload(const char* name, const PayloadUnion& pu) : typeSpecific(pu) {
|
|
std::strncpy(this->name, name, sizeof(this->name) - 1);
|
|
this->name[sizeof(this->name) - 1] = '\0';
|
|
}
|
|
char name[RTP_PAYLOAD_NAME_SIZE];
|
|
PayloadUnion typeSpecific;
|
|
};
|
|
|
|
bool StringCompare(const char* str1, const char* str2, const uint32_t length);
|
|
|
|
// Round up to the nearest size that is a multiple of 4.
|
|
size_t Word32Align(size_t size);
|
|
|
|
class RtpHeaderParser {
|
|
public:
|
|
RtpHeaderParser(const uint8_t* rtpData, size_t rtpDataLength);
|
|
~RtpHeaderParser();
|
|
|
|
bool RTCP() const;
|
|
bool ParseRtcp(RTPHeader* header) const;
|
|
bool Parse(RTPHeader* parsedPacket,
|
|
RtpHeaderExtensionMap* ptrExtensionMap = nullptr) const;
|
|
|
|
private:
|
|
void ParseOneByteExtensionHeader(RTPHeader* parsedPacket,
|
|
const RtpHeaderExtensionMap* ptrExtensionMap,
|
|
const uint8_t* ptrRTPDataExtensionEnd,
|
|
const uint8_t* ptr) const;
|
|
|
|
const uint8_t* const _ptrRTPDataBegin;
|
|
const uint8_t* const _ptrRTPDataEnd;
|
|
};
|
|
} // namespace RtpUtility
|
|
} // namespace webrtc
|
|
|
|
#endif // MODULES_RTP_RTCP_SOURCE_RTP_UTILITY_H_
|