Skip to content
This repository was archived by the owner on Apr 25, 2023. It is now read-only.

Commit e03100a

Browse files
committed
Remove debugging statements and some cleanup
1 parent 656ec1b commit e03100a

File tree

1 file changed

+33
-48
lines changed

1 file changed

+33
-48
lines changed

sendrecv/gst-rust/src/main.rs

Lines changed: 33 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,15 @@ extern crate gstreamer as gst;
33
extern crate gstreamer_sdp;
44
extern crate gstreamer_sdp_sys;
55
extern crate gstreamer_webrtc;
6+
extern crate rand;
67
extern crate ws;
78
#[macro_use]
89
extern crate serde_json;
910

1011
use glib::translate::*;
1112
use gst::prelude::*;
1213
use gst::{BinExt, ElementExt};
14+
use rand::Rng;
1315
use std::sync::atomic::{AtomicUsize, Ordering};
1416
use std::sync::Arc;
1517

@@ -61,13 +63,16 @@ fn check_plugins() -> bool {
6163

6264
fn setup_call(app_state: &Arc<AtomicUsize>, out: &ws::Sender) -> AppState {
6365
app_state.store(AppState::PeerConnecting as usize, Ordering::Relaxed);
66+
println!("Setting up signalling server call with 1");
6467
out.send("SESSION 1").unwrap();
6568
return AppState::PeerConnecting;
6669
}
6770

6871
fn register_with_server(app_state: &Arc<AtomicUsize>, out: &ws::Sender) -> AppState {
6972
app_state.store(AppState::ServerRegistering as usize, Ordering::Relaxed);
70-
out.send("HELLO 2").unwrap();
73+
let our_id = rand::thread_rng().gen_range(10, 10_000);
74+
println!("Registering id {} with server", our_id);
75+
out.send(format!("HELLO {}", our_id)).unwrap();
7176
return AppState::ServerRegistering;
7277
}
7378

@@ -109,14 +114,11 @@ fn on_offer_created(
109114
);
110115
let reply = promise.get_reply().unwrap();
111116

112-
println!("{:?}", reply);
113-
114117
let offer = reply
115118
.get_value("offer")
116119
.unwrap()
117120
.get::<gstreamer_webrtc::WebRTCSessionDescription>()
118121
.expect("Invalid argument");
119-
println!("{:?}", offer);
120122
let promise = gst::Promise::new();
121123
webrtc
122124
.emit(
@@ -132,22 +134,19 @@ fn on_negotiation_needed(
132134
values: &[glib::Value],
133135
out: &ws::Sender,
134136
) -> Option<glib::Value> {
135-
println!("on-negotiation-needed {:?}", values);
136137
app_state.store(AppState::PeerCallNegotiating as usize, Ordering::Relaxed);
137138

138139
let webrtc = values[0].get::<gst::Element>().expect("Invalid argument");
139140
let webrtc_clone = webrtc.clone();
140141
let out_clone = out.clone();
141142
let app_state_clone = app_state.clone();
142-
println!("{:?}", webrtc);
143143
let promise = gst::Promise::new_with_change_func(move |promise: &gst::Promise| {
144144
on_offer_created(&app_state_clone, webrtc, promise, &out_clone);
145145
});
146146
let options = gst::Structure::new_empty("options");
147-
let desc = webrtc_clone
147+
webrtc_clone
148148
.emit("create-offer", &[&options.to_value(), &promise.to_value()])
149149
.unwrap();
150-
println!("{:?}", desc);
151150
None
152151
}
153152

@@ -199,7 +198,6 @@ fn on_incoming_decodebin_stream(
199198

200199
let caps = pad.get_current_caps().unwrap();
201200
let name = caps.get_structure(0).unwrap().get_name();
202-
println!("CAPS NAME {:?}", name);
203201
if name.starts_with("video") {
204202
handle_media_stream(&pad, &pipe, "videoconvert", "autovideosink");
205203
} else if name.starts_with("audio") {
@@ -210,17 +208,16 @@ fn on_incoming_decodebin_stream(
210208
None
211209
}
212210

213-
fn on_incoming_stream(values: &[glib::Value], pipeline: &gst::Element) -> Option<glib::Value> {
211+
fn on_incoming_stream(values: &[glib::Value], pipe: &gst::Element) -> Option<glib::Value> {
214212
let webrtc = values[0].get::<gst::Element>().expect("Invalid argument");
215213
let decodebin = gst::ElementFactory::make("decodebin", None).unwrap();
216-
let pipeline_clone = pipeline.clone();
214+
let pipe_clone = pipe.clone();
217215
decodebin
218216
.connect("pad-added", false, move |values| {
219-
on_incoming_decodebin_stream(values, &pipeline_clone)
217+
on_incoming_decodebin_stream(values, &pipe_clone)
220218
})
221219
.unwrap();
222-
pipeline
223-
.clone()
220+
pipe.clone()
224221
.dynamic_cast::<gst::Bin>()
225222
.unwrap()
226223
.add(&decodebin)
@@ -248,13 +245,12 @@ fn send_ice_candidate_message(
248245
"sdpMLineIndex": mlineindex,
249246
}
250247
});
251-
println!("{}", message.to_string());
252248
out.send(message.to_string()).unwrap();
253249
None
254250
}
255251

256252
fn start_pipeline(app_state: &Arc<AtomicUsize>, out: &ws::Sender) -> gst::Element {
257-
let pipeline = gst::parse_launch(
253+
let pipe = gst::parse_launch(
258254
"webrtcbin name=sendrecv
259255
stun-server=stun://stun.l.google.com:19302
260256
videotestsrc pattern=ball ! videoconvert ! queue ! vp8enc deadline=1 ! rtpvp8pay !
@@ -266,16 +262,12 @@ fn start_pipeline(app_state: &Arc<AtomicUsize>, out: &ws::Sender) -> gst::Elemen
266262
",
267263
).unwrap();
268264

269-
let webrtc = pipeline
270-
.clone()
265+
let webrtc = pipe.clone()
271266
.dynamic_cast::<gst::Bin>()
272267
.unwrap()
273268
.get_by_name("sendrecv")
274269
.unwrap();
275270

276-
webrtc.connect_pad_added(move |_, _src_pad| {
277-
println!("connnect pad added");
278-
});
279271
let out_clone = out.clone();
280272
let app_state_clone = app_state.clone();
281273
webrtc
@@ -292,14 +284,15 @@ fn start_pipeline(app_state: &Arc<AtomicUsize>, out: &ws::Sender) -> gst::Elemen
292284
})
293285
.unwrap();
294286

295-
let pipeline_clone = pipeline.clone();
287+
let pipe_clone = pipe.clone();
288+
// TODO: replace with webrtc.connect_pad_added
296289
webrtc
297290
.connect("pad-added", false, move |values| {
298-
on_incoming_stream(values, &pipeline_clone)
291+
on_incoming_stream(values, &pipe_clone)
299292
})
300293
.unwrap();
301-
// TODO pad-added
302-
let ret = pipeline.set_state(gst::State::Playing);
294+
295+
let ret = pipe.set_state(gst::State::Playing);
303296
assert_ne!(ret, gst::StateChangeReturn::Failure);
304297

305298
return webrtc;
@@ -327,33 +320,26 @@ impl ws::Handler for WsClient {
327320

328321
fn on_message(&mut self, msg: ws::Message) -> ws::Result<()> {
329322
// Close the connection when we get a response from the server
330-
println!("Got message: {}", msg);
331323
let msg_text = msg.into_text().unwrap();
332-
let matched = match msg_text.as_ref() {
333-
"HELLO" => {
334-
if self.app_state.load(Ordering::Relaxed) != (AppState::ServerRegistering as usize)
335-
{
336-
// TODO: signal and cleanup
337-
panic!("ERROR: Received HELLO when not registering");
338-
}
339-
self.update_state(AppState::ServerRegistered);
340-
setup_call(&self.app_state, &self.out);
341-
true
324+
if msg_text == "HELLO" {
325+
if self.app_state.load(Ordering::Relaxed) != (AppState::ServerRegistering as usize) {
326+
// TODO: signal and cleanup
327+
panic!("ERROR: Received HELLO when not registering");
342328
}
343-
"SESSION_OK" => {
344-
if self.app_state.load(Ordering::Relaxed) != (AppState::PeerConnecting as usize) {
345-
// TODO: signal and cleanup
346-
panic!("ERROR: Received SESSION_OK when not calling");
347-
}
348-
self.update_state(AppState::PeerConnected);
349-
self.webrtc = Some(start_pipeline(&self.app_state, &self.out));
350-
true
329+
self.update_state(AppState::ServerRegistered);
330+
setup_call(&self.app_state, &self.out);
331+
return Ok(());
332+
}
333+
if msg_text == "SESSION_OK" {
334+
if self.app_state.load(Ordering::Relaxed) != (AppState::PeerConnecting as usize) {
335+
// TODO: signal and cleanup
336+
panic!("ERROR: Received SESSION_OK when not calling");
351337
}
352-
_ => false,
353-
};
354-
if matched {
338+
self.update_state(AppState::PeerConnected);
339+
self.webrtc = Some(start_pipeline(&self.app_state, &self.out));
355340
return Ok(());
356341
}
342+
357343
if msg_text.starts_with("ERROR") {
358344
println!("Got error message! {}", msg_text);
359345
let error = match self.app_state.load(Ordering::Relaxed) {
@@ -402,7 +388,6 @@ impl ws::Handler for WsClient {
402388
self.update_state(AppState::PeerCallStarted);
403389
}
404390
if json_msg.get("ice").is_some() {
405-
println!("ice {:?}", json_msg);
406391
let candidate = json_msg["ice"]["candidate"].as_str().unwrap();
407392
let sdpmlineindex = json_msg["ice"]["sdpMLineIndex"].as_u64().unwrap() as u32;
408393
self.webrtc

0 commit comments

Comments
 (0)