Reason for revert: Breaks downstream projects. Original issue's description: > Remove RTPPayloadStrategy and simplify RTPPayloadRegistry > > This CL removes RTPPayloadStrategy that is currently used to handle > audio/video specific aspects of payload handling. Instead, the audio and > video specific aspects will now have different functions, with linear > code flow. > > This CL does not contain any functional changes, and is just a > preparation for future CL:s. > > The main purpose with this CL is to add this function: > bool PayloadIsCompatible(const RtpUtility::Payload& payload, > const webrtc::VideoCodec& video_codec); > that can easily be extended in a future CL to look at video codec > specific information. > > BUG=webrtc:6743 > > Committed: https://crrev.com/b881254dc86d2cc80a52e08155433458be002166 > Cr-Commit-Position: refs/heads/master@{#15232} TBR=danilchap@webrtc.org,solenberg@webrtc.org,mflodman@webrtc.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=webrtc:6743 Review-Url: https://codereview.webrtc.org/2528993002 Cr-Commit-Position: refs/heads/master@{#15234}
69 lines
2.1 KiB
C++
69 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 WEBRTC_MODULES_RTP_RTCP_SOURCE_RTP_UTILITY_H_
|
|
#define WEBRTC_MODULES_RTP_RTCP_SOURCE_RTP_UTILITY_H_
|
|
|
|
#include <map>
|
|
|
|
#include "webrtc/base/deprecation.h"
|
|
#include "webrtc/modules/rtp_rtcp/include/receive_statistics.h"
|
|
#include "webrtc/modules/rtp_rtcp/include/rtp_rtcp_defines.h"
|
|
#include "webrtc/modules/rtp_rtcp/source/rtp_header_extension.h"
|
|
#include "webrtc/modules/rtp_rtcp/source/rtp_rtcp_config.h"
|
|
#include "webrtc/typedefs.h"
|
|
|
|
namespace webrtc {
|
|
|
|
const uint8_t kRtpMarkerBitMask = 0x80;
|
|
|
|
RtpData* NullObjectRtpData();
|
|
RtpFeedback* NullObjectRtpFeedback();
|
|
ReceiveStatistics* NullObjectReceiveStatistics();
|
|
|
|
namespace RtpUtility {
|
|
|
|
struct Payload {
|
|
char name[RTP_PAYLOAD_NAME_SIZE];
|
|
bool audio;
|
|
PayloadUnion typeSpecific;
|
|
};
|
|
|
|
typedef std::map<int8_t, Payload*> PayloadTypeMap;
|
|
|
|
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 // WEBRTC_MODULES_RTP_RTCP_SOURCE_RTP_UTILITY_H_
|