This fixes regressions caused by: https://webrtc-review.googlesource.com/c/src/+/183120 ... which disabled payload type demuxing when multiple video tracks are present, to avoid one channel creating a default track intended for another channel. However, this isn't an issue when not bundling, as each track will be delivered on separate transport. And it's also not an issue when each track uses a distinct set of payload types (e.g., VP8 is mapped to PT 96 in one m= section, and PT 97 in another). This CL addresses both of those cases; PT demuxing is only disabled when two bundled m= sections have overlapping payload types. Bug: chromium:1139052, webrtc:12029 Change-Id: Ied844bffac2a5fac29147c11b56a5f83a95ecb36 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/187560 Commit-Queue: Taylor <deadbeef@webrtc.org> Reviewed-by: Harald Alvestrand <hta@webrtc.org> Cr-Commit-Position: refs/heads/master@{#32419}
75 lines
2.4 KiB
C++
75 lines
2.4 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;
|
|
virtual bool SetPayloadTypeDemuxingEnabled(bool enabled) = 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_
|