
The method for looking up track ID by SSRC was never updated for Unified Plan so it only looked at the first audio section and the first video section. This CL changes the method to look through all audio and video media sections rather than just the first. Bug: chromium:906988 Change-Id: Ie79e6162b2bd24b8ac9e983b5fa7360c96f030da Reviewed-on: https://webrtc-review.googlesource.com/c/112223 Commit-Queue: Steve Anton <steveanton@webrtc.org> Reviewed-by: Henrik Boström <hbos@webrtc.org> Reviewed-by: Seth Hampson <shampson@webrtc.org> Cr-Commit-Position: refs/heads/master@{#25833}
94 lines
3.4 KiB
C++
94 lines
3.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_PEERCONNECTIONINTERNAL_H_
|
|
#define PC_PEERCONNECTIONINTERNAL_H_
|
|
|
|
#include <map>
|
|
#include <memory>
|
|
#include <set>
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
#include "api/peerconnectioninterface.h"
|
|
#include "call/call.h"
|
|
#include "pc/datachannel.h"
|
|
#include "pc/rtptransceiver.h"
|
|
|
|
namespace webrtc {
|
|
|
|
// Internal interface for extra PeerConnection methods.
|
|
class PeerConnectionInternal : public PeerConnectionInterface {
|
|
public:
|
|
virtual rtc::Thread* network_thread() const = 0;
|
|
virtual rtc::Thread* worker_thread() const = 0;
|
|
virtual rtc::Thread* signaling_thread() const = 0;
|
|
|
|
// The SDP session ID as defined by RFC 3264.
|
|
virtual std::string session_id() const = 0;
|
|
|
|
// Returns true if we were the initial offerer.
|
|
virtual bool initial_offerer() const = 0;
|
|
|
|
virtual std::vector<
|
|
rtc::scoped_refptr<RtpTransceiverProxyWithInternal<RtpTransceiver>>>
|
|
GetTransceiversInternal() const = 0;
|
|
|
|
// Get the id used as a media stream track's "id" field from ssrc.
|
|
virtual absl::string_view GetLocalTrackIdBySsrc(uint32_t ssrc) = 0;
|
|
virtual absl::string_view GetRemoteTrackIdBySsrc(uint32_t ssrc) = 0;
|
|
|
|
virtual sigslot::signal1<DataChannel*>& SignalDataChannelCreated() = 0;
|
|
|
|
// Only valid when using deprecated RTP data channels.
|
|
virtual cricket::RtpDataChannel* rtp_data_channel() const = 0;
|
|
|
|
virtual std::vector<rtc::scoped_refptr<DataChannel>> sctp_data_channels()
|
|
const = 0;
|
|
|
|
virtual absl::optional<std::string> sctp_content_name() const = 0;
|
|
virtual absl::optional<std::string> sctp_transport_name() const = 0;
|
|
|
|
virtual cricket::CandidateStatsList GetPooledCandidateStats() const = 0;
|
|
|
|
// Returns a map from MID to transport name for all active media sections.
|
|
virtual std::map<std::string, std::string> GetTransportNamesByMid() const = 0;
|
|
|
|
// Returns a map from transport name to transport stats for all given
|
|
// transport names.
|
|
virtual std::map<std::string, cricket::TransportStats>
|
|
GetTransportStatsByNames(const std::set<std::string>& transport_names) = 0;
|
|
|
|
virtual Call::Stats GetCallStats() = 0;
|
|
|
|
virtual bool GetLocalCertificate(
|
|
const std::string& transport_name,
|
|
rtc::scoped_refptr<rtc::RTCCertificate>* certificate) = 0;
|
|
virtual std::unique_ptr<rtc::SSLCertChain> GetRemoteSSLCertChain(
|
|
const std::string& transport_name) = 0;
|
|
|
|
// Returns true if there was an ICE restart initiated by the remote offer.
|
|
virtual bool IceRestartPending(const std::string& content_name) const = 0;
|
|
|
|
// Returns true if the ICE restart flag above was set, and no ICE restart has
|
|
// occurred yet for this transport (by applying a local description with
|
|
// changed ufrag/password). If the transport has been deleted as a result of
|
|
// bundling, returns false.
|
|
virtual bool NeedsIceRestart(const std::string& content_name) const = 0;
|
|
|
|
// Get SSL role for an arbitrary m= section (handles bundling correctly).
|
|
virtual bool GetSslRole(const std::string& content_name,
|
|
rtc::SSLRole* role) = 0;
|
|
};
|
|
|
|
} // namespace webrtc
|
|
|
|
#endif // PC_PEERCONNECTIONINTERNAL_H_
|