diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /third_party/libwebrtc/examples/unityplugin/unity_plugin_apis.cc | |
parent | Initial commit. (diff) | |
download | firefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz firefox-26a029d407be480d791972afb5975cf62c9360a6.zip |
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'third_party/libwebrtc/examples/unityplugin/unity_plugin_apis.cc')
-rw-r--r-- | third_party/libwebrtc/examples/unityplugin/unity_plugin_apis.cc | 196 |
1 files changed, 196 insertions, 0 deletions
diff --git a/third_party/libwebrtc/examples/unityplugin/unity_plugin_apis.cc b/third_party/libwebrtc/examples/unityplugin/unity_plugin_apis.cc new file mode 100644 index 0000000000..6e34d7e1e0 --- /dev/null +++ b/third_party/libwebrtc/examples/unityplugin/unity_plugin_apis.cc @@ -0,0 +1,196 @@ +/* + * 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. + */ + +#include "examples/unityplugin/unity_plugin_apis.h" + +#include <map> +#include <string> + +#include "examples/unityplugin/simple_peer_connection.h" + +namespace { +static int g_peer_connection_id = 1; +static std::map<int, rtc::scoped_refptr<SimplePeerConnection>> + g_peer_connection_map; +} // namespace + +int CreatePeerConnection(const char** turn_urls, + const int no_of_urls, + const char* username, + const char* credential, + bool mandatory_receive_video) { + g_peer_connection_map[g_peer_connection_id] = + rtc::make_ref_counted<SimplePeerConnection>(); + + if (!g_peer_connection_map[g_peer_connection_id]->InitializePeerConnection( + turn_urls, no_of_urls, username, credential, mandatory_receive_video)) + return -1; + + return g_peer_connection_id++; +} + +bool ClosePeerConnection(int peer_connection_id) { + if (!g_peer_connection_map.count(peer_connection_id)) + return false; + + g_peer_connection_map[peer_connection_id]->DeletePeerConnection(); + g_peer_connection_map.erase(peer_connection_id); + return true; +} + +bool AddStream(int peer_connection_id, bool audio_only) { + if (!g_peer_connection_map.count(peer_connection_id)) + return false; + + g_peer_connection_map[peer_connection_id]->AddStreams(audio_only); + return true; +} + +bool AddDataChannel(int peer_connection_id) { + if (!g_peer_connection_map.count(peer_connection_id)) + return false; + + return g_peer_connection_map[peer_connection_id]->CreateDataChannel(); +} + +bool CreateOffer(int peer_connection_id) { + if (!g_peer_connection_map.count(peer_connection_id)) + return false; + + return g_peer_connection_map[peer_connection_id]->CreateOffer(); +} + +bool CreateAnswer(int peer_connection_id) { + if (!g_peer_connection_map.count(peer_connection_id)) + return false; + + return g_peer_connection_map[peer_connection_id]->CreateAnswer(); +} + +bool SendDataViaDataChannel(int peer_connection_id, const char* data) { + if (!g_peer_connection_map.count(peer_connection_id)) + return false; + + std::string s(data); + g_peer_connection_map[peer_connection_id]->SendDataViaDataChannel(s); + + return true; +} + +bool SetAudioControl(int peer_connection_id, bool is_mute, bool is_record) { + if (!g_peer_connection_map.count(peer_connection_id)) + return false; + + g_peer_connection_map[peer_connection_id]->SetAudioControl(is_mute, + is_record); + return true; +} + +bool SetRemoteDescription(int peer_connection_id, + const char* type, + const char* sdp) { + if (!g_peer_connection_map.count(peer_connection_id)) + return false; + + return g_peer_connection_map[peer_connection_id]->SetRemoteDescription(type, + sdp); +} + +bool AddIceCandidate(const int peer_connection_id, + const char* candidate, + const int sdp_mlineindex, + const char* sdp_mid) { + if (!g_peer_connection_map.count(peer_connection_id)) + return false; + + return g_peer_connection_map[peer_connection_id]->AddIceCandidate( + candidate, sdp_mlineindex, sdp_mid); +} + +// Register callback functions. +bool RegisterOnLocalI420FrameReady(int peer_connection_id, + I420FRAMEREADY_CALLBACK callback) { + if (!g_peer_connection_map.count(peer_connection_id)) + return false; + + g_peer_connection_map[peer_connection_id]->RegisterOnLocalI420FrameReady( + callback); + return true; +} + +bool RegisterOnRemoteI420FrameReady(int peer_connection_id, + I420FRAMEREADY_CALLBACK callback) { + if (!g_peer_connection_map.count(peer_connection_id)) + return false; + + g_peer_connection_map[peer_connection_id]->RegisterOnRemoteI420FrameReady( + callback); + return true; +} + +bool RegisterOnLocalDataChannelReady(int peer_connection_id, + LOCALDATACHANNELREADY_CALLBACK callback) { + if (!g_peer_connection_map.count(peer_connection_id)) + return false; + + g_peer_connection_map[peer_connection_id]->RegisterOnLocalDataChannelReady( + callback); + return true; +} + +bool RegisterOnDataFromDataChannelReady( + int peer_connection_id, + DATAFROMEDATECHANNELREADY_CALLBACK callback) { + if (!g_peer_connection_map.count(peer_connection_id)) + return false; + + g_peer_connection_map[peer_connection_id]->RegisterOnDataFromDataChannelReady( + callback); + return true; +} + +bool RegisterOnFailure(int peer_connection_id, FAILURE_CALLBACK callback) { + if (!g_peer_connection_map.count(peer_connection_id)) + return false; + + g_peer_connection_map[peer_connection_id]->RegisterOnFailure(callback); + return true; +} + +bool RegisterOnAudioBusReady(int peer_connection_id, + AUDIOBUSREADY_CALLBACK callback) { + if (!g_peer_connection_map.count(peer_connection_id)) + return false; + + g_peer_connection_map[peer_connection_id]->RegisterOnAudioBusReady(callback); + return true; +} + +// Singnaling channel related functions. +bool RegisterOnLocalSdpReadytoSend(int peer_connection_id, + LOCALSDPREADYTOSEND_CALLBACK callback) { + if (!g_peer_connection_map.count(peer_connection_id)) + return false; + + g_peer_connection_map[peer_connection_id]->RegisterOnLocalSdpReadytoSend( + callback); + return true; +} + +bool RegisterOnIceCandidateReadytoSend( + int peer_connection_id, + ICECANDIDATEREADYTOSEND_CALLBACK callback) { + if (!g_peer_connection_map.count(peer_connection_id)) + return false; + + g_peer_connection_map[peer_connection_id]->RegisterOnIceCandidateReadytoSend( + callback); + return true; +} |