Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
jami-docs
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Wiki
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
savoirfairelinux
jami-docs
Commits
ee21be4a
Commit
ee21be4a
authored
3 years ago
by
Sébastien Blin
Browse files
Options
Downloads
Patches
Plain Diff
Update 6.1. Conference Protocol
parent
593a5a93
Branches
Branches containing commit
No related tags found
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
technical/6.1.-Conference-Protocol.md
+58
-44
58 additions, 44 deletions
technical/6.1.-Conference-Protocol.md
with
58 additions
and
44 deletions
technical/6.1.-Conference-Protocol.md
+
58
−
44
View file @
ee21be4a
...
@@ -64,6 +64,24 @@ Layout = {
...
@@ -64,6 +64,24 @@ Layout = {
}
}
```
```
Possible keys are:
+
uri = account's uri
+
device = device's id
+
media = media's id
+
active = if the participant is active
+
x = position (x) in the video
+
y = position (y) in the video
+
w = size (width) in the video
+
h = size (height) in the video
+
videoMuted = if the video is muted
+
audioLocalMuted = if the audio is locally muted
+
audioModeratorMuted = if the audio is muted by moderators
+
isModerator = if it's a moderator
+
handRaised = if the hand is raised
In the future,
`isTalking`
will probably be added
### New API
### New API
A new method (in CallManager) and a new signal to respectively get current conference infos and updates are available:
A new method (in CallManager) and a new signal to respectively get current conference infos and updates are available:
...
@@ -87,70 +105,66 @@ So, if a call receives some confInfo, we know that this call is a member of a co
...
@@ -87,70 +105,66 @@ So, if a call receives some confInfo, we know that this call is a member of a co
To summarize,
`Call`
manages received layouts,
`Conference`
-managed sent layouts.
To summarize,
`Call`
manages received layouts,
`Conference`
-managed sent layouts.
##
Moderator actions
##
Changing the state of the conference
Some actions
can
be performed
o
n
the conference
by the moderators such changing the layout or muting a participant.
To
c
h
an
ge the state
o
f
the conference
, participants needs to send orders that the host will handle.
### Implementation
The protocol have the following needs:
#### Change video layout
It should handle orders at multiple levels. In fact for a conference the is 3 levels to define a participant:
To change a layout, the moderator can send a payload with "application/confOrder+json" as type:
+
The account which is the identity of the participant
+
Devices, because each account can join via multiple devices
+
Medias, because there can be multiple videos by devices (eg 1 camera and 1 screen sharing)
```
To save bandwidth, clients should be able to send multiple orders at once.
{
"layout": int
}
```
### General actions
To change a layout, the moderator can send a payload with "application/confOrder+json" as type:
where
**0**
is a grid,
**1**
is one user in big, others in small,
**2**
is one in big
where
**0**
is a grid,
**1**
is one user in big, others in small,
**2**
is one in big
###
# Set participant to active state
###
Account's actions
To set a participant as acti
ve, the moderator
can send a payload with "application/confOrder+json" as type:
For now, there is no action supported, howe
ve
r
,
in
the
future
`
moderator
: true/false`
should be handled to change a moderator.
```
### Device's actions
{
"activeParticipant": "uri"
}
```
#### Mute participant
+
`hangup: true`
to hangup a device from the conference (only moderators)
+
`raisehand: true/false`
to change the raise hand's status. Only doable by the device itself, else dropped.
```
### Media's actions
{
"muteParticipant": "uri",
"muteState": "true"
}
```
#### Hangup participant
+
`muteAudio`
only doable by moderators to mute the audio of a participant
+
`muteVideo`
not supported yet.
+
`active`
to mark the media as active.
```
### Example
{
"hangupParticipant": "uri"
}
```
## Regular participant actio
ns
So, the
`application/confOrder+json`
will contai
ns
:
Some actions can be performed by all participants, including moderators.
```
json
### Implementation
#### Raise hand actions
```
{
{
"handUp": "uri"
"989587609427420"
:
{
"moderator"
:
true
/
false
"devices"
:
{
"40940943604396R64363"
:
{
"hangup"
:
true
,
"raisehand"
:
true
/
false
,
"media"
:{
"3532532662432"
:
{
"muteAudio"
:
true
/
false
,
"muteVideo"
:
true
/
false
,
"active"
:
true
/
false
}
}
}
```
}
}
```
}
{
"layout"
:
0
/
1
/
2
,
"handDown": "uri"
}
}
```
```
### Controlling moderators
### Controlling moderators
There is actually 3 possibilities:
There is actually 3 possibilities:
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment