Skip to content

Commit a4fdaf2

Browse files
committed
Merge branch 'develop' into 26-keyed_mutex-is-null
2 parents c799152 + 761f78b commit a4fdaf2

File tree

4 files changed

+37
-10
lines changed

4 files changed

+37
-10
lines changed

UnityProject/Packages/com.pollenrobotics.gstreamerwebrtc/Runtime/Scripts/BaseSignalling.cs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,10 +58,10 @@ public class BaseSignalling
5858
protected CancellationTokenSource _cts;
5959

6060
private const int MAX_CONNECTION_ATTEMPTS = 100;
61+
private const int PAUSE_BETWEEN_CONNECTION_ATTEMPTS_MS = 5000;
6162

6263
private bool request_stop = false;
6364

64-
6565
public BaseSignalling(string url, string remote_producer_name = "")
6666
{
6767
if (remote_producer_name == "")
@@ -112,7 +112,6 @@ public async void Connect()
112112
else
113113
{
114114
Debug.LogWarning("Failed to connect to WebSocket server. Attempt " + i);
115-
116115
}
117116
}
118117
catch (WebSocketException ex)
@@ -121,7 +120,7 @@ public async void Connect()
121120
if (request_stop)
122121
break;
123122
}
124-
123+
await Task.Delay(PAUSE_BETWEEN_CONNECTION_ATTEMPTS_MS);
125124
}
126125
if (webSocket.State != WebSocketState.Open && !request_stop)
127126
Debug.LogError("Failed to connect to WebSocket server.");
@@ -217,6 +216,14 @@ protected virtual void ProcessMessage(string message)
217216
Close();
218217
}
219218
}
219+
else if (msg.type == MessageType.SessionEnded.ToString())
220+
{
221+
Debug.Log("Session ended");
222+
sessionStatus = SessionStatus.Ended;
223+
if (!request_stop)
224+
event_OnRemotePeerLeft.Invoke();
225+
Close();
226+
}
220227
else
221228
{
222229
Debug.LogWarning("Message not processed " + msg);

UnityProject/Packages/com.pollenrobotics.gstreamerwebrtc/Runtime/Scripts/GStreamerDataPlugin.cs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@ public class GStreamerDataPlugin
119119
public string remote_producer_name = "grpc_webrtc_bridge";
120120

121121
public UnityEvent event_OnPipelineStarted;
122+
public UnityEvent event_OnPipelineStopped;
122123

123124
private static UnityEvent<string> event_OnSDPAnswer;
124125

@@ -129,12 +130,10 @@ public class GStreamerDataPlugin
129130
public static UnityEvent<byte[]> event_OnChannelStateData;
130131
public static UnityEvent<byte[]> event_OnChannelAuditData;
131132

132-
//private bool _started = false;
133133
private bool _autoreconnect = false;
134134

135135
public GStreamerDataPlugin(string ip_address)
136136
{
137-
//_started = false;
138137
_autoreconnect = true;
139138
RegisterICECallback(OnICECallback);
140139
RegisterSDPCallback(OnSDPCallback);
@@ -154,6 +153,7 @@ public GStreamerDataPlugin(string ip_address)
154153
_signalling.event_OnICECandidate.AddListener(OnReceivedICE);
155154

156155
event_OnPipelineStarted = new UnityEvent();
156+
event_OnPipelineStopped = new UnityEvent();
157157

158158
event_OnSDPAnswer = new UnityEvent<string>();
159159
event_OnSDPAnswer.AddListener(SendSDPAnswer);
@@ -175,15 +175,14 @@ public void Connect()
175175

176176
void StartPipeline(string remote_peer_id)
177177
{
178-
Debug.Log("start pipe " + remote_peer_id);
178+
Debug.Log("start data pipe " + remote_peer_id);
179179
CreateDataPipeline();
180180
event_OnPipelineStarted.Invoke();
181-
// _started = true;
182181
}
183182

184183
void StopPipeline()
185184
{
186-
// _started = false;
185+
event_OnPipelineStopped.Invoke();
187186
if (_autoreconnect)
188187
Connect();
189188
}

UnityProject/Packages/com.pollenrobotics.gstreamerwebrtc/Runtime/Scripts/GstreamerPlugin.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ LICENSE file in the root directory of this source tree. */
55
using UnityEngine;
66
using UnityEngine.UI;
77
using System.Threading;
8+
using UnityEngine.Events;
89

910
namespace GstreamerWebRTC
1011
{
@@ -26,6 +27,8 @@ public class GStreamerPlugin : MonoBehaviour
2627
private Thread cleaning_thread = null;
2728
private Thread init_thread = null;
2829

30+
public UnityEvent<bool> event_OnPipelineRenderingRunning = new UnityEvent<bool>();
31+
public UnityEvent<bool> event_OnPipelineDataRunning = new UnityEvent<bool>();
2932

3033
void OnEnable()
3134
{
@@ -70,13 +73,15 @@ protected virtual void InitAV()
7073
leftRawImage.texture = left;
7174
rightRawImage.texture = right;
7275
renderingPlugin.event_OnPipelineStarted.AddListener(PipelineStarted);
76+
renderingPlugin.event_OnPipelineStopped.AddListener(PipelineStopped);
7377
renderingPlugin.Connect();
7478
}
7579

7680
protected virtual void InitData()
7781
{
7882
dataPlugin = new GStreamerDataPlugin(ip_address);
7983
dataPlugin.event_OnPipelineStarted.AddListener(PipelineDataStarted);
84+
dataPlugin.event_OnPipelineStopped.AddListener(PipelineDataStopped);
8085
GStreamerDataPlugin.event_OnChannelServiceOpen.AddListener(OnChannelServiceOpen);
8186
GStreamerDataPlugin.event_OnChannelServiceData.AddListener(OnChannelServiceData);
8287
dataPlugin.Connect();
@@ -85,11 +90,25 @@ protected virtual void InitData()
8590
protected virtual void PipelineStarted()
8691
{
8792
Debug.Log("Pipeline started");
93+
event_OnPipelineRenderingRunning.Invoke(true);
8894
}
8995

9096
protected virtual void PipelineDataStarted()
9197
{
9298
Debug.Log("Pipeline data started");
99+
event_OnPipelineDataRunning.Invoke(true);
100+
}
101+
102+
protected virtual void PipelineStopped()
103+
{
104+
Debug.Log("Pipeline stopped");
105+
event_OnPipelineRenderingRunning.Invoke(false);
106+
}
107+
108+
protected virtual void PipelineDataStopped()
109+
{
110+
Debug.Log("Pipeline data stopped");
111+
event_OnPipelineDataRunning.Invoke(false);
93112
}
94113

95114
protected virtual void OnDisable()

UnityProject/Packages/com.pollenrobotics.gstreamerwebrtc/Runtime/Scripts/GstreamerRenderingPlugin.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ public class GStreamerRenderingPlugin
8181
const uint height = 720;
8282

8383
public UnityEvent event_OnPipelineStarted;
84+
public UnityEvent event_OnPipelineStopped;
8485

8586
CommandBuffer _command = null;
8687

@@ -99,6 +100,7 @@ public GStreamerRenderingPlugin(string ip_address, ref Texture leftTexture, ref
99100
_signalling.event_OnRemotePeerLeft.AddListener(StopPipeline);
100101

101102
event_OnPipelineStarted = new UnityEvent();
103+
event_OnPipelineStopped = new UnityEvent();
102104
_command = new CommandBuffer();
103105

104106
CreateDevice();
@@ -128,17 +130,17 @@ Texture CreateRenderTexture(bool left, ref IntPtr textureNativePtr)
128130

129131
void StartPipeline(string remote_peer_id)
130132
{
131-
Debug.Log("start pipe " + remote_peer_id);
133+
Debug.Log("start rendering pipe " + remote_peer_id);
132134
CreatePipeline(_signallingServerURL, remote_peer_id);
133135
event_OnPipelineStarted.Invoke();
134136
_started = true;
135137
}
136138

137139
void StopPipeline()
138140
{
139-
Debug.Log("Stop");
140141
_started = false;
141142
DestroyPipeline();
143+
event_OnPipelineStopped.Invoke();
142144
if (_autoreconnect)
143145
Connect();
144146
}

0 commit comments

Comments
 (0)