mirror of
https://github.com/mollyim/webrtc.git
synced 2025-05-15 14:50:39 +01:00

CreateOffer and CreateAnswer will now examine the layers on the transceiver to determine if multiple layers are requested (Simulcast). In this scenario RIDs will be used in the layers (instead of SSRCs). When the offer is created, only RIDs are signalled in the offer. When the offer is set locally SetLocalDescription() SSRCs will be generated for each layer by the Channel and sent downstream to the MediaChannel. The MediaChannel receives configuration that looks identical to that of legacy simulcast, and should be able to integrate the streams correctly regardless of how they were signalled. Setting multiple layers on the transciever is still not supported through the API. Bug: webrtc:10075 Change-Id: Id4ad3637b87b68ef6ca7eec69166fee2d9dfa36f Reviewed-on: https://webrtc-review.googlesource.com/c/119780 Reviewed-by: Seth Hampson <shampson@webrtc.org> Reviewed-by: Steve Anton <steveanton@webrtc.org> Commit-Queue: Amit Hilbuch <amithi@webrtc.org> Cr-Commit-Position: refs/heads/master@{#26428}
73 lines
2.3 KiB
C++
73 lines
2.3 KiB
C++
/*
|
|
* Copyright 2018 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 PC_CHANNEL_INTERFACE_H_
|
|
#define PC_CHANNEL_INTERFACE_H_
|
|
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
#include "api/jsep.h"
|
|
#include "api/media_types.h"
|
|
#include "media/base/media_channel.h"
|
|
#include "pc/rtp_transport_internal.h"
|
|
|
|
namespace cricket {
|
|
|
|
class MediaContentDescription;
|
|
|
|
// ChannelInterface contains methods common to voice, video and data channels.
|
|
// As more methods are added to BaseChannel, they should be included in the
|
|
// interface as well.
|
|
class ChannelInterface {
|
|
public:
|
|
virtual cricket::MediaType media_type() const = 0;
|
|
|
|
virtual MediaChannel* media_channel() const = 0;
|
|
|
|
// TODO(deadbeef): This is redundant; remove this.
|
|
virtual const std::string& transport_name() const = 0;
|
|
|
|
virtual const std::string& content_name() const = 0;
|
|
|
|
virtual bool enabled() const = 0;
|
|
|
|
// Enables or disables this channel
|
|
virtual bool Enable(bool enable) = 0;
|
|
|
|
// Used for latency measurements.
|
|
virtual sigslot::signal1<ChannelInterface*>& SignalFirstPacketReceived() = 0;
|
|
|
|
// Channel control
|
|
virtual bool SetLocalContent(const MediaContentDescription* content,
|
|
webrtc::SdpType type,
|
|
std::string* error_desc) = 0;
|
|
virtual bool SetRemoteContent(const MediaContentDescription* content,
|
|
webrtc::SdpType type,
|
|
std::string* error_desc) = 0;
|
|
|
|
// Access to the local and remote streams that were set on the channel.
|
|
virtual const std::vector<StreamParams>& local_streams() const = 0;
|
|
virtual const std::vector<StreamParams>& remote_streams() const = 0;
|
|
|
|
// Set an RTP level transport.
|
|
// Some examples:
|
|
// * An RtpTransport without encryption.
|
|
// * An SrtpTransport for SDES.
|
|
// * A DtlsSrtpTransport for DTLS-SRTP.
|
|
virtual bool SetRtpTransport(webrtc::RtpTransportInternal* rtp_transport) = 0;
|
|
|
|
protected:
|
|
virtual ~ChannelInterface() = default;
|
|
};
|
|
|
|
} // namespace cricket
|
|
|
|
#endif // PC_CHANNEL_INTERFACE_H_
|