Conference protocol

The protocol described in this article is used between the PBX conference object in the PBX and a conference interface. It's purpose is to handle additional calls from a client endpoint to the conference interface. This calls are established to handle more than one video streams from the conference interface. The following facility messages are currently known:

Facility objects

Depending on the value of the type property, different objects are defined. The following types are known:

video_setupVideo setup
video_connVideo connect
video_priorityVideo priority
video_capabilitiesVideo capabilities

Video setup facility

This facility marks the call as a video call, informs about the direction and requests optionally a individual video stream with a given id. The bitrate argument informs about the own quality capability or the quality of a requested stream.

{
    "type": "video_setup",
    "mode": Video Direction Mode,
    "guid": string,
    "id": unsigned,
    "bitrate": unsigned,
}

Video Direction Mode

This is a string defining the mode of the video direction. The following values are defined for this property:

sendonlyThe call sends only video.
recvonlyThe call receives only video.
sendrecvThe call sends and receives video.

Video connect facility

This facility informs about the guid and video stream id and is an optional response to a created video channel or a message to set the requested stream quality.

{
    "type": "video_conn",
    "guid": string,
    "id": unsigned,
    "bitrate": unsigned,
}

Video priority facility

This facility is used to temporarily pause speaker detection. Can be used when desktop sharing is started (on=true) and stopped (on=false).

{
    "type": "video_priority",
    "on": boolean
}

Video capabilities facility

This facility is used to indicate support for "multi-video".
A multi-video-capable endpoint sends this facility when initiating a call ("setup" message).
The multi-video-capable conference sends this facility when accepting a call ("conn" message).

If both ends of a call indicate multi-video-support
The main call connection is established with audio-only. For video separate connections are opened by the endpoint (sendonly and recvonly).
If NOT both ends of a call indicate multi-video-support
The main call connection is established with audio and video channel. E.g. endpoint-to-endpoint call.

{
    "type": "video_capabilities",
    "multivideo": boolean
}

Examples:

Legacy endpoint calls lagacy conference:
EP sends "setup" without video_capabilities(multivideo=true) and A+V offer.
CONF sends "conn" without video_capabilities(multivideo=true) and A+V answer.
Audio and video are transported over main call connection.
Legacy endpoint calls multi-video conference:
EP sends "setup" without video_capabilities(multivideo=true) and A+V offer.
CONF sends "conn" with video_capabilities(multivideo=true) and A+V answer.
Audio and video are transported over main call connection.
Multi-video endpoint calls lagacy conference:
EP sends "setup" with video_capabilities(multivideo=true) and A+V offer.
CONF sends "conn" without video_capabilities(multivideo=true) and A+V answer.
Audio and video are transported over main call connection.
Multi-video endpoint calls multi-video conference:
EP sends "setup" with video_capabilities(multivideo=true) and A+V offer.
CONF sends "conn" with video_capabilities(multivideo=true) and Audio-Only answer.
Audio only is transported over main call connection. EP opens additional video-only connections to CONF.