blob: 851ccf3bc280667562ea25c5c39ef7fc96ad104a [file] [log] [blame]
Henrik Kjellanderff761fb2015-11-04 08:31:52 +01001/*
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
Tommi25eb47c2019-08-29 16:39:05 +020010#ifndef TEST_RTP_HEADER_PARSER_H_
11#define TEST_RTP_HEADER_PARSER_H_
12
13#include <memory>
Henrik Kjellanderff761fb2015-11-04 08:31:52 +010014
Steve Anton10542f22019-01-11 09:11:00 -080015#include "api/rtp_parameters.h"
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020016#include "modules/rtp_rtcp/include/rtp_rtcp_defines.h"
Henrik Kjellanderff761fb2015-11-04 08:31:52 +010017
18namespace webrtc {
19
20struct RTPHeader;
21
22class RtpHeaderParser {
23 public:
Tommi25eb47c2019-08-29 16:39:05 +020024 static std::unique_ptr<RtpHeaderParser> CreateForTest();
Henrik Kjellanderff761fb2015-11-04 08:31:52 +010025 virtual ~RtpHeaderParser() {}
26
27 // Returns true if the packet is an RTCP packet, false otherwise.
28 static bool IsRtcp(const uint8_t* packet, size_t length);
Sebastian Jansson1e427612019-03-05 14:25:03 +010029 static absl::optional<uint32_t> GetSsrc(const uint8_t* packet, size_t length);
Henrik Kjellanderff761fb2015-11-04 08:31:52 +010030
31 // Parses the packet and stores the parsed packet in |header|. Returns true on
32 // success, false otherwise.
33 // This method is thread-safe in the sense that it can parse multiple packets
34 // at once.
35 virtual bool Parse(const uint8_t* packet,
36 size_t length,
37 RTPHeader* header) const = 0;
38
39 // Registers an RTP header extension and binds it to |id|.
40 virtual bool RegisterRtpHeaderExtension(RTPExtensionType type,
41 uint8_t id) = 0;
42
Sebastian Janssonfd201712018-11-12 16:44:16 +010043 // Registers an RTP header extension.
44 virtual bool RegisterRtpHeaderExtension(RtpExtension extension) = 0;
45
Henrik Kjellanderff761fb2015-11-04 08:31:52 +010046 // De-registers an RTP header extension.
47 virtual bool DeregisterRtpHeaderExtension(RTPExtensionType type) = 0;
Sebastian Janssonfd201712018-11-12 16:44:16 +010048
49 // De-registers an RTP header extension.
50 virtual bool DeregisterRtpHeaderExtension(RtpExtension extension) = 0;
Henrik Kjellanderff761fb2015-11-04 08:31:52 +010051};
52} // namespace webrtc
Tommi25eb47c2019-08-29 16:39:05 +020053#endif // TEST_RTP_HEADER_PARSER_H_