mirror of
https://github.com/mollyim/webrtc.git
synced 2025-05-13 13:50:40 +01:00

This is a safe cleanup change since top-level const applied to parameters in function declarations (that are not also definitions) are ignored by the compiler. Hence, such changes do not change the type of the declared functions and are simply no-ops. Bug: webrtc:13610 Change-Id: Ibafb92c45119a6d8bdb6f9109aa8dad6385163a9 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/249086 Reviewed-by: Niels Moller <nisse@webrtc.org> Reviewed-by: Harald Alvestrand <hta@webrtc.org> Commit-Queue: Ali Tofigh <alito@webrtc.org> Cr-Commit-Position: refs/heads/main@{#35802}
135 lines
5.4 KiB
C++
135 lines
5.4 KiB
C++
/*
|
|
* Copyright (c) 2017 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 EXAMPLES_UNITYPLUGIN_SIMPLE_PEER_CONNECTION_H_
|
|
#define EXAMPLES_UNITYPLUGIN_SIMPLE_PEER_CONNECTION_H_
|
|
|
|
#include <map>
|
|
#include <memory>
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
#include "api/data_channel_interface.h"
|
|
#include "api/media_stream_interface.h"
|
|
#include "api/peer_connection_interface.h"
|
|
#include "examples/unityplugin/unity_plugin_apis.h"
|
|
#include "examples/unityplugin/video_observer.h"
|
|
|
|
class SimplePeerConnection : public webrtc::PeerConnectionObserver,
|
|
public webrtc::CreateSessionDescriptionObserver,
|
|
public webrtc::DataChannelObserver,
|
|
public webrtc::AudioTrackSinkInterface {
|
|
public:
|
|
SimplePeerConnection() {}
|
|
~SimplePeerConnection() {}
|
|
|
|
bool InitializePeerConnection(const char** turn_urls,
|
|
int no_of_urls,
|
|
const char* username,
|
|
const char* credential,
|
|
bool is_receiver);
|
|
void DeletePeerConnection();
|
|
void AddStreams(bool audio_only);
|
|
bool CreateDataChannel();
|
|
bool CreateOffer();
|
|
bool CreateAnswer();
|
|
bool SendDataViaDataChannel(const std::string& data);
|
|
void SetAudioControl(bool is_mute, bool is_record);
|
|
|
|
// Register callback functions.
|
|
void RegisterOnLocalI420FrameReady(I420FRAMEREADY_CALLBACK callback);
|
|
void RegisterOnRemoteI420FrameReady(I420FRAMEREADY_CALLBACK callback);
|
|
void RegisterOnLocalDataChannelReady(LOCALDATACHANNELREADY_CALLBACK callback);
|
|
void RegisterOnDataFromDataChannelReady(
|
|
DATAFROMEDATECHANNELREADY_CALLBACK callback);
|
|
void RegisterOnFailure(FAILURE_CALLBACK callback);
|
|
void RegisterOnAudioBusReady(AUDIOBUSREADY_CALLBACK callback);
|
|
void RegisterOnLocalSdpReadytoSend(LOCALSDPREADYTOSEND_CALLBACK callback);
|
|
void RegisterOnIceCandiateReadytoSend(
|
|
ICECANDIDATEREADYTOSEND_CALLBACK callback);
|
|
bool SetRemoteDescription(const char* type, const char* sdp);
|
|
bool AddIceCandidate(const char* sdp,
|
|
int sdp_mlineindex,
|
|
const char* sdp_mid);
|
|
|
|
protected:
|
|
// create a peerconneciton and add the turn servers info to the configuration.
|
|
bool CreatePeerConnection(const char** turn_urls,
|
|
int no_of_urls,
|
|
const char* username,
|
|
const char* credential);
|
|
void CloseDataChannel();
|
|
void SetAudioControl();
|
|
|
|
// PeerConnectionObserver implementation.
|
|
void OnSignalingChange(
|
|
webrtc::PeerConnectionInterface::SignalingState new_state) override {}
|
|
void OnAddStream(
|
|
rtc::scoped_refptr<webrtc::MediaStreamInterface> stream) override;
|
|
void OnRemoveStream(
|
|
rtc::scoped_refptr<webrtc::MediaStreamInterface> stream) override {}
|
|
void OnDataChannel(
|
|
rtc::scoped_refptr<webrtc::DataChannelInterface> channel) override;
|
|
void OnRenegotiationNeeded() override {}
|
|
void OnIceConnectionChange(
|
|
webrtc::PeerConnectionInterface::IceConnectionState new_state) override {}
|
|
void OnIceGatheringChange(
|
|
webrtc::PeerConnectionInterface::IceGatheringState new_state) override {}
|
|
void OnIceCandidate(const webrtc::IceCandidateInterface* candidate) override;
|
|
void OnIceConnectionReceivingChange(bool receiving) override {}
|
|
|
|
// CreateSessionDescriptionObserver implementation.
|
|
void OnSuccess(webrtc::SessionDescriptionInterface* desc) override;
|
|
void OnFailure(webrtc::RTCError error) override;
|
|
|
|
// DataChannelObserver implementation.
|
|
void OnStateChange() override;
|
|
void OnMessage(const webrtc::DataBuffer& buffer) override;
|
|
|
|
// AudioTrackSinkInterface implementation.
|
|
void OnData(const void* audio_data,
|
|
int bits_per_sample,
|
|
int sample_rate,
|
|
size_t number_of_channels,
|
|
size_t number_of_frames) override;
|
|
|
|
// Get remote audio tracks ssrcs.
|
|
std::vector<uint32_t> GetRemoteAudioTrackSsrcs();
|
|
|
|
private:
|
|
rtc::scoped_refptr<webrtc::PeerConnectionInterface> peer_connection_;
|
|
rtc::scoped_refptr<webrtc::DataChannelInterface> data_channel_;
|
|
std::map<std::string, rtc::scoped_refptr<webrtc::MediaStreamInterface> >
|
|
active_streams_;
|
|
|
|
std::unique_ptr<VideoObserver> local_video_observer_;
|
|
std::unique_ptr<VideoObserver> remote_video_observer_;
|
|
|
|
webrtc::MediaStreamInterface* remote_stream_ = nullptr;
|
|
webrtc::PeerConnectionInterface::RTCConfiguration config_;
|
|
|
|
LOCALDATACHANNELREADY_CALLBACK OnLocalDataChannelReady = nullptr;
|
|
DATAFROMEDATECHANNELREADY_CALLBACK OnDataFromDataChannelReady = nullptr;
|
|
FAILURE_CALLBACK OnFailureMessage = nullptr;
|
|
AUDIOBUSREADY_CALLBACK OnAudioReady = nullptr;
|
|
|
|
LOCALSDPREADYTOSEND_CALLBACK OnLocalSdpReady = nullptr;
|
|
ICECANDIDATEREADYTOSEND_CALLBACK OnIceCandiateReady = nullptr;
|
|
|
|
bool is_mute_audio_ = false;
|
|
bool is_record_audio_ = false;
|
|
bool mandatory_receive_ = false;
|
|
|
|
// disallow copy-and-assign
|
|
SimplePeerConnection(const SimplePeerConnection&) = delete;
|
|
SimplePeerConnection& operator=(const SimplePeerConnection&) = delete;
|
|
};
|
|
|
|
#endif // EXAMPLES_UNITYPLUGIN_SIMPLE_PEER_CONNECTION_H_
|