Skip to content

Commit

Permalink
Clarify that sdpMid and sdpMLineIndex are not required in `m.call.can…
Browse files Browse the repository at this point in the history
…didates` (#1742)

* Convert m.call.candidates schema to YAML

Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr>

* Clarify that sdpMid and sdpMLineIndex are not required in `m.call.candidates`

MSC2746, merged in v1.17,
introduced the end-of-candidates candidate,
where only the `candidate` property is set to an empty string.

Besides, the [WebRTC specification](https://www.w3.org/TR/webrtc/)
says that only one of those fields is required in a normal candidate.

Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr>

* Add changelog

Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr>

* Link to the "End-of-candidates" section, and clarify what "empty" means

Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr>

---------

Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr>
  • Loading branch information
zecakeh authored Mar 8, 2024
1 parent 9fdc7ac commit 9068c33
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 45 deletions.
1 change: 1 addition & 0 deletions changelogs/client_server/newsfragments/1742.clarification
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Clarify that `sdpMid` and `sdpMLineIndex` are not required in `m.call.candidates`.
94 changes: 49 additions & 45 deletions data/event-schemas/schema/m.call.candidates.yaml
Original file line number Diff line number Diff line change
@@ -1,45 +1,49 @@
{
"type": "object",
"description": "This event is sent by callers after sending an invite and by the callee after answering. Its purpose is to give the other party additional ICE candidates to try using to communicate.",
"allOf": [{
"$ref": "core-event-schema/room_event.yaml"
}],
"properties": {
"content": {
"type": "object",
"allOf": [{
"$ref": "core-event-schema/call_event.yaml"
}],
"properties": {
"candidates": {
"type": "array",
"description": "Array of objects describing the candidates.",
"items": {
"type": "object",
"title": "Candidate",
"properties": {
"sdpMid": {
"type": "string",
"description": "The SDP media type this candidate is intended for."
},
"sdpMLineIndex": {
"type": "number",
"description": "The index of the SDP 'm' line this candidate is intended for."
},
"candidate": {
"type": "string",
"description": "The SDP 'a' line of the candidate."
}
},
"required": ["candidate", "sdpMLineIndex", "sdpMid"]
}
}
},
"required": ["candidates"]
},
"type": {
"type": "string",
"enum": ["m.call.candidates"]
}
}
}
type: object
description: |-
This event is sent by callers after sending an invite and by the callee after
answering. Its purpose is to give the other party additional ICE candidates to
try using to communicate.
allOf:
- $ref: core-event-schema/room_event.yaml
properties:
content:
type: object
allOf:
- $ref: core-event-schema/call_event.yaml
properties:
candidates:
type: array
description: Array of objects describing the candidates.
items:
type: object
title: Candidate
properties:
sdpMid:
type: string
description: |-
The SDP media type this candidate is intended for.
At least one of `sdpMid` or `sdpMLineIndex` is required, unless
this an end-of-candidates candidate.
sdpMLineIndex:
type: number
description: |-
The index of the SDP 'm' line this candidate is intended for.
At least one of `sdpMid` or `sdpMLineIndex` is required, unless
this an end-of-candidates candidate.
candidate:
type: string
description: |-
The SDP 'a' line of the candidate.
If this is an [end-of-candidates](/client-server-api/#end-of-candidates)
candidate, this is the empty string.
required:
- candidate
required:
- candidates
type:
type: string
enum:
- m.call.candidates

0 comments on commit 9068c33

Please sign in to comment.