A Mixer Control Package for the Media Control Channel Framework
Extracted elements (29)
Automatic mixing of streams joining a common input is RECOMMENDED because it is conceptually straightforward, increases transport efficiency, and reduces coordination complexity and latency for the AS — eliminating the need for the AS to create intermediate conference mixers for common whisper-announcement and call-coaching scenarios.
Personalized video mixes, floor control protocol support, video overlays, and text insertion are explicitly out of scope. These can be addressed by extensions (foreign namespace elements/attributes) or separate Control Packages that build on this one, keeping the base package focused on core mixing.
This package is built on the Media Control Channel Framework (RFC 6230) and requires support for the framework's common XML schema (Appendix A.1 of RFC 6230), including 'connectionid' and 'conferenceid' attribute definitions. Framework-level error codes (400 invalid XML, 500 not understood) are distinct from package-level response codes.
For the <dual-view> layout, the MS MUST NOT alter the aspect ratio of each stream to fit the region (blanking permitted). For <dual-view-crop>, the MS MUST alter the aspect ratio to fit the region so that no blanking is required.
If a <mscmixer> element contains attributes or elements from another namespace that the MS does not support, the MS MUST send a 428 response. Implementations MAY support foreign namespace attributes and elements.
If the 'conferenceid' attribute in <createconference> specifies a value already used by an existing conference, the MS reports error 405 and MUST NOT create a new conference and MUST NOT affect the existing conference.
If the MS receives a <join> or <modifyjoin> request with a <stream> element specifying a region while the conference video-switching policy is <vas/>, the MS ignores the specified region — conference VAS switching policy takes precedence over per-stream region assignments.
Non-XCON video layouts MUST be specified using an element from a namespace other than the msc-mixer namespace. Similarly, other video-switching policies MUST be specified using an element from a foreign namespace.
The MS MUST dedicate larger and/or more prominent portions of the video layout to participants with higher priority (lower integer value) first when assigning participants to regions after the video-switching policy has been applied.
The MS MUST respond to every request message with a response message. If the MS cannot process a request and execute the mixer operation in whole, the operation is considered failed: the MS MUST ensure no part of the mixer operation is carried out and MUST indicate the failure class with an appropriate 4xx status code.
The MS MUST support <modifyjoin> and <unjoin> for any stream that was established using <join> and that has not already been removed. The MS MUST configure streams as stated by <modifyjoin> child elements.
When the MS receives a <join> request it MUST automatically mix all media streams included in the request with any streams already joined to one of the entities, or it MUST fail the request entirely and MUST NOT join any streams nor change existing streams of the entities.
When the MS sends event notification CONTROL messages to the AS, the AS MUST respond with a Control Framework 200 response.
The <audio-mixing> element configures conference audio mixing policy via a 'type' attribute ("nbest" or "controller") and an 'n' attribute indicating how many loudest participants are included in the mix; a value of 0 means all contributing participants are included.
The <audit> element requests the MS to report its capabilities and the state of currently managed mixers. The corresponding <auditresponse> element returns <capabilities> and <mixers> child elements, with <conferenceaudit> and <joinaudit> describing each managed entity.
The <createconference> element requests creation of a new conference mixer. It carries optional 'conferenceid', 'reserved-talkers', and 'reserved-listeners' attributes, and optional child elements <codecs>, <audio-mixing>, <video-layouts>, <video-switch>, and <subscribe> for full conference configuration at creation time.
The <event> element is the container for MS-initiated notifications sent in CONTROL message bodies; it holds zero or more occurrences of <active-talkers-notify>, <unjoin-notify>, and <conferenceexit> child elements.
The <join> element requests creation of one or more media streams between a connection and a conference, between two connections, or between two conferences, identified by mandatory 'id1' and 'id2' attributes. Optional child <stream> elements control individual streams; if absent, all streams are joined by default.
The <mscmixer> element is the root XML element for all package messages, carrying a mandatory 'version' attribute (fixed at "1.0") and an optional 'desclang' attribute for the language of descriptive text in subordinate elements. Exactly one child element (request, response, or notification) may appear.
The <response> element carries the MS's answer to any request, with a mandatory numeric 'status' code and optional 'reason', 'desclang', 'conferenceid', and 'connectionid' attributes. Response status codes (Section 4.6) are distinct from framework-level response codes.
The <stream> element identifies a media stream within <join>, <modifyjoin>, and <unjoin> requests. It carries mandatory 'media' (MIME type name, e.g., "audio" or "video"), optional 'label' (SDP label), and optional 'direction' ("sendrecv", "sendonly", "recvonly", or "inactive", defaulting to "sendrecv") attributes.
The <unjoin-notify> element notifies the AS that a join has been terminated, with a mandatory 'status' attribute: 0 = explicit <unjoin>, 1 = execution error, 2 = connection or conference terminated. Unrecognized status codes MUST be treated as equivalent to 1.
The <video-layouts> element holds an ordered sequence of <video-layout> child elements, each with a 'min-participants' threshold. The MS automatically activates the appropriate layout based on current participant count, supporting predefined XCON layouts: <single-view>, <dual-view>, <quad-view>, <multiple-3x3>, <multiple-4x4>, <multiple-5x1>, and others.
The <video-switch> element configures how participant video streams are assigned to layout regions. It supports <vas/> (Voice-Activated Switching — loudest speaker gets largest region) and <controller/> (AS-driven, using floor control) policies, with 'interval' and 'activespeakermix' attributes.
The <volume> element configures audio stream volume: 'controltype' selects "automatic" (auto-level to target), "setgain" (fixed dB offset), or "setstate" (mute/unmute). Setting gain or automatic control on a muted stream implicitly unmutes it.
IANA registers a Mixer Control Package Status Code registry for this package's numeric response codes (e.g., 200 success, 405 conference already exists, 410 conference full, 422 unsupported stream configuration, 428 unsupported foreign namespace extension). New codes require Standards Action.
IANA registers the Control Package name "msc-mixer/1.0" in the Media Control Channel Framework Control Packages registry.
IANA registers the MIME media type "application/msc-mixer+xml" for use as the body type in CONTROL and REPORT messages exchanged by this package.
Implementations MUST address the security considerations in Section 7, which inherit the RFC 6230 framework security model. The control channel carries privileged conference management commands, so unauthorized access could allow an attacker to create, modify, or destroy conferences and manipulate media streams.