blob: 1937c8f9f6accb2e771e6927813529c39a699192 [file] [log] [blame]
Amit Hilbuchdd9390c2018-11-13 16:26:05 -08001/*
2 * Copyright 2018 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 */
10
Steve Anton10542f22019-01-11 09:11:00 -080011#ifndef PC_CHANNEL_INTERFACE_H_
12#define PC_CHANNEL_INTERFACE_H_
Amit Hilbuchdd9390c2018-11-13 16:26:05 -080013
14#include <string>
Amit Hilbuchbcd39d42019-01-25 17:13:56 -080015#include <vector>
Amit Hilbuchdd9390c2018-11-13 16:26:05 -080016
17#include "api/jsep.h"
Steve Anton10542f22019-01-11 09:11:00 -080018#include "api/media_types.h"
19#include "media/base/media_channel.h"
20#include "pc/rtp_transport_internal.h"
Amit Hilbuchdd9390c2018-11-13 16:26:05 -080021
22namespace cricket {
23
24class MediaContentDescription;
25
26// ChannelInterface contains methods common to voice, video and data channels.
27// As more methods are added to BaseChannel, they should be included in the
28// interface as well.
29class ChannelInterface {
30 public:
31 virtual cricket::MediaType media_type() const = 0;
32
33 virtual MediaChannel* media_channel() const = 0;
34
35 // TODO(deadbeef): This is redundant; remove this.
36 virtual const std::string& transport_name() const = 0;
37
38 virtual const std::string& content_name() const = 0;
39
40 virtual bool enabled() const = 0;
41
42 // Enables or disables this channel
43 virtual bool Enable(bool enable) = 0;
44
45 // Used for latency measurements.
46 virtual sigslot::signal1<ChannelInterface*>& SignalFirstPacketReceived() = 0;
47
48 // Channel control
49 virtual bool SetLocalContent(const MediaContentDescription* content,
50 webrtc::SdpType type,
51 std::string* error_desc) = 0;
52 virtual bool SetRemoteContent(const MediaContentDescription* content,
53 webrtc::SdpType type,
54 std::string* error_desc) = 0;
Taylor Brandstetterc1ad1ff2020-12-10 15:31:14 -080055 virtual void SetPayloadTypeDemuxingEnabled(bool enabled) = 0;
56 virtual bool UpdateRtpTransport(std::string* error_desc) = 0;
Amit Hilbuchdd9390c2018-11-13 16:26:05 -080057
Amit Hilbuchbcd39d42019-01-25 17:13:56 -080058 // Access to the local and remote streams that were set on the channel.
59 virtual const std::vector<StreamParams>& local_streams() const = 0;
60 virtual const std::vector<StreamParams>& remote_streams() const = 0;
61
Amit Hilbuchdd9390c2018-11-13 16:26:05 -080062 // Set an RTP level transport.
63 // Some examples:
64 // * An RtpTransport without encryption.
65 // * An SrtpTransport for SDES.
66 // * A DtlsSrtpTransport for DTLS-SRTP.
67 virtual bool SetRtpTransport(webrtc::RtpTransportInternal* rtp_transport) = 0;
68
Markus Handell5932fe12020-12-17 22:19:40 +010069 // Returns the last negotiated header extensions.
70 virtual RtpHeaderExtensions GetNegotiatedRtpHeaderExtensions() const = 0;
71
Amit Hilbuchdd9390c2018-11-13 16:26:05 -080072 protected:
73 virtual ~ChannelInterface() = default;
74};
75
76} // namespace cricket
77
Steve Anton10542f22019-01-11 09:11:00 -080078#endif // PC_CHANNEL_INTERFACE_H_