mirror of
https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs.git
synced 2024-11-25 13:01:07 +00:00
webrtc: janus: handle 'destroyed' messages from Janus
Fix this error when the room is destroyed: ERROR webrtc-janusvr-signaller imp.rs:413:gstrswebrtc::janusvr_signaller:👿:Signaller::handle_msg:<GstJanusVRWebRTCSignallerU64@0x55b166a3fe40> Unknown message from server: { "janus": "event", "session_id": 6667171862739941, "sender": 1964690595468240, "plugindata": { "plugin": "janus.plugin.videoroom", "data": { "videoroom": "destroyed", "room": 8320333573294267 } } } Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1481>
This commit is contained in:
parent
9c6a39d692
commit
992f8d9a5d
1 changed files with 23 additions and 0 deletions
|
@ -64,6 +64,15 @@ impl JanusId {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl std::fmt::Display for JanusId {
|
||||||
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||||
|
match self {
|
||||||
|
JanusId::Str(s) => write!(f, "{s}"),
|
||||||
|
JanusId::Num(n) => write!(f, "{n}"),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug, PartialEq, Eq)]
|
#[derive(Serialize, Deserialize, Debug, PartialEq, Eq)]
|
||||||
struct KeepAliveMsg {
|
struct KeepAliveMsg {
|
||||||
janus: String,
|
janus: String,
|
||||||
|
@ -179,6 +188,11 @@ struct RoomEvent {
|
||||||
error: Option<String>,
|
error: Option<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Serialize, Deserialize, Debug)]
|
||||||
|
struct RoomDestroyed {
|
||||||
|
room: JanusId,
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
#[derive(Serialize, Deserialize, Debug)]
|
||||||
struct RoomTalking {
|
struct RoomTalking {
|
||||||
room: JanusId,
|
room: JanusId,
|
||||||
|
@ -192,6 +206,7 @@ struct RoomTalking {
|
||||||
enum VideoRoomData {
|
enum VideoRoomData {
|
||||||
Joined(RoomJoined),
|
Joined(RoomJoined),
|
||||||
Event(RoomEvent),
|
Event(RoomEvent),
|
||||||
|
Destroyed(RoomDestroyed),
|
||||||
Talking(RoomTalking),
|
Talking(RoomTalking),
|
||||||
StoppedTalking(RoomTalking),
|
StoppedTalking(RoomTalking),
|
||||||
}
|
}
|
||||||
|
@ -484,6 +499,14 @@ impl Signaller {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
VideoRoomData::Destroyed(room_destroyed) => {
|
||||||
|
gst::trace!(CAT, imp: self, "Room {} has been destroyed", room_destroyed.room);
|
||||||
|
|
||||||
|
self.raise_error(format!(
|
||||||
|
"room {} has been destroyed",
|
||||||
|
room_destroyed.room
|
||||||
|
));
|
||||||
|
}
|
||||||
VideoRoomData::Talking(talking) => {
|
VideoRoomData::Talking(talking) => {
|
||||||
self.emit_talking(true, talking.id, talking.audio_level);
|
self.emit_talking(true, talking.id, talking.audio_level);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue