-
Notifications
You must be signed in to change notification settings - Fork 423
MSC3291: Muting in VoIP calls #3291
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 4 commits
Commits
Show all changes
22 commits
Select commit
Hold shift + click to select a range
78bfa25
MSC: Muting in VoIP calls
SimonBrandner a3d1abc
Update MSC number
SimonBrandner 57a6330
Missing :
SimonBrandner 7658c4a
Fix MSC number in prefix
SimonBrandner 2130df9
Fix unstable prefix table
SimonBrandner 3a9701d
Reword pottential issues
SimonBrandner d809c3b
Add an Alternatives section
SimonBrandner 67168b3
Remove trailing comma
SimonBrandner ec24d95
Fix a typo
SimonBrandner 0c01908
Fix missing word
SimonBrandner cc8b73a
Link to MSC for holding
SimonBrandner f1ac61f
Update unstable prefixes
SimonBrandner 29e3c6d
Simplify things
SimonBrandner 5372b7f
Be explicit about deps
SimonBrandner 00da3d3
Be clearer about how things work
SimonBrandner fb8f957
Update proposals/3291-muting.md
SimonBrandner c97f650
`disabled` -> `enabled`
SimonBrandner 1aa2cd4
Fix client mention
SimonBrandner dec84a8
Improve explaination
SimonBrandner 56d3541
Be more precise
SimonBrandner 8905378
Fix negation
SimonBrandner 4da6f86
Don't refer to something that doesn't exist
SimonBrandner File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,76 @@ | ||
| # MSC3291: Muting in VoIP calls | ||
|
|
||
| During VoIP calls, it is common for a user to mute their microphone/camera. | ||
| Ideally, the other side should be able to see that the opponent's camera is | ||
| muted, so that it could reflect this in the UI (e.g. show the user's avatar | ||
| instead of their camera feed). We would also want the changes in the mutes state | ||
| to be quick. | ||
|
|
||
| Using pure WebRTC there are two ways to do muting and both have their issues: | ||
|
|
||
| + Disabling the corresponding track - there will be no way to know the track is | ||
| muted from the opponent's perspective. On the other hand, this is almost | ||
| instantaneous. | ||
| + Setting the corresponding track as `recvonly`/`inactive` - this is problematic | ||
| since it leads to re-negotiation which takes time. This could also conflict | ||
| with holding (as defined in | ||
| [MSC2746](https://github.com/matrix-org/matrix-doc/pull/2746)). | ||
|
|
||
| ## Proposal | ||
|
|
||
| This MSC proposes a solution to this by extending the `SDPStreamMetadata` (see | ||
| [MSC3077](https://github.com/matrix-org/matrix-doc/pull/3077)) by the following | ||
| fields: | ||
|
|
||
| + `audio_muted` - a boolean indicating the current audio mute state | ||
| + `video_muted` - a boolean indicating the current video mute state | ||
|
|
||
| This MSC also adds a new call event `m.call.sdp_stream_metadata_changed`, which | ||
SimonBrandner marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| has the common VoIP fields as specified in | ||
| [MSC2746](https://github.com/matrix-org/matrix-doc/pull/2746) (`version`, | ||
| `call_id`, `party_id`) and a `sdp_stream_metadata` object which is the same | ||
| thing as `sdp_stream_metadata` in `m.call.negotiate`, `m.call.invite` and | ||
| `m.call.answer`. The client sends this event the when `sdp_stream_metadata` has | ||
SimonBrandner marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| changed but no negotiation is required (e.g. the user mutes their | ||
| camera/microphone). | ||
|
|
||
| If a client sends an event with some of the fields missing the previous state | ||
| should be assumed. If there is no previous state all tracks should be assumed as | ||
| *not* muted. If a track is missing from a stream that track should be considered | ||
| muted. | ||
|
|
||
| ### Example | ||
|
|
||
| ```JSON | ||
| { | ||
| "type": "m.call.sdp_stream_metadata_changed", | ||
| "room_id": "!roomId", | ||
| "content": { | ||
| "call_id": "1414213562373095", | ||
| "party_id": "1732050807568877", | ||
| "sdp_stream_metadata": { | ||
| "2311546231": { | ||
| "purpose": "m.usermedia", | ||
| "audio_muted:": false, | ||
| "video_muted": true, | ||
| } | ||
| }, | ||
| "version": "1", | ||
SimonBrandner marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| }, | ||
SimonBrandner marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| } | ||
| ``` | ||
|
|
||
| ## Potential issues | ||
|
|
||
| When the user mutes their camera, the client will keep sending black pixels | ||
| which will waste bandwidth. | ||
|
|
||
| ## Security considerations | ||
|
|
||
| None that I can think of. | ||
SimonBrandner marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
|
||
| ## Unstable prefix | ||
|
|
||
| |Release |Development | | ||
| |-------------|------------------------------------------------------| | ||
| |`m.call.mute`|`org.matrix.msc3291.call.sdp_stream_metadata_changed` | | ||
SimonBrandner marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.