diff options
author | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
---|---|---|
committer | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
commit | 4bfd864f10b68b71482b35c818559068ef8d5797 (patch) | |
tree | e3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc6505.txt | |
parent | ea76e11061bda059ae9f9ad130a9895cc85607db (diff) |
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc6505.txt')
-rw-r--r-- | doc/rfc/rfc6505.txt | 4987 |
1 files changed, 4987 insertions, 0 deletions
diff --git a/doc/rfc/rfc6505.txt b/doc/rfc/rfc6505.txt new file mode 100644 index 0000000..229d20b --- /dev/null +++ b/doc/rfc/rfc6505.txt @@ -0,0 +1,4987 @@ + + + + + + +Internet Engineering Task Force (IETF) S. McGlashan +Request for Comments: 6505 Hewlett-Packard +Category: Standards Track T. Melanchuk +ISSN: 2070-1721 Rainwillow + C. Boulton + NS-Technologies + March 2012 + + + A Mixer Control Package for the Media Control Channel Framework + +Abstract + + This document defines a Media Control Channel Framework Package for + managing mixers for media conferences and connections. The package + defines request elements for managing conference mixers, managing + mixers between conferences and/or connections, as well as associated + responses and notifications. The package also defines elements for + auditing package capabilities and mixers. + +Status of This Memo + + This is an Internet Standards Track document. + + This document is a product of the Internet Engineering Task Force + (IETF). It represents the consensus of the IETF community. It has + received public review and has been approved for publication by the + Internet Engineering Steering Group (IESG). Further information on + Internet Standards is available in Section 2 of RFC 5741. + + Information about the current status of this document, any errata, + and how to provide feedback on it may be obtained at + http://www.rfc-editor.org/info/rfc6505. + +Copyright Notice + + Copyright (c) 2012 IETF Trust and the persons identified as the + document authors. All rights reserved. + + This document is subject to BCP 78 and the IETF Trust's Legal + Provisions Relating to IETF Documents + (http://trustee.ietf.org/license-info) in effect on the date of + publication of this document. Please review these documents + carefully, as they describe your rights and restrictions with respect + to this document. Code Components extracted from this document must + include Simplified BSD License text as described in Section 4.e of + the Trust Legal Provisions and are provided without warranty as + described in the Simplified BSD License. + + + +McGlashan, et al. Standards Track [Page 1] + +RFC 6505 Mixer Control Package March 2012 + + + This document may contain material from IETF Documents or IETF + Contributions published or made publicly available before November + 10, 2008. The person(s) controlling the copyright in some of this + material may not have granted the IETF Trust the right to allow + modifications of such material outside the IETF Standards Process. + Without obtaining an adequate license from the person(s) controlling + the copyright in such materials, this document may not be modified + outside the IETF Standards Process, and derivative works of it may + not be created outside the IETF Standards Process, except to format + it for publication as an RFC or to translate it into languages other + than English. + +Table of Contents + + 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 + 2. Conventions and Terminology . . . . . . . . . . . . . . . . . 5 + 3. Control Package Definition . . . . . . . . . . . . . . . . . . 6 + 3.1. Control Package Name . . . . . . . . . . . . . . . . . . . 6 + 3.2. Framework Message Usage . . . . . . . . . . . . . . . . . 6 + 3.3. Common XML Support . . . . . . . . . . . . . . . . . . . . 7 + 3.4. CONTROL Message Body . . . . . . . . . . . . . . . . . . . 7 + 3.5. REPORT Message Body . . . . . . . . . . . . . . . . . . . 7 + 3.6. Audit . . . . . . . . . . . . . . . . . . . . . . . . . . 8 + 3.7. Examples . . . . . . . . . . . . . . . . . . . . . . . . . 8 + 4. Element Definitions . . . . . . . . . . . . . . . . . . . . . 8 + 4.1. <mscmixer> . . . . . . . . . . . . . . . . . . . . . . . . 9 + 4.2. Mixer Elements . . . . . . . . . . . . . . . . . . . . . . 11 + 4.2.1. Conference Elements . . . . . . . . . . . . . . . . . 12 + 4.2.1.1. <createconference> . . . . . . . . . . . . . . . . 12 + 4.2.1.2. <modifyconference> . . . . . . . . . . . . . . . . 14 + 4.2.1.3. <destroyconference> . . . . . . . . . . . . . . . 16 + 4.2.1.4. Conference Configuration . . . . . . . . . . . . . 16 + 4.2.1.4.1. <audio-mixing> . . . . . . . . . . . . . . . . 16 + 4.2.1.4.2. <video-layouts> . . . . . . . . . . . . . . . 17 + 4.2.1.4.2.1. <video-layout> . . . . . . . . . . . . . . 18 + 4.2.1.4.3. <video-switch> . . . . . . . . . . . . . . . . 24 + 4.2.1.4.3.1. Priority Assignment . . . . . . . . . . . 26 + 4.2.1.4.4. <subscribe> . . . . . . . . . . . . . . . . . 27 + 4.2.1.4.4.1. <active-talkers-sub> . . . . . . . . . . . 27 + 4.2.2. Joining Elements . . . . . . . . . . . . . . . . . . . 28 + 4.2.2.1. Joining Model . . . . . . . . . . . . . . . . . . 28 + 4.2.2.2. <join> . . . . . . . . . . . . . . . . . . . . . . 29 + 4.2.2.3. <modifyjoin> . . . . . . . . . . . . . . . . . . . 32 + 4.2.2.4. <unjoin> . . . . . . . . . . . . . . . . . . . . . 34 + 4.2.2.5. <stream> . . . . . . . . . . . . . . . . . . . . . 35 + 4.2.2.5.1. <volume> . . . . . . . . . . . . . . . . . . . 37 + 4.2.2.5.2. <clamp> . . . . . . . . . . . . . . . . . . . 38 + 4.2.2.5.3. <region> . . . . . . . . . . . . . . . . . . . 38 + + + +McGlashan, et al. Standards Track [Page 2] + +RFC 6505 Mixer Control Package March 2012 + + + 4.2.2.5.4. <priority> . . . . . . . . . . . . . . . . . . 38 + 4.2.3. <response> . . . . . . . . . . . . . . . . . . . . . . 38 + 4.2.4. <event> . . . . . . . . . . . . . . . . . . . . . . . 39 + 4.2.4.1. <active-talkers-notify> . . . . . . . . . . . . . 39 + 4.2.4.1.1. <active-talker> . . . . . . . . . . . . . . . 40 + 4.2.4.2. <unjoin-notify> . . . . . . . . . . . . . . . . . 40 + 4.2.4.3. <conferenceexit> . . . . . . . . . . . . . . . . . 41 + 4.3. Audit Elements . . . . . . . . . . . . . . . . . . . . . . 42 + 4.3.1. <audit> . . . . . . . . . . . . . . . . . . . . . . . 43 + 4.3.2. <auditresponse> . . . . . . . . . . . . . . . . . . . 44 + 4.3.2.1. <capabilities> . . . . . . . . . . . . . . . . . . 46 + 4.3.2.2. <mixers> . . . . . . . . . . . . . . . . . . . . . 46 + 4.3.2.2.1. <conferenceaudit> . . . . . . . . . . . . . . 47 + 4.3.2.2.1.1. <participants> . . . . . . . . . . . . . . 47 + 4.3.2.2.1.1.1. <participant> . . . . . . . . . . . . 48 + 4.3.2.2.2. <joinaudit> . . . . . . . . . . . . . . . . . 48 + 4.4. <codecs> . . . . . . . . . . . . . . . . . . . . . . . . . 48 + 4.4.1. <codec> . . . . . . . . . . . . . . . . . . . . . . . 49 + 4.5. <params> . . . . . . . . . . . . . . . . . . . . . . . . . 50 + 4.5.1. <param> . . . . . . . . . . . . . . . . . . . . . . . 50 + 4.6. Response Status Codes . . . . . . . . . . . . . . . . . . 51 + 4.7. Type Definitions . . . . . . . . . . . . . . . . . . . . . 55 + 5. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 56 + 6. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 + 6.1. AS-MS Framework Interaction Examples . . . . . . . . . . . 75 + 6.1.1. Creating a Conference Mixer and Joining a + Participant . . . . . . . . . . . . . . . . . . . . . 75 + 6.1.2. Receiving Active Talker Notifications . . . . . . . . 76 + 6.1.3. Conference Termination . . . . . . . . . . . . . . . . 76 + 6.2. Mixing Examples . . . . . . . . . . . . . . . . . . . . . 76 + 6.2.1. Audio Conferencing . . . . . . . . . . . . . . . . . . 77 + 6.2.2. Bridging Connections . . . . . . . . . . . . . . . . . 79 + 6.2.3. Video Conferencing . . . . . . . . . . . . . . . . . . 80 + 7. Security Considerations . . . . . . . . . . . . . . . . . . . 81 + 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 84 + 8.1. Control Package Registration . . . . . . . . . . . . . . . 84 + 8.2. URN Sub-Namespace Registration . . . . . . . . . . . . . . 84 + 8.3. XML Schema Registration . . . . . . . . . . . . . . . . . 85 + 8.4. MIME Media Type Registration for + 'application/msc-mixer+xml' . . . . . . . . . . . . . . . 85 + 8.5. Mixer Control Package Status Code Registration . . . . . . 86 + 9. Contributors . . . . . . . . . . . . . . . . . . . . . . . . . 86 + 10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 87 + 11. References . . . . . . . . . . . . . . . . . . . . . . . . . . 87 + 11.1. Normative References . . . . . . . . . . . . . . . . . . . 87 + 11.2. Informative References . . . . . . . . . . . . . . . . . . 88 + + + + + +McGlashan, et al. Standards Track [Page 3] + +RFC 6505 Mixer Control Package March 2012 + + +1. Introduction + + The Media Control Channel Framework [RFC6230] provides a generic + approach for establishment and reporting capabilities of remotely + initiated commands. The Control Framework -- an equivalent term for + the Media Control Channel Framework -- utilizes many functions + provided by the Session Initiation Protocol (SIP) [RFC3261] for the + rendezvous and establishment of a reliable channel for control + interactions. The Control Framework also introduces the concept of a + Control Package. A Control Package is an explicit usage of the + Control Framework for a particular interaction set. This + specification defines a package for media conference mixers and media + connection mixers. + + This package defines mixer management elements for creating, + modifying, and deleting conference mixers, elements for joining, + modifying, and unjoining media streams between connections and + conferences (including mixers between connections), as well as + associated responses and notifications. The package also defines + elements for auditing package capabilities and mixers. + + This package has been designed to satisfy media-mixing requirements + documented in the Media Server Control Protocol Requirements document + [RFC5167]; more specifically REQ-MCP-22, REQ-MCP-23, REQ-MCP-24, + REQ-MCP-25, REQ-MCP-26, and REQ-MCP-27. + + The package provides the major conferencing functionality of SIP + media server languages such as MSCML [RFC5022] and MSML [RFC5707]. A + key differentiator is that this package provides such functionality + using the Media Control Channel Framework. + + Out of scope for this mixer package are more advanced functions + including personalized video mixes for conference participants, + support for floor control protocols, as well as support for video + overlays and text insertion. Such functionality can be addressed by + extensions to this package (through addition of foreign elements or + attributes from another namespace) or use of other Control Packages + that could build upon this package. + + The functionality of this package is defined by messages, containing + XML [XML] elements and transported using the Media Control Channel + Framework. The XML elements can be divided into two types: mixer + management elements and audit elements (for auditing package + capabilities and mixers managed by the package). + + The document is organized as follows. Section 3 describes how this + Control Package fulfills the requirements for a Media Control Channel + Framework Control Package. Section 4 describes the syntax and + + + +McGlashan, et al. Standards Track [Page 4] + +RFC 6505 Mixer Control Package March 2012 + + + semantics of defined elements, including mixer management + (Section 4.2) and audit elements (Section 4.3). Section 5 describes + an XML schema for these elements and provides extensibility by + allowing attributes and elements from other namespaces. Section 6 + provides examples of package usage. Section 7 describes important + security considerations for use of this Control Package. Section 8 + provides information on IANA registration of this Control Package, + including its name, XML namespace, and MIME media type. + +2. Conventions and Terminology + + In this document, BCP 14 [RFC2119] defines the key words "MUST", + "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", + "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL". In + addition, BCP 15 indicates requirement levels for compliant + implementations. + + The following additional terms are defined for use in this document: + + Application Server: A SIP [RFC3261] application server (AS) is a + control client that hosts and executes services such as + interactive media and conferencing in an operator's network. An + AS controls the media server (MS), influencing and impacting the + SIP sessions terminating on an MS, which the AS can have + established, for example, using SIP third-party call control. + + Media Server: A media server (MS) processes media streams on behalf + of an AS by offering functionality such as interactive media, + conferencing, and transcoding to the end user. Interactive media + functionality is realized by way of dialogs, which are identified + by a URI and initiated by the application server. + + MS Conference: An MS Conference provides the media-related mixing + resources and services for conferences. In this document, an MS + Conference is often referred to simply as a conference. + + MS Connection: An MS connection represents the termination on a + media server of one or more RTP [RFC3550] sessions that are + associated to a single SIP dialog. A media server receives media + from the output(s) of a connection, and it transmits media on the + input(s) of a connection. + + Media Stream: A media stream on a media server represents a media + flow between either a connection and a conference, between two + connections, or between two conferences. Streams can be audio or + video and can be bidirectional or unidirectional. + + + + + +McGlashan, et al. Standards Track [Page 5] + +RFC 6505 Mixer Control Package March 2012 + + +3. Control Package Definition + + This section fulfills the mandatory requirement for information that + MUST be specified during the definition of a Control Framework + Package, as detailed in Section 8 of [RFC6230]. + +3.1. Control Package Name + + The Control Framework requires a Control Package definition to + specify and register a unique name. The name and version of this + Control Package is "msc-mixer/1.0" (Media Server Control - Mixer - + version 1.0). Its IANA registration is specified in Section 8.1. + + Since this is the initial ("1.0") version of the Control Package, + there are no backwards compatibility issues to address. + +3.2. Framework Message Usage + + The Control Framework requires a Control Package to explicitly detail + the control messages that can be used as well as provide an + indication of directionality between entities. This will include + which role type is allowed to initiate a request type. + + This package specifies CONTROL and response messages in terms of XML + elements defined in Section 4, where the message bodies have the MIME + media type defined in Section 8.4. These elements describe requests, + responses, and notifications, and all are contained within a root + <mscmixer> element (Section 4.1). + + In this package, the MS operates as a Control Server in receiving + requests from, and sending responses to, the AS (operating as a + Control Client). Mixer management requests and responses are defined + in Section 4.2. Audit requests and responses are defined in + Section 4.3. Mixer management and audit responses are carried in a + framework 200 response or REPORT message bodies. This package's + response codes are defined in Section 4.6. + + Note that package responses are different from framework response + codes. Framework error response codes (see Section 7 of [RFC6230]) + are used when the request or event notification is invalid, for + example, a request is invalid XML (400) or not understood (500). + + The MS also operates as a Control Client in sending event + notification to the AS (Control Server). Event notifications + (Section 4.2.4) are carried in CONTROL message bodies. The AS MUST + respond with a Control Framework 200 response. + + + + + +McGlashan, et al. Standards Track [Page 6] + +RFC 6505 Mixer Control Package March 2012 + + +3.3. Common XML Support + + The Control Framework requires a Control Package definition to + specify if the attributes for media dialog or conference references + are required. + + This package requires that the XML schema in Appendix A.1 of + [RFC6230] MUST be supported for media dialogs and conferences. + + The package uses 'connectionid' and 'conferenceid' attributes for + various element definitions (Section 4). The XML schema (Section 5) + imports the definitions of these attributes from the framework + schema. + +3.4. CONTROL Message Body + + The Control Framework requires a Control Package to define the + control body that can be contained within a CONTROL command request + and to indicate the location of detailed syntax definitions and + semantics for the appropriate body types. + + When operating as a Control Server, the MS receives CONTROL messages + with the MIME media type defined in Section 8.4 and a body containing + a <mscmixer> element (Section 4.1) with either a mixer management or + audit request child element. + + The following mixer management request elements are carried in + CONTROL message bodies to MS: <createconference> (Section 4.2.1.1), + <modifyconference> (Section 4.2.1.2), <destroyconference> + (Section 4.2.1.3), <join> (Section 4.2.2.2), <modifyjoin> + (Section 4.2.2.3), and <unjoin> (Section 4.2.2.4) elements. + + The <audit> request element (Section 4.3.1) is also carried in + CONTROL message bodies. + + When operating as a Control Client, the MS sends CONTROL messages + with the MIME media type defined in Section 8.4 and a body containing + a <mscmixer> element (Section 4.1) with a notification <event> child + element (Section 4.2.4). + +3.5. REPORT Message Body + + The Control Framework requires a Control Package definition to define + the REPORT body that can be contained within a REPORT command + request, or to indicate that no report package body is required. + This section indicates the location of detailed syntax definitions + and semantics for the appropriate body types. + + + + +McGlashan, et al. Standards Track [Page 7] + +RFC 6505 Mixer Control Package March 2012 + + + When operating as a Control Server, the MS sends REPORT bodies with + the MIME media type defined in Section 8.4 and a <mscmixer> element + with a response child element. The response element for mixer + management requests is a <response> element (Section 4.2.3). The + response element for an audit request is a <auditresponse> element + (Section 4.3.2). + +3.6. Audit + + The Control Framework encourages Control Packages to specify whether + auditing is available, how it is triggered, as well as the query/ + response formats. + + This Control Package supports auditing of package capabilities and + mixers on the MS. An audit request is carried in a CONTROL message + and an audit response in a REPORT message (or a 200 response to the + CONTROL if it can execute the audit in time). + + The syntax and semantics of audit request and response elements are + defined in Section 4.3. + +3.7. Examples + + The Control Framework recommends Control Packages to provide a range + of message flows that represent common flows using the package and + this framework document. + + This Control Package provides examples of such message flows in + Section 6. + +4. Element Definitions + + This section defines the XML elements for this package. The elements + are defined in the XML namespace specified in Section 8.2. + + The root element is <mscmixer> (Section 4.1). All other XML elements + (requests, responses, and notification elements) are contained within + it. Child elements describe mixer management (Section 4.2) and audit + (Section 4.3) functionality. Response status codes are defined in + Section 4.6 and type definitions in Section 4.7. + + Implementation of this Control Package MUST address the security + considerations described in Section 7. + + Implementation of this Control Package MUST adhere to the syntax and + semantics of XML elements defined in this section and the schema + (Section 5). The XML schema supports extensibility by allowing + attributes and elements from other namespaces. Implementations MAY + + + +McGlashan, et al. Standards Track [Page 8] + +RFC 6505 Mixer Control Package March 2012 + + + support attributes and elements from other (foreign) namespaces. If + an MS implementation receives a <mscmixer> element containing + attributes or elements from another namespace, which it does not + support, the MS sends a 428 response (Section 4.6). + + Extensible attributes and elements are not described in this section. + In all other cases where there is a difference in constraints between + the XML schema and the textual description of elements in this + section, the textual definition takes priority. + + Some elements in this Control Package contain attributes whose value + is descriptive text primarily for diagnostic use. The implementation + can indicated the language used in the descriptive text by means of a + 'desclang' attribute [RFC2277]. The 'desclang' attribute can appear + on the root element as well as selected subordinate elements (see + Section 4.1). The 'desclang' attribute value on the root element + applies to all 'desclang' attributes in subordinate elements unless + the subordinate element has an explicit 'desclang' attribute that + overrides it. + + Usage examples are provided in Section 6. + +4.1. <mscmixer> + + The <mscmixer> element has the following attributes (in addition to + standard XML namespace attributes such as 'xmlns'): + + version: a string specifying the mscmixer package version. The + value is fixed as "1.0" for this version of the package. The + attribute is mandatory. + + desclang: specifies the language used in descriptive text attributes + of subordinate elements (unless the subordinate element provides a + 'desclang' attribute that overrides the value for its descriptive + text attributes). The descriptive text attributes on subordinate + elements include: the 'reason' attribute on <response> + (Section 4.2.3), <unjoin-notify> (Section 4.2.4.2), + <conferenceexit> (Section 4.2.4.3), and <auditresponse> + (Section 4.3.2). A valid value is a language identifier + (Section 4.7.7). The attribute is optional. The default value is + "i-default" (BCP 47 [RFC5646]). + + + + + + + + + + +McGlashan, et al. Standards Track [Page 9] + +RFC 6505 Mixer Control Package March 2012 + + + The <mscmixer> element has the following defined child elements, only + one of which can occur: + + 1. mixer management elements defined in Section 4.2: + + <createconference>: create and configure a new conference mixer. + See Section 4.2.1.1 + + <modifyconference>: modify the configuration of an existing + conference mixer. See Section 4.2.1.2 + + <destroyconference>: destroy an existing conference mixer. See + Section 4.2.1.3 + + <join>: create and configure media streams between connections + and/or conferences (for example, add a participant to a + conference). See Section 4.2.2.2 + + <modifyjoin>: modify the configuration of joined media streams. + See Section 4.2.2.3 + + <unjoin>: delete a media stream (for example, remove a + participant from a conference). See Section 4.2.2.4 + + <response>: response to a mixer request. See Section 4.2.3 + + <event>: mixer or subscription notification. See Section 4.2.4 + + 2. audit elements defined in Section 4.3: + + <audit>: audit package capabilities and managed mixers. See + Section 4.3.1 + + <auditresponse>: response to an audit request. See + Section 4.3.2 + + For example, a request to the MS to create a conference mixer is as + follows: + + <mscmixer version="1.0" xmlns="urn:ietf:params:xml:ns:msc-mixer"> + <createconference/> + </mscmixer> + + And a response from the MS that the conference was successfully + created is as follows: + + + + + + +McGlashan, et al. Standards Track [Page 10] + +RFC 6505 Mixer Control Package March 2012 + + + <mscmixer version="1.0" xmlns="urn:ietf:params:xml:ns:msc-mixer" + desclang="en"> + <response status="200" conferenceid="conference1" + reason="conference created"/> + </mscmixer> + +4.2. Mixer Elements + + This section defines the mixer management XML elements for this + Control Package. These elements are divided into requests, + responses, and notifications. + + Request elements are sent to the MS to request a specific mixer + operation to be executed. The following request elements are + defined: + + <createconference>: create and configure a new a conference mixer. + See Section 4.2.1.1 + + <modifyconference>: modify the configuration of an existing + conference mixer. See Section 4.2.1.2 + + <destroyconference>: destroy an existing conference mixer. See + Section 4.2.1.3 + + <join>: create and configure media streams between connections + and/or conferences (for example, add a participant to a + conference). See Section 4.2.2.2 + + <modifyjoin>: modify the configuration of joined media streams. See + Section 4.2.2.3 + + <unjoin>: delete a media stream (for example, remove a participant + from a conference). See Section 4.2.2.4 + + Responses from the MS describe the status of the requested operation. + Responses are specified in a <response> element (Section 4.2.3) that + includes a mandatory attribute describing the status in terms of a + numeric code. Response status codes are defined in Section 4.6. The + MS MUST respond to a request message with a response message. If the + MS is not able to process the request and carry out the mixer + operation (in whole or in part), then the request has failed: the MS + MUST ensure that no part of the requested mixer operation is carried + out, and the MS MUST indicate the class of failure using an + appropriate 4xx response code. Unless an error response code is + specified for a class of error within this section, implementations + follow Section 4.6 in determining the appropriate status code for the + response. + + + +McGlashan, et al. Standards Track [Page 11] + +RFC 6505 Mixer Control Package March 2012 + + + Notifications are sent from the MS to provide updates on the status + of a mixer operation or subscription. Notifications are specified in + an <event> element (Section 4.2.4). + +4.2.1. Conference Elements + +4.2.1.1. <createconference> + + The <createconference> element is sent to the MS to request creation + of a new conference (multiparty) mixer. + + The <createconference> element has the following attributes: + + conferenceid: string indicating a unique name for the new + conference. If this attribute is not specified, the MS MUST + create a unique name for the conference. The value is used in + subsequent references to the conference (e.g., as conferenceid in + a <response>). The attribute is optional. There is no default + value. + + reserved-talkers: indicates the requested number of guaranteed + speaker slots to be reserved for the conference. A valid value is + a non-negative integer (see Section 4.7.2). The attribute is + optional. The default value is 0. + + reserved-listeners: indicates the requested number of guaranteed + listener slots to be reserved for the conference. A valid value + is a non-negative integer (see Section 4.7.2). The attribute is + optional. The default value is 0. + + The <createconference> element has the following sequence of child + elements: + + <codecs>: an element to configure the codecs supported by the + conference (see Section 4.4). If codecs are specified, then they + impose limitations on media capability when the MS attempts to + join the conference to other entities (see Sections 4.2.2.2 and + 4.2.2.3). The element is optional. + + <audio-mixing>: an element to configure the audio mixing + characteristics of a conference (see Section 4.2.1.4.1). The + element is optional. + + <video-layouts>: an element to configure the video layouts of a + conference (see Section 4.2.1.4.2). The element is optional. + + + + + + +McGlashan, et al. Standards Track [Page 12] + +RFC 6505 Mixer Control Package March 2012 + + + <video-switch>: an element to configure the video switch policy for + the layout of a conference (see Section 4.2.1.4.3). The element + is optional. + + <subscribe>: an element to request subscription to conference + events. (see Section 4.2.1.4.4). The element is optional. + + If the 'conferenceid' attribute specifies a value that is already + used by an existing conference, the MS reports an error (405) and + MUST NOT create a new conference and MUST NOT affect the existing + conference. + + If the MS is unable to configure the conference according to + specified 'reserved-talkers' or 'reserved-listeners' attributes, the + MS reports an error (420) and MUST NOT create the conference. + + If the MS is unable to configure the conference according to a + specified <audio-mixing> element, the MS reports an error (421) and + MUST NOT create the conference. + + If the MS is unable to configure the conference according to a + specified <video-layouts> element, the MS reports an error (423) and + MUST NOT create the conference. + + If the MS is unable to configure the conference according to a + specified <video-switch> element, the MS reports an error (424) and + MUST NOT create the conference. + + If the MS is unable to configure the conference according to a + specified <codecs> element, the MS reports an error (425) and MUST + NOT create the conference. + + When a MS has finished processing a <createconference> request, it + MUST reply with an appropriate <response> element (Section 4.2.3). + + For example, a request to create an audio video conference mixer with + specified codecs, video layout, video switch, and subscription is as + follows: + + + + + + + + + + + + + +McGlashan, et al. Standards Track [Page 13] + +RFC 6505 Mixer Control Package March 2012 + + + <mscmixer version="1.0" xmlns="urn:ietf:params:xml:ns:msc-mixer"> + <createconference conferenceid="conference1" + reserved-talkers="1" reserved-listeners="10"> + <codecs> + <codec name="video"> + <subtype>H264</subtype> + </codec> + <codec name="audio"> + <subtype>PCMA</subtype> + </codec> + </codecs> + <audio-mixing type="nbest"/> + <video-layouts> + <video-layout min-participants="1"><single-view/></video-layout> + <video-layout min-participants="2"><dual-view/></video-layout> + <video-layout min-participants="3"><quad-view/></video-layout> + </video-layouts> + <video-switch interval="5"><vas/></video-switch> + <subscribe> + <active-talkers-sub interval="4"/> + </subscribe> + </createconference> + </mscmixer> + + A response from the MS if the conference was successfully created is + as follows: + + <mscmixer version="1.0" xmlns="urn:ietf:params:xml:ns:msc-mixer"> + <response status="200" conferenceid="conference1"/> + </mscmixer> + + Alternatively, a response if the MS could not create the conference + due to a lack of support for the H264 codec is as follows: + + <mscmixer version="1.0" xmlns="urn:ietf:params:xml:ns:msc-mixer"> + <response status="425" conferenceid="conference1" + reason="H264 codec not supported"/> + </mscmixer> + +4.2.1.2. <modifyconference> + + The <modifyconference> element is sent to the MS to request + modification of an existing conference. + + The <modifyconference> element has the following attribute: + + conferenceid: string indicating the name of the conference to + modify. This attribute is mandatory. + + + +McGlashan, et al. Standards Track [Page 14] + +RFC 6505 Mixer Control Package March 2012 + + + The <modifyconference> element has the following sequence of child + elements (one or more): + + <codecs>: an element to configure the codecs supported by the + conference (see Section 4.4). If codecs are specified, then they + impose limitations in media capability when the MS attempts to + join the conference to other entities (see Sections 4.2.2.2 and + 4.2.2.3). Existing conference participants are unaffected by any + policy change. The element is optional. + + <audio-mixing>: an element to configure the audio mixing + characteristics of a conference (see Section 4.2.1.4.1). The + element is optional. + + <video-layouts>: an element to configure the video layouts of a + conference (see Section 4.2.1.4.2). The element is optional. + + <video-switch>: an element to configure the video switch policy for + the layout of a conference (see Section 4.2.1.4.3). The element + is optional. + + <subscribe>: an element to request subscription to conference + events. (see Section 4.2.1.4.4). The element is optional. + + If the 'conferenceid' attribute specifies the name of a conference + that does not exist, the MS reports an error (406). + + If the MS is unable to configure the conference according to a + specified <audio-mixing> element, the MS reports an error (421) and + MUST NOT modify the conference in any way. + + If the MS is unable to configure the conference according to a + specified <video-layouts> element, the MS reports an error (423) and + MUST NOT modify the conference in any way. + + If the MS is unable to configure the conference according to a + specified <video-switch> element, the MS reports an error (424) and + MUST NOT modify the conference in any way. + + If the MS is unable to configure the conference according to a + specified <codecs> element, the MS reports an error (425) and MUST + NOT modify the conference. + + When a MS has finished processing a <modifyconference> request, it + MUST reply with an appropriate <response> element (Section 4.2.3). + + + + + + +McGlashan, et al. Standards Track [Page 15] + +RFC 6505 Mixer Control Package March 2012 + + +4.2.1.3. <destroyconference> + + The <destroyconference> element is sent to the MS to request + destruction of an existing conference. + + The <destroyconference> element has the following attribute: + + conferenceid: string indicating the name of the conference to + destroy. This attribute is mandatory. + + The <destroyconference> element does not specify any child elements. + + If the 'conferenceid' attribute specifies the name of a conference + that does not exist, the MS reports an error (406). + + When a MS has finished processing a <destroyconference> request, it + MUST reply with an appropriate <response> element (Section 4.2.3). + + Successfully destroying the conference (status code 200) will result + in all connection or conference participants being removed from the + conference mixer, <unjoin-notify> notification events + (Section 4.2.4.2) being sent for each conference participant, and a + <conferenceexit> notification event (Section 4.2.4.3) indicating that + conference has exited. A <response> with any other status code + indicates that the conference mixer still exists and participants are + still joined to the mixer. + +4.2.1.4. Conference Configuration + + The elements in this section are used to establish and modify the + configuration of conferences. + +4.2.1.4.1. <audio-mixing> + + The <audio-mixing> element defines the configuration of the + conference audio mix. + + The <audio-mixing> element has the following attributes: + + type: is a string indicating the audio stream mixing policy. + Defined values are: "nbest" (where the N best (loudest) + participant signals are mixed) and "controller" (where the + contributing participant(s) is/are selected by the controlling AS + via an external floor control protocol). The attribute is + optional. The default value is "nbest". + + + + + + +McGlashan, et al. Standards Track [Page 16] + +RFC 6505 Mixer Control Package March 2012 + + + n: indicates the number of eligible participants included in the + conference audio mix. An eligible participant is a participant + who contributes audio to the conference. Inclusion is based on + having the greatest audio energy. A valid value is a non-negative + integer (see Section 4.7.2). A value of 0 indicates that all + participants contributing audio to the conference are included in + the audio mix. The default value is 0. The element is optional. + + If the 'type' attribute does not have the value "nbest", the MS + ignores the 'n' attribute. + + The <audio-mixing> element has no child elements. + + For example, a fragment where the audio-mixing policy is set to + "nbest" with 3 participants to be included is as follows: + + <audio-mixing type="nbest" n="3"/> + + If the conference had 200 participants of whom 30 contributed audio, + then there would be 30 eligible participants for the audio mix. Of + these, the 3 loudest participants would have their audio included in + the conference. + +4.2.1.4.2. <video-layouts> + + The <video-layouts> element describes the video presentation layout + configuration for participants providing a video input stream to the + conference. This element allows multiple video layouts to be + specified so that the MS automatically changes layout depending on + the number of video-enabled participants. + + The <video-layouts> element has no attributes. + + The <video-layouts> element has the following sequence of child + elements (one or more): + + <video-layout>: element describing a video layout + (Section 4.2.1.4.2.1). + + If the MS does not support video conferencing at all, or does not + support multiple video layouts, or does not support a specific video + layout, the MS reports an 423 error in the response to the request + element containing the <video-layouts> element. + + An MS MAY support more than one <video-layout> element, although only + one layout can be active at a time. A <video-layout> is active if + the number of participants in the conference is equal to or greater + than the value of its 'min-participants' attribute, but less than the + + + +McGlashan, et al. Standards Track [Page 17] + +RFC 6505 Mixer Control Package March 2012 + + + value of the 'min-participants' attribute for any other <video- + layout> element. An MS reports an error (400) if more than one + <video-layout> has the same value for the 'min-participants' + attribute. When the number of regions within the active layout is + greater than the number of participants in the conference, the + display of unassigned regions is implementation-specific. + + The assignment of participant video streams to regions within the + layout is according to the video switch policy specified by the + <video-switch> element (Section 4.2.1.4.3). + + For example, a fragment describing a single layout is as follows: + + <video-layouts> + <video-layout><single-view/></video-layout> + </video-layouts> + + A fragment describing a sequence of layouts is as follows: + + <video-layouts> + <video-layout min-participants="1"><single-view/></video-layout> + <video-layout min-participants="2"><dual-view/></video-layout> + <video-layout min-participants="3"><quad-view/></video-layout> + <video-layout min-participants="5"><multiple-3x3/></video-layout> + </video-layouts> + + When the conference has one participant providing a video input + stream to the conference, then the single-view format is used. When + the conference has two such participants, the dual-view layout is + used. When the conference has three or four participants, the quad- + view layout is used. When the conference has five or more + participants, the multiple-3x3 layout is used. + +4.2.1.4.2.1. <video-layout> + + The <video-layout> element describes a video layout containing one or + more regions in which participant video input streams are displayed. + + The <video-layout> element has the following attribute: + + min-participants: the minimum number of conference participants + needed to allow this layout to be active. A valid value is a + positive integer (see Section 4.7.3). The attribute is optional. + The default value is 1. + + The <video-layout> element has one child element specifying the video + layout. An MS MAY support the predefined video layouts defined in + the conference information data model for centralized conferencing + + + +McGlashan, et al. Standards Track [Page 18] + +RFC 6505 Mixer Control Package March 2012 + + + (XCON) [RFC6501]: <single-view>, <dual-view>, <dual-view-crop>, + <dual-view-2x1>, <dual-view-2x1-crop>, <quad-view>, <multiple-3x3>, + <multiple-4x4>, and <multiple-5x1>. + + The MS MAY support other video layouts. Non-XCON layouts MUST be + specified using an element from a namespace other than the one used + in this specification, for example: + + <video-layout> + <mylayout xmlns='http://example.com/foo'>my-single-view</mylayout> + </video-layout> + + If the MS does not support the specified video layout configuration, + then the MS reports a 423 error (Section 4.6) in the response to the + request element containing the <video-layout> element. + + Each video layout has associated with it one or more regions. The + XCON layouts are associated with the following named regions: + + <single-view/>: layout with one stream in a single region as shown + in Figure 1. + + +-----------+ + | | + | | + | 1 | + | | + | | + +-----------+ + + Figure 1: single-view video layout + + <dual-view/>: layout presenting two streams side-by-side in two + regions as shown in Figure 2. The MS MUST NOT alter the aspect + ratio of each stream to fit the region, and hence the MS might + need to blank out part of each region. + + +-----------+-----------+ + | | | + | | | + | 1 | 2 | + | | | + | | | + +-----------+-----------+ + + Figure 2: dual-view video layout + + + + + +McGlashan, et al. Standards Track [Page 19] + +RFC 6505 Mixer Control Package March 2012 + + + <dual-view-crop/>: layout presenting two streams side-by-side in two + regions as shown in Figure 3. The MS MUST alter the aspect ratio + of each stream to fit its region so that no blanking is required. + + +-----------+-----------+ + | | | + | | | + | 1 | 2 | + | | | + | | | + +-----------+-----------+ + + Figure 3: dual-view-crop video layout + + <dual-view-2x1/>: layout presenting two streams, one above the + other, in two regions as shown in Figure 4. The MS MUST NOT alter + the aspect ratio of each stream to fit its region, and hence the + MS might need to blank out part of each region. + + +-----------+ + | | + | | + | 1 | + | | + | | + +-----------+ + | | + | | + | 2 | + | | + | | + +-----------+ + + Figure 4: dual-view-2x1 video layout + + + + + + + + + + + + + + + + + +McGlashan, et al. Standards Track [Page 20] + +RFC 6505 Mixer Control Package March 2012 + + + <dual-view-2x1-crop/>: layout presenting two streams one above the + other in two regions as shown in Figure 5. The MS MUST alter the + aspect ratio of each stream to fit its region so that no blanking + is required. + + +-----------+ + | | + | | + | 1 | + | | + | | + +-----------+ + | | + | | + | 2 | + | | + | | + +-----------+ + + Figure 5: dual-view-2x1-crop video layout + + <quad-view/>: layout presenting four equal-sized regions in a 2x2 + layout as shown in Figure 6. Typically, the aspect ratio of the + streams is preserved, so blanking is required. + + +-----------+-----------+ + | | | + | | | + | 1 | 2 | + | | | + | | | + +-----------+-----------+ + | | | + | | | + | 3 | 4 | + | | | + | | | + +-----------+-----------+ + + Figure 6: quad-view video layout + + + + + + + + + + + +McGlashan, et al. Standards Track [Page 21] + +RFC 6505 Mixer Control Package March 2012 + + + <multiple-3x3/>: layout presenting nine equal-sized regions in a 3x3 + layout as shown in Figure 7. Typically, the aspect ratio of the + streams is preserved, so blanking is required. + + +-----------+-----------+-----------+ + | | | | + | | | | + | 1 | 2 | 3 | + | | | | + | | | | + +-----------+-----------+-----------+ + | | | | + | | | | + | 4 | 5 | 6 | + | | | | + | | | | + +-----------+-----------+-----------+ + | | | | + | | | | + | 7 | 8 | 9 | + | | | | + | | | | + +-----------+-----------+-----------+ + + Figure 7: multiple-3x3 video layout + + + + + + + + + + + + + + + + + + + + + + + + + + +McGlashan, et al. Standards Track [Page 22] + +RFC 6505 Mixer Control Package March 2012 + + + <multiple-4x4/>: layout presenting 16 equal-sized regions in a 4x4 + layout as shown in Figure 8. Typically, the aspect ratio of the + streams is preserved, so blanking is required. + + +-----------+-----------+-----------+-----------+ + | | | | | + | | | | | + | 1 | 2 | 3 | 4 | + | | | | | + | | | | | + +-----------+-----------+-----------+-----------+ + | | | | | + | | | | | + | 5 | 6 | 7 | 8 | + | | | | | + | | | | | + +-----------+-----------+-----------+-----------+ + | | | | | + | | | | | + | 9 | 10 | 11 | 12 | + | | | | | + | | | | | + +-----------+-----------+-----------+-----------+ + | | | | | + | | | | | + | 13 | 14 | 15 | 16 | + | | | | | + | | | | | + +-----------+-----------+-----------+-----------+ + + Figure 8: multiple-4x4 video layout + + + + + + + + + + + + + + + + + + + + +McGlashan, et al. Standards Track [Page 23] + +RFC 6505 Mixer Control Package March 2012 + + + <multiple-5x1/>: layout presents a 5x1 layout as shown in Figure 9 + where one region will occupy 4/9 of the mixed video stream, while + the others will each occupy 1/9 of the stream. Typically, the + aspect ratio of the streams is preserved, so blanking is required. + + +-----------------------+-----------+ + | | | + | | | + | | 2 | + | | | + | | | + | 1 +-----------+ + | | | + | | | + | | 3 | + | | | + | | | + +-----------+-----------+-----------+ + | | | | + | | | | + | 4 | 5 | 6 | + | | | | + | | | | + +-----------+-----------+-----------+ + + Figure 9: multiple-5x1 video layout + +4.2.1.4.3. <video-switch> + + The <video-switch> element describes the configuration of the + conference policy for how participants' input video streams are + assigned to regions within the active video layout. + + The <video-switch> element has the following child elements defined + (one child occurrence only) to indicate the video-switching policy of + the conference: + + <vas/>: (Voice-Activated Switching) enables automatic display of the + loudest speaker participant that is contributing both audio and + video to the conference mix. Participants who do not provide an + audio stream are not considered for automatic display. If a + participant provides more than one audio stream, then the policy + for inclusion of such a participant in the VAS is implementation- + specific; an MS could select one stream, sum audio streams, or + ignore the participant for VAS consideration. If there is only + one region in the layout, then the loudest speaker is displayed + there. If more than one region is available, then the loudest + speaker is displayed in the largest region (if any), and then in + + + +McGlashan, et al. Standards Track [Page 24] + +RFC 6505 Mixer Control Package March 2012 + + + the first region from the top-left corner of the layout. The MS + assigns the remaining regions based on the priority mechanism + described in Section 4.2.1.4.3.1. + + <controller/>: enables manual control over video switching. The + controller AS determines how the regions are assigned based on an + external floor control policy. The MS receives <join>, + <modifyjoin>, and <unjoin> commands with a <stream> element + (Section 4.2.2.5) indicating the region where the stream is + displayed. If no explicit region is specified, the MS assigns the + region based on the priority mechanism described in + Section 4.2.1.4.3.1. + + An MS MAY support other video-switching policies. Other policies + MUST be specified using an element from a namespace other than the + one used in this specification. For example: + + <video-switch> + <mypolicy xmlns='http://example.com/foo'/> + </video-switch> + + The <video-switch> element has the following attributes: + + interval: specifies the period between video switches as a number of + seconds. In the case of <vas/> policy, a speaker needs to be the + loudest speaker for the interval before the switch takes place. A + valid value is a non-negative integer (see Section 4.7.2). A + value of 0 indicates that switching is applied immediately. The + attribute is optional. The default value is 3 (seconds). + + activespeakermix: indicates whether or not the active (loudest) + speaker participant receives a video stream without themselves + displayed in the case of the <vas/> switching policy. If enabled, + the MS needs to generate two video streams for each conference + mix: one for the active speaker participant without themselves + displayed (details of this video layout are implementation- + specific) and one for other participants (as described in the + <vas/> switching policy above). A valid value is a boolean (see + Section 4.7.1). A value of "true" indicates that a separate video + mix is generated for the active speaker without themselves being + displayed. A value of "false" indicates that all participants + receive the same video mix. The attribute is optional. The + default value is "false". If the 'type' attribute is not set to + <vas/>, the MS ignores this attribute. + + + + + + + +McGlashan, et al. Standards Track [Page 25] + +RFC 6505 Mixer Control Package March 2012 + + + If the MS does not support the specified video-switching policy or + other configuration parameters (including separate active speaker + video mixes), then the MS reports a 424 error (Section 4.6) in the + response to the request element containing the <video-switch> + element. + + If the MS receives a <join> or <modifyjoin> request containing a + <stream> element (Section 4.2.2.5) that specifies a region and the + conference video-switching policy is set to <vas/>, then the MS + ignores the region (i.e., conference-switching policy takes + precedence). + + If the MS receives a <join> or <modifyjoin> request containing a + <stream> element (Section 4.2.2.5) specifying a region that is not + defined for the currently active video layout, the MS MUST NOT report + an error. Even though the participant is not currently visible, the + MS displays the participant if the layout changes to one that defines + the specified region. + + For example, a fragment specifying a <vas/> video-switching policy + with an interval of 2s + + <video-switch interval="2"><vas/></video-switch> + + For example, a fragment specifying a <controller/> video-switching + policy where video switching takes place immediately is as follows: + + <video-switch interval="0"><controller/></video-switch> + +4.2.1.4.3.1. Priority Assignment + + In cases where the video-switching policy does not explicitly + determine the region to which a participant is assigned, the + following priority assignment mechanism applies: + + 1. Each participant has a (positive integer) priority value: the + lower the value, the higher the priority. The priority value is + determined by the <priority> child element (Section 4.2.2.5.4) of + <stream>. If not explicitly specified, the default priority + value is 100. + + 2. The MS uses priority values to assign participants to regions in + the video layout which remain unfilled after application of the + video-switching policy. The MS MUST dedicate larger and/or more + prominent portions of the layout to participants with higher + priority values first (e.g., first, all participants with + priority 1, then those with 2, 3, etc.). + + + + +McGlashan, et al. Standards Track [Page 26] + +RFC 6505 Mixer Control Package March 2012 + + + 3. The policy for displaying participants with the same priority is + implementation-specific. + + The MS applies this priority policy each time the video layout is + changed or updated. It is RECOMMENDED that the MS does not move a + participant from one region to another unless required by the video- + switching policy when an active video layout is updated. + + This model allows the MS to apply default video layouts after + applying the video-switching policy. For example, region 2 is + statically assigned to Bob, so the priority mechanism only applies to + regions 1, 3, 4, etc. + +4.2.1.4.4. <subscribe> + + The <subscribe> element is a container for specifying conference + notification events to which a controlling entity subscribes. + Notifications of conference events are delivered using the <event> + element (see Section 4.2.4). + + The <subscribe> element has no attributes, but has the following + child element: + + <active-talkers-sub>: subscription to active talker events + (Section 4.2.1.4.4.1). The element is optional. + + The MS MUST support a <active-talkers-sub> subscription. It MAY + support other event subscriptions (specified using attributes and + child elements from a foreign namespace). If the MS does not support + a subscription specified in a foreign namespace, it sends a + <response> with a 428 status code (see Section 4.6). + +4.2.1.4.4.1. <active-talkers-sub> + + The <active-talkers-sub> element has the following attribute: + + interval: the minimum amount of time (in seconds) that elapses + before further active talker events can be generated. A valid + value is a non-negative integer (see Section 4.7.2). A value of 0 + suppresses further notifications. The attribute is optional. The + default value is 3 (seconds). + + The <active-talkers-sub> element has no child elements. + + Active talker notifications are delivered in the <active-talkers- + notify> element (Section 4.2.4.1). + + + + + +McGlashan, et al. Standards Track [Page 27] + +RFC 6505 Mixer Control Package March 2012 + + +4.2.2. Joining Elements + + This section contains definitions of the joining model + (Section 4.2.2.1) as well as the <join> (Section 4.2.2.2), + <modifyjoin> (Section 4.2.2.3), <unjoin> (Section 4.2.2.4) and + <stream> (Section 4.2.2.5) elements. + +4.2.2.1. Joining Model + + The <join> operation creates a media stream between a connection and + a conference, between connections, or between conferences. This + section describes the model of conferences and connections and + specifies the behavior for join requests to targets that already have + an associated media stream. + + Conferences support multiple inputs and have resources to mix them + together. A media server conference in essence is a mixer that + combines media streams. A simple audio mixer simply sums its input + audio signals to create a single common output. Conferences, + however, use a more complex algorithm so that participants do not + hear themselves as part of the mix. That algorithm, sometimes called + an "n-minus mix", subtracts each participants input signal from the + summed input signals, creating a unique output for each contributing + participant. Each <join> operation to a conference uses one of the + conference's available inputs and/or outputs, to the maximum number + of supported participants. + + A connection is the termination of one or more RTP sessions on a + media server. It has a single input and output for each media + session established by its SIP dialog. The output of a connection + can feed several different inputs such as both a conference mixer and + a recording of that participant's audio. + + Joining two connections that are not joined to anything else simply + creates a media stream from the outputs(s) of one connection to the + corresponding inputs(s) of the other connection. It is not necessary + to combine media from multiple sources in this case. There are, + however, several common scenarios where combining media from several + sources to create a single input to a connection is needed. + + In the first case, a connection can be receiving media from one + source (for example, a conference), and it is necessary to play an + announcement to the connection so that both the conference audio and + announcement can be heard by the conference participant. This is + sometimes referred to as a "whisper announcement". An alternative to + a whisper announcement is to have the announcement preempt the + conference media. + + + + +McGlashan, et al. Standards Track [Page 28] + +RFC 6505 Mixer Control Package March 2012 + + + Another common case is the call-center coaching scenario where a + supervisor can listen to the conversation between an agent and a + customer, and provide hints to the agent that are not heard by the + customer. + + Both of these cases can be solved by having the controlling AS create + one or more conferences for audio mixing, and then join and unjoin + the media streams as required. A better solution is to have the + media server automatically mix media streams that are requested to be + joined to a common input when only the simple summing of audio + signals as described above is required. This is the case for both + the use cases presented above. + + Automatically mixing streams has several benefits. Conceptually, it + is straightforward and simple, requiring no indirect requests on the + part of the controlling AS. This increases transport efficiency and + reduces the coordination complexity and the latency of the overall + operation. Therefore, it is RECOMMENDED that a media server be able + to automatically mix at least two audio streams where only the simple + summing of signals is required. + + When a media server receives a <join> request, it MUST automatically + mix all of the media streams included in the request with any streams + already joined to one of the entities identified in the request, or + it MUST fail the request and MUST NOT join any of the streams (and + MUST NOT change existing streams of the entities). A controlling AS + uses the <createconference> request for generic conferences where the + complex mixing algorithm is required. + + Specifications that extend this package to handle additional media + types such as text MUST define the semantics of the join operation + when multiple streams are requested to be joined to a single input, + such as that for a connection with a single RTP session per media + type. + +4.2.2.2. <join> + + The <join> element is sent to the MS to request creation of one or + more media streams either between a connection and a conference, + between connections, or between conferences. The two entities to + join are specified by the attributes of <join>. + + Streams can be of any media type and can be bidirectional or + unidirectional. A bidirectional stream is implicitly composed of two + unidirectional streams that can be manipulated independently. The + streams to be established are specified by child <stream> elements + (see Section 4.2.2.5). + + + + +McGlashan, et al. Standards Track [Page 29] + +RFC 6505 Mixer Control Package March 2012 + + + The <join> element has the following attributes: + + id1: an identifier for either a connection or a conference. The + identifier MUST conform to the syntax defined in Appendix A.1 of + [RFC6230]. The attribute is mandatory. + + id2: an identifier for either a connection or a conference. The + identifier MUST conform to the syntax defined in Appendix A.1 of + [RFC6230]. The attribute is mandatory. + + Note: Appendix A.1 of [RFC6230] defines the semantics for a + conference identifier but not its syntax. Media server + implementations need to distinguish between conferences and + connections based upon the values of the 'id1' and 'id2' attributes. + + If id1 or id2 specify a conference identifier and the conference does + not exist on the MS, the MS reports an error (406). If id1 or id2 + specify a connection identifier and the connection does not exist on + the MS, the MS reports an error (412). + + The <join> element has the following child element (zero or more): + + <stream>: an element that both identifies the media streams to join + and defines the way that they are to be joined (see + Section 4.2.2.5). The element is optional. + + If no <stream> elements are specified, then the default is to join + all streams between the entities according to the media configuration + of the connection or conference. + + One or more <stream> elements can be specified so that individual + media streams can be controlled independently. For example, if a + connection supports both audio and video streams, a <stream> element + could be used to indicate that only the audio stream is used in + receive mode. In cases where there are multiple media streams of the + same type for a connection or conference, the configuration MUST be + explicitly specified using <stream> elements. + + Multiple <stream> elements can be specified for precise control over + the media flow in different directions within the same media stream. + One <stream> element can be specified for the receiving media flow + and another element for the sending media flow, where each + independently controls features such as volume (see child element of + <stream> in Section 4.2.2.5). If there is only one <stream> element + for a given media specifying a 'sendonly' or 'recvonly' direction, + then the media flow in the opposite direction is inactive + (established but there's no actual flow of media) unless this leads + to a stream conflict. + + + +McGlashan, et al. Standards Track [Page 30] + +RFC 6505 Mixer Control Package March 2012 + + + If the MS is unable to execute the join as specified in <stream> + because a <stream> element is in conflict with (a) another <stream> + element, (b) specified connection or conference media capabilities + (including supported or available codec information), or (c) an + Session Description Protocol (SDP) label value as part of the + connection-id (see Appendix A.1 of [RFC6230]), then the MS reports an + error (407) and MUST NOT join the entities and MUST NOT change + existing streams of the entities. + + If the MS is unable to execute the join as specified in <stream> + elements because the MS does not support the media stream + configuration, the MS reports an error (422) and MUST NOT join the + entities and MUST NOT change existing streams of the entities. + + If the MS is unable to join an entity to a conference because it is + full, then the MS reports an error (410). + + If the specified entities are already joined, then the MS reports an + error (408). + + If the MS does not support joining two specified connections + together, the MS reports an error (426). + + If the MS does not support joining two specified conferences + together, the MS reports an error (427). + + If the MS is unable to join the specified entities for any other + reason, the MS reports an error (411). + + When the MS has finished processing a <join> request, it MUST reply + with an <response> element (Section 4.2.3). + + For example, a request to join two connections together is as + follows: + + <mscmixer version="1.0" xmlns="urn:ietf:params:xml:ns:msc-mixer"> + <join id1="1536067209:913cd14c" id2="1536067209:913cd14c"/> + </mscmixer> + + The response if the MS doesn't support joining media streams between + connections is as follows: + + <mscmixer version="1.0" xmlns="urn:ietf:params:xml:ns:msc-mixer"> + <response status="426" reason="mixing connections not supported"/> + </mscmixer> + + + + + + +McGlashan, et al. Standards Track [Page 31] + +RFC 6505 Mixer Control Package March 2012 + + +4.2.2.3. <modifyjoin> + + The <modifyjoin> element is sent to the MS to request changes in the + configuration of media stream(s) that were previously established + between a connection and a conference, between two connections, or + between two conferences. + + The <modifyjoin> element has the following attributes: + + id1: an identifier for either a connection or a conference. The + identifier MUST conform to the syntax defined in Appendix A.1 of + [RFC6230]. The attribute is mandatory. + + id2: an identifier for either a connection or a conference. The + identifier MUST conform to the syntax defined in Appendix A.1 of + [RFC6230]. The attribute is mandatory. + + The <modifyjoin> element has the following child elements (one or + more): + + <stream>: an element that both identifies the media streams to + modify and defines the way that each stream is to be configured + from this point forward (see Section 4.2.2.5). + + The MS MUST support <modifyjoin> for any stream that was established + using <join>. + + The MS MUST configure the streams that are included within + <modifyjoin> to that stated by the child elements. + + If the MS is unable to modify the join as specified in <stream> + elements because a <stream> element is in conflict with (a) another + <stream> element, (b) specified connection or conference media + capabilities (including supported or available codec information), or + (c) a SDP label value as part of the connection-id (see Appendix A.1 + of [RFC6230]), then the MS reports an error (407) and MUST NOT modify + the join between the entities and MUST NOT change existing streams of + the entities. + + If the MS is unable to modify the join as specified in <stream> + elements because the MS does not support the media stream + configuration, the MS reports an error (422) and MUST NOT modify the + join between the entities and MUST NOT change existing streams of the + entities. + + If the specified entities are not already joined, then the MS reports + an error (409). + + + + +McGlashan, et al. Standards Track [Page 32] + +RFC 6505 Mixer Control Package March 2012 + + + If the MS is unable to modify the join between the specified entities + for any other reason, the MS reports an error (411). + + When an MS has finished processing a <modifyjoin> request, it MUST + reply with an appropriate <response> element (Section 4.2.3). + + In cases where stream characteristics are controlled independently + for each direction, then a <modifyjoin> request needs to specify a + child element for each direction in order to retain the original + stream directionality. For the example, if a <join> request + establishes independent control for each direction of an audio stream + (see Section 4.2.2.5): + + <mscmixer version="1.0" xmlns="urn:ietf:params:xml:ns:msc-mixer"> + <join id1="1536067209:913cd14c" id2="conference1"> + <stream media="audio" direction="sendonly"> + <volume controltype="setgain" value="-3"/> + </stream> + <stream media="audio" direction="recvonly"> + <volume controltype="setgain" value="+3"/> + </stream> + </join> + </mscmixer> + + then the following <modifyjoin> request + + <mscmixer version="1.0" xmlns="urn:ietf:params:xml:ns:msc-mixer"> + <modifyjoin id1="1536067209:913cd14c" id2="conference1"> + <stream media="audio" direction="sendonly"> + <volume controltype="setgain" value="0"/> + </stream> + </modifyjoin> + </mscmixer> + + would cause, in addition to the modification of the sendonly volume, + the overall stream directionality to change from sendrecv to sendonly + since there is no <stream> element in this <modifyjoin> request for + the recvonly direction. The following would change the sendonly + volume and retain the recvonly stream together with its original + characteristics such as volume: + + + + + + + + + + + +McGlashan, et al. Standards Track [Page 33] + +RFC 6505 Mixer Control Package March 2012 + + + <mscmixer version="1.0" xmlns="urn:ietf:params:xml:ns:msc-mixer"> + <modifyjoin id1="1536067209:913cd14c" id2="conference1"> + <stream media="audio" direction="sendonly"> + <volume controltype="setgain" value="0"/> + </stream> + <stream media="audio" direction="recvonly"/> + </modifyjoin> + </mscmixer> + +4.2.2.4. <unjoin> + + The <unjoin> element is sent to the MS to request removal of + previously established media stream(s) from between a connection and + a conference, between two connections, or between two conferences. + + The <unjoin> element has the following attributes: + + id1: an identifier for either a connection or a conference. The + identifier MUST conform to the syntax defined in Appendix A.1 of + [RFC6230]. The attribute is mandatory. + + id2: an identifier for either a connection or a conference. The + identifier MUST conform to the syntax defined in Section 15.1 of + [RFC6230]. The attribute is mandatory. + + The <unjoin> element has the following child element (zero or more + occurrences): + + <stream>: an element that identifies the media stream(s) to remove + (see Section 4.2.2.5). The element is optional. When not + present, all currently established streams between "id1" and "id2" + are removed. + + The MS MUST support <unjoin> for any stream that was established + using <join> and that has not already been removed by a previous + <unjoin> on the same stream. + + If the MS is unable to terminate the join as specified in <stream> + elements because a <stream> element is in conflict with (a) another + <stream> element, (b) specified connection or conference media + capabilities, or (c) a SDP label value as part of the connection-id + (see Appendix A.1 of [RFC6230]), then the MS reports an error (407) + and MUST NOT terminate the join between the entities and MUST NOT + change existing streams of the entities. + + + + + + + +McGlashan, et al. Standards Track [Page 34] + +RFC 6505 Mixer Control Package March 2012 + + + If the MS is unable to terminate the join as specified in <stream> + elements because the MS does not support the media stream + configuration, the MS reports an error (422) and MUST NOT terminate + the join between the entities and MUST NOT change existing streams of + the entities. + + If the specified entities are not already joined, then the MS reports + an error (409). + + If the MS is unable to terminate the join between the specified + entities for any other reason, the MS reports an error (411). + + When an MS has successfully processed a <unjoin> request, it MUST + reply with a successful <response> element (Section 4.2.3). + +4.2.2.5. <stream> + + <join>, <modifyjoin>, and <unjoin> require the identification and + manipulation of media streams. Media streams represent the flow of + media between a participant connection and a conference, between two + connections, or between two conferences. The <stream> element is + used (as a child to <join>, <modifyjoin>, and <unjoin>) to identify + the media stream(s) for the request and to specify the configuration + of the media stream. + + The <stream> element has the following attributes: + + media: a string indicating the type of media associated with the + stream. A valid value is a MIME type name as defined in Section + 4.2 of [RFC4288]. The following values MUST be used for common + types of media: "audio" for audio media, and "video" for video + media. See [IANA] for registered MIME type names. The attribute + is mandatory. + + label: a string indicating the SDP label associated with a media + stream [RFC4574]. The attribute is optional. + + direction: a string indicating the allowed media flow of the stream + relative to the value of the 'id1' attribute of the parent + element. Defined values are: "sendrecv" (media can be sent and + received), "sendonly" (media can only be sent), "recvonly" (media + can only be received), and "inactive" (stream established but no + media flow). The default value is "sendrecv". The attribute is + optional. + + + + + + + +McGlashan, et al. Standards Track [Page 35] + +RFC 6505 Mixer Control Package March 2012 + + + The <stream> element has the following sequence of child elements: + + <volume>: an element (Section 4.2.2.5.1) to configure the volume or + gain of the media stream. The element is optional. + + <clamp>: an element (Section 4.2.2.5.2) to configure filtering and + removal of tones from the media stream. The element is optional. + + <region>: an element (Section 4.2.2.5.3) to configure a region + within a video layout where the media stream is displayed. The + element is optional. + + <priority>: an element (Section 4.2.2.5.4) to configure priority + associated with the stream in the media mix. The element is + optional. + + In each child element, the media stream affected is indicated by the + value of the 'direction' attribute of the parent element. + + If the 'media' attribute does not have the value of "audio", then the + MS ignores <volume> and <clamp> elements. + + If the 'media' attribute does not have the value of "video", then the + MS ignores a <region> element. + + For example, a request to join a connection to conference in both + directions with volume control is as follows: + + <mscmixer version="1.0" xmlns="urn:ietf:params:xml:ns:msc-mixer"> + <join id1="1536067209:913cd14c" id2="conference1"> + <stream media="audio" direction="sendrecv"> + <volume controltype="setgain" value="-3"/> + </stream> + </join> + </mscmixer> + + where audio flow from the connection (id1) to the conference (id2) + has the volume lowered by 3 dB, and likewise the volume of the audio + flow from the conference to the connection is lowered by 3 dB. + + In this example, the volume is independently controlled for each + direction. + + + + + + + + + +McGlashan, et al. Standards Track [Page 36] + +RFC 6505 Mixer Control Package March 2012 + + + <mscmixer version="1.0" xmlns="urn:ietf:params:xml:ns:msc-mixer"> + <join id1="1536067209:913cd14c" id2="conference1"> + <stream media="audio" direction="sendonly"> + <volume controltype="setgain" value="-3"/> + </stream> + <stream media="audio" direction="recvonly"> + <volume controltype="setgain" value="+3"/> + </stream> + </join> + </mscmixer> + + where audio flow from the connection (id1) to the conference (id2) + has the volume lowered by 3 dB, but the volume of the audio flow from + the conference to the connection is raised by 3 dB. + +4.2.2.5.1. <volume> + + The <volume> element is used to configure the volume of an audio + media stream. It can be set to a specific gain amount, to + automatically adjust the gain to a desired target level, or to mute + the volume. + + The <volume> element has no child elements but has the following + attributes: + + controltype: a string indicating the type of volume control to use + for the stream. Defined values are: "automatic" (the volume will + be adjusted automatically to the level specified by the 'value' + attribute), "setgain" (use the value of the 'value' attribute as a + specific gain measured in dB to apply), and "setstate" (set the + state of the stream to "mute" or "unmute" as specified by the + value of the 'value' attribute). The attribute is mandatory. + + value: a string specifying the amount or state for the volume + control defined by the value of the 'controltype' attribute. The + attribute is optional. There is no default value. + + If the audio media stream is in a muted state, then the MS also + changes automatically the state to unmuted with an "automatic" or + "setgain" volume control. For example, assume an audio stream has + been muted with <volume controltype="setstate" value="mute"/>. If + the gain on the same stream is changed with <volume + controltype="setgain" value="+3"/>, then the volume is increased and + stream state is also changed to unmuted. + + + + + + + +McGlashan, et al. Standards Track [Page 37] + +RFC 6505 Mixer Control Package March 2012 + + +4.2.2.5.2. <clamp> + + The <clamp> element is used to configure whether tones are filtered + and removed from a media stream. + + The <clamp> element has no child elements but has the following + attribute: + + tones: A space-separated list of the tones to remove. The attribute + is optional. The default value is "1 2 3 4 5 6 7 8 9 0 * # A B C + D" (i.e., all DTMF (Dual-Tone Multi-Frequency) tones are removed). + +4.2.2.5.3. <region> + + As described in Section 4.2.1.4.2.1, each <video-layout> is composed + of one or more named regions (or areas) in which video media can be + presented. For example, the XCON layout <dual-view> has two regions + named "1" and "2", respectively. + + The <region> element is used to explicitly specify the name of the + area within a video layout where a video media stream is displayed. + + The <region> element has no attributes, and its content model + specifies the name of the region. + +4.2.2.5.4. <priority> + + The <priority> element is used to explicitly specify the priority of + a participant. The MS uses this priority to determine where the + media stream is displayed within a video layout + (Section 4.2.1.4.3.1). + + The <priority> element has no attributes, and its content model + specifies a positive integer (see Section 4.7.3). The lower the + value, the higher the priority. + +4.2.3. <response> + + Responses to requests are indicated by a <response> element. + + The <response> element has following attributes: + + status: numeric code indicating the response status. Valid values + are defined in Section 4.6. The attribute is mandatory. + + reason: string specifying a reason for the response status. The + attribute is optional. + + + + +McGlashan, et al. Standards Track [Page 38] + +RFC 6505 Mixer Control Package March 2012 + + + desclang: specifies the language used in the value of the 'reason' + attribute. A valid value is a language identifier + (Section 4.7.7). The attribute is optional. If not specified, + the value of the 'desclang' attribute on <mscmixer> (Section 4.1) + applies. + + conferenceid: string identifying the conference (see Appendix A.1 of + [RFC6230]). The attribute is optional. + + connectionid: string identifying the SIP dialog connection (see + Appendix A.1 of [RFC6230]). The attribute is optional. + + For example, a response when a conference was created successfully is + as follows: + + <response code="200"/> + + If conference creation failed due to the requested conference ID + already existing, the response is: + + <response code="405" reason="Conference already exists"/> + +4.2.4. <event> + + When a mixer generates a notification event, the MS sends the event + using an <event> element. + + The <event> element has no attributes, but has the following sequence + of child elements (zero or more instances of each child): + + <active-talkers-notify>: specifies an active talkers notification + (Section 4.2.4.1). + + <unjoin-notify>: notifies that a connection or conference has been + completely unjoined (Section 4.2.4.2). + + <conferenceexit>: notifies that a conference has exited + (Section 4.2.4.3). + +4.2.4.1. <active-talkers-notify> + + The <active-talkers-notify> element describes zero or more speakers + that have been active in a conference during the specified interval + (see Section 4.2.1.4.4.1). + + + + + + + +McGlashan, et al. Standards Track [Page 39] + +RFC 6505 Mixer Control Package March 2012 + + + The <active-talkers-notify> element has the following attribute: + + conferenceid: string indicating the name of the conference from + which the event originated. This attribute is mandatory. + + The <active-talkers-notify> element has the following sequence of + child elements (zero or more occurrences): + + <active-talker>: element describing an active talker + (Section 4.2.4.1.1). + +4.2.4.1.1. <active-talker> + + The <active-talker> element describes an active talker, associated + with either a connection or conference participant in a conference. + + The <active-talker> element has the following attributes: + + connectionid: string indicating the connectionid of the active + talker. This attribute is optional. There is no default value. + + conferenceid: string indicating the conferenceid of the active + talker. This attribute is optional. There is no default value. + + Note that the element does not describe an active talker if both the + 'connectionid' and 'conferenceid' attributes are specified, or if + neither attribute is specified. + + The <active-talker> element has no child elements. + +4.2.4.2. <unjoin-notify> + + The <unjoin-notify> element describes a notification event where a + connection and/or conference have been completely unjoined. + + The <unjoin-notify> element has the following attributes: + + status: a status code indicating why the unjoin occurred. A valid + value is a non-negative integer (see Section 4.7.2). The MS MUST + support the following values: + + 0 indicates the join has been terminated by a <unjoin> request. + + 1 indicates the join terminated due to an execution error. + + 2 indicates that the join terminated because a connection or + conference has terminated. + + + + +McGlashan, et al. Standards Track [Page 40] + +RFC 6505 Mixer Control Package March 2012 + + + All other valid but undefined values are reserved for future use, + where new status codes are assigned using the Standards Action + process defined in [RFC5226]. The AS MUST treat any status code + it does not recognize as being equivalent to 1 (join execution + error). The attribute is mandatory. + + reason: a textual description providing a reason for the status + code, e.g., details about an error. A valid value is a string + (see Section 4.7.4). The attribute is optional. There is no + default value. + + desclang: specifies the language used in the value of the 'reason' + attribute. A valid value is a language identifier + (Section 4.7.7). The attribute is optional. If not specified, + the value of the 'desclang' attribute on <mscmixer> (Section 4.1) + applies. + + id1: an identifier for either a connection or a conference. The + identifier MUST conform to the syntax defined in Appendix A.1 of + [RFC6230]. The attribute is mandatory. + + id2: an identifier for either a connection or a conference. The + identifier MUST conform to the syntax defined in Appendix A.1 of + [RFC6230]. The attribute is mandatory. + + The <unjoin-notify> element has no child elements. + +4.2.4.3. <conferenceexit> + + The <conferenceexit> element indicates that a conference has exited + because it has been terminated or because a error occurred (for + example, a hardware error in the conference mixing unit). This event + MUST be sent by the MS whenever a successfully created conference + exits. + + The <conferenceexit> element has the following attributes: + + conferenceid: string indicating the name of the conference. This + attribute is mandatory. + + status: a status code indicating why the conference exited. A valid + value is a non-negative integer (see Section 4.7.2). The MS MUST + support the following values: + + 0 indicates the conference has been terminated by a + <destroyconference> request. + + 1 indicates the conference terminated due to an execution error. + + + +McGlashan, et al. Standards Track [Page 41] + +RFC 6505 Mixer Control Package March 2012 + + + 2 indicates the conference terminated due to exceeding the + maximum duration for a conference. + + All other valid but undefined values are reserved for future use, + where new status codes are assigned using the Standards Action + process defined in [RFC5226]. The AS MUST treat any status code + it does not recognize as being equivalent to 1 (conference + execution error). The attribute is mandatory. + + reason: a textual description providing a reason for the status + code, e.g., details about an error. A valid value is a string + (see Section 4.7.4). The attribute is optional. There is no + default value. + + desclang: specifies the language used in the value of the 'reason' + attribute. A valid value is a language identifier + (Section 4.7.7). The attribute is optional. If not specified, + the value of the 'desclang' attribute on <mscmixer> (Section 4.1) + applies. + + The <conferenceexit> element has no child elements. + + When a MS sends a <conferenceexit> event, the identifier for the + conference ('conferenceid' attribute) is no longer valid on the MS + and can be reused for another conference. + + For example, the following notification event would be sent from the + MS when the conference with identifier "conference99" exits due to a + successful <destroyconference/>: + + <mscmixer version="1.0" xmlns="urn:ietf:params:xml:ns:msc-mixer"> + <event> + <conferenceexit conferenceid="conference99" + status="0"/> + </event> + </mscmixer> + +4.3. Audit Elements + + The audit elements defined in this section allow the MS to be audited + for package capabilities as well as mixers managed by the package. + Auditing is particularly important for two use cases. First, it + enables discovery of package capabilities supported on an MS before + an AS creates a conference mixer or joins connections and + conferences. The AS can then use this information to create request + elements using supported capabilities and, in the case of codecs, to + negotiate an appropriate SDP for a user agent's connection. Second, + auditing enables discovery of the existence and status of mixers + + + +McGlashan, et al. Standards Track [Page 42] + +RFC 6505 Mixer Control Package March 2012 + + + currently managed by the package on the MS. This could be used when + one AS takes over management of mixers if the AS that created the + mixers fails or is no longer available (see the security + considerations in Section 7). + +4.3.1. <audit> + + The <audit> request element is sent to the MS to request information + about the capabilities of, and mixers currently managed with, this + Control Package. Capabilities include supported conference codecs + and video layouts. Mixer information includes the status of managed + mixers as well as codecs. + + The <audit> element has the following attributes: + + capabilities: indicates whether package capabilities are to be + audited. A valid value is a boolean (see Section 4.7.1). A value + of "true" indicates that capability information is to be reported. + A value of "false" indicates that capability information is not to + be reported. The attribute is optional. The default value is + "true". + + mixers: indicates whether mixers currently managed by the package + are to be audited. A valid value is a boolean (see + Section 4.7.1). A value of "true" indicates that mixer + information is to be reported. A value of "false" indicates that + mixer information is not to be reported. The attribute is + optional. The default value is "true". + + conferenceid: string identifying a specific conference mixer to + audit. It is an error (406) if the 'conferenceid' attribute is + specified and the conference identifier is not valid. The + attribute is optional. There is no default value. + + If the 'mixers' attribute has the value "true" and 'conferenceid' + attribute is specified, then only audit information about the + specified conference mixer is reported. If the 'mixers' attribute + has the value "false", then no mixer audit information is reported + even if a 'conferenceid' attribute is specified. + + The <audit> element has no child elements. + + When the MS receives an <audit> request, it MUST reply with a + <auditresponse> element (Section 4.3.2) that includes a mandatory + attribute describing the status in terms of a numeric code. Response + status codes are defined in Section 4.6. If the request is + successful, the <auditresponse> contains (depending on attribute + values) a <capabilities> element (Section 4.3.2.1) reporting package + + + +McGlashan, et al. Standards Track [Page 43] + +RFC 6505 Mixer Control Package March 2012 + + + capabilities and a <mixers> element (Section 4.3.2.2) reporting + managed mixer information. If the MS is not able to process the + request and carry out the audit operation, the audit request has + failed and the MS MUST indicate the class of failure using an + appropriate 4xx response code. Unless an error response code is + specified for a class of error within this section, implementations + follow Section 4.6 in determining the appropriate status code for the + response. + + For example, a request to audit capabilities and mixers managed by + the package is as follows: + + <mscmixer version="1.0" xmlns="urn:ietf:params:xml:ns:msc-mixer"> + <audit/> + </mscmixer> + + In this example, only capabilities are to be audited: + + <mscmixer version="1.0" xmlns="urn:ietf:params:xml:ns:msc-mixer"> + <audit mixers="false"/> + </mscmixer> + + With this example, only a specific conference mixer is to be audited: + + <mscmixer version="1.0" xmlns="urn:ietf:params:xml:ns:msc-mixer"> + <audit capabilities="false" conferenceid="conf4"/> + </mscmixer> + +4.3.2. <auditresponse> + + The <auditresponse> element describes a response to a <audit> + request. + + The <auditresponse> element has the following attributes: + + status: numeric code indicating the audit response status. The + attribute is mandatory. Valid values are defined in Section 4.6. + + reason: string specifying a reason for the status. The attribute is + optional. + + desclang: specifies the language used in the value of the 'reason' + attribute. A valid value is a language identifier + (Section 4.7.7). The attribute is optional. If not specified, + the value of the 'desclang' attribute on <mscmixer> (Section 4.1) + applies. + + + + + +McGlashan, et al. Standards Track [Page 44] + +RFC 6505 Mixer Control Package March 2012 + + + The <auditresponse> element has the following sequence of child + elements: + + <capabilities>: element describing capabilities of the package (see + Section 4.3.2.1). The element is optional. + + <mixers>: element describing information about managed mixers (see + Section 4.3.2.2). The element is optional. + + For example, a successful response to an <audit> request for + capabilities and mixer information is as follows: + + <mscmixer version="1.0" xmlns="urn:ietf:params:xml:ns:msc-mixer"> + <auditresponse status="200"> + <capabilities> + <codecs> + <codec name="video"> + <subtype>H263</subtype> + </codec> + <codec name="video"> + <subtype>H264</subtype> + </codec> + <codec name="audio"> + <subtype>PCMU</subtype> + </codec> + <codec name="audio"> + <subtype>PCMA</subtype> + </codec> + </codecs> + </capabilities> + <mixers> + <conferenceaudit conferenceid="conf1"> + <codecs> + <codec name="audio"> + <subtype>PCMA</subtype> + </codec> + </codecs> + <participants> + <participant id="1536067209:913cd14c"/> + </participants> + </conferenceaudit> + <joinaudit id1="1536067209:913cd14c" id2="conf1"/> + <joinaudit id1="1636067209:113cd14c" id2="1836067209:313cd14c"/> + <joinaudit id1="1736067209:213cd14c" id2="1936067209:413cd14c"/> + </mixers> + </auditresponse> + </mscmixer> + + + + +McGlashan, et al. Standards Track [Page 45] + +RFC 6505 Mixer Control Package March 2012 + + +4.3.2.1. <capabilities> + + The <capabilities> element provides audit information about package + capabilities. + + The <capabilities> element has no attributes. + + The <capabilities> element has the following sequence of child + elements: + + <codecs>: element (Section 4.4) describing codecs available to the + package. The element is mandatory. + + For example, a fragment describing capabilities is as follows: + + <capabilities> + <codecs> + <codec name="video"> + <subtype>H263</subtype> + </codec> + <codec name="video"> + <subtype>H264</subtype> + </codec> + <codec name="audio"> + <subtype>PCMU</subtype> + </codec> + <codec name="audio"> + <subtype>PCMA</subtype> + </codec> + </codecs> + </capabilities> + +4.3.2.2. <mixers> + + The <mixers> element provides audit information about mixers. + + The <mixers> element has no attributes. + + The <mixers> element has the following sequence of child elements + (zero or more occurrences, any order): + + <conferenceaudit>: audit information for a conference mixer + (Section 4.3.2.2.1). The element is optional. + + <joinaudit>: audit information for a join mixer (Section 4.3.2.2.2). + The element is optional. + + + + + +McGlashan, et al. Standards Track [Page 46] + +RFC 6505 Mixer Control Package March 2012 + + +4.3.2.2.1. <conferenceaudit> + + The <conferenceaudit> element has the following attribute: + + conferenceid: string identifying the conference (see Appendix A.1 of + [RFC6230]). The attribute is mandatory. + + The <conferenceaudit> element has the following sequence of child + elements: + + <codecs> element describing codecs used in the conference. See + Section 4.4. The element is optional. + + <participants> element listing connections or conferences joined to + the conference. See Section 4.3.2.2.1.1. The element is + optional. + + <video-layout> element describing the active video layout for the + conference. See Section 4.2.1.4.2.1. The element is optional. + + For example, a fragment describing a conference that has been created + but has no participants is as follows: + + <conferenceaudit conferenceid="conference1"/> + + A fragment when the same conference has three participants (two + connections and another conference) joined to it is as follows: + + <conferenceaudit conferenceid="conference1"> + <codecs> + <codec name="audio"> + <subtype>PCMU</subtype> + </codec> + </codecs> + <participants> + <participant id="connection1"/> + <participant id="connection2"/> + <participant id="conference2"/> + </participants> + </conferenceaudit> + +4.3.2.2.1.1. <participants> + + The <participants> element is a container for <participant> elements + (Section 4.3.2.2.1.1.1). + + The <participants> element has no attributes, but the following child + elements are defined (zero or more): + + + +McGlashan, et al. Standards Track [Page 47] + +RFC 6505 Mixer Control Package March 2012 + + + <participant>: specifies a participant (Section 4.3.2.2.1.1.1). + +4.3.2.2.1.1.1. <participant> + + The <participant> element describes a participant. + + The <participant> element has the following attribute: + + id: an identifier for either a connection or a conference. The + identifier MUST conform to the syntax defined in Appendix A.1 of + [RFC6230]. The attribute is mandatory. + + The <participant> element has no children. + +4.3.2.2.2. <joinaudit> + + The <joinaudit> element has the following attributes: + + id1: an identifier for either a connection or a conference. The + identifier MUST conform to the syntax defined in Appendix A.1 of + [RFC6230]. The attribute is mandatory. + + id2: an identifier for either a connection or a conference. The + identifier MUST conform to the syntax defined in Appendix A.1 of + [RFC6230]. The attribute is mandatory. + + The <joinaudit> element has no children. + + For example, a fragment describing an audit of two join mixers, one + between connections and the second between conferences, is as + follows: + + <mixers> + <joinaudit id1="1536067209:913cd14" id2="1636067209:413cd14"/> + <joinaudit id1="conference1" id2="conference2"/> + </mixers> + +4.4. <codecs> + + The <codecs> element is a container for one or more codec + definitions. Codec definitions are used by an AS to specify the + codecs allowed for a conference (e.g., when used as a child of + <createconference> or <modifyconference). Codec definitions are used + by an MS to provide audit information about the codecs supported by + an MS and used in specific conferences. + + The <codecs> element has no attributes. + + + + +McGlashan, et al. Standards Track [Page 48] + +RFC 6505 Mixer Control Package March 2012 + + + The <codecs> element has the following sequence of child elements + (zero or more occurrences): + + <codec>: defines a codec and optionally its policy (Section 4.4.1). + The element is optional. + + For example, a fragment describing two codecs is as follows: + + <codecs> + <codec name="audio"> + <subtype>PCMA</subtype> + </codec> + <codec name="video"> + <subtype>H263</subtype> + </codec> + </codecs> + +4.4.1. <codec> + + The <codec> element describes a codec. The element is modeled on the + <codec> element in the XCON conference information data model + ([RFC6501]) and allows additional information (e.g., rate, speed, + etc.) to be specified. + + The <codec> element has the following attribute: + + name: indicates the type name of the codec's media format as defined + in [IANA]. A valid value is a "type-name" as defined in Section + 4.2 of [RFC4288]. The attribute is mandatory. + + The <codec> element has the following sequence of child elements: + + <subtype>: element whose content model describes the subtype of the + codec's media format as defined in [IANA]. A valid value is a + "subtype-name" as defined in Section 4.2 of [RFC4288]. The + element is mandatory. + + <params>: element (Section 4.5) describing additional information + about the codec. This package is agnostic to the names and values + of the codec parameters supported by an implementation. The + element is optional. + + For example, a fragment with a <codec> element describing the H263 + codec is as follows: + + <codec name="video"> + <subtype>H263</subtype> + </codec> + + + +McGlashan, et al. Standards Track [Page 49] + +RFC 6505 Mixer Control Package March 2012 + + + A fragment where the <codec> element describes the H264 video codec + with additional information about the profile level and packetization + mode is as follows: + + <codec name="video"> + <subtype>H264</subtype> + <params> + <param name="profile-level-id">42A01E</param> + <param name="packetization-mode">0</param> + </params> + </codec> + +4.5. <params> + + The <params> element is a container for <param> elements + (Section 4.5.1). + + The <params> element has no attributes, but the following child + elements are defined (zero or more): + + <param>: specifies a parameter name and value (Section 4.5.1). + +4.5.1. <param> + + The <param> element describes a parameter name and value. + + The <param> element has the following attributes: + + name: a string indicating the name of the parameter. The attribute + is mandatory. + + type: specifies a type indicating how the in-line value of the + parameter is to be interpreted. A valid value is a MIME media + type (see Section 4.7.6). The attribute is optional. The default + value is "text/plain". + + encoding: specifies a content-transfer-encoding schema applied to + the in-line value of the parameter on top of the MIME media type + specified with the 'type' attribute. A valid value is a content- + transfer-encoding schema as defined by the "mechanism" token in + Section 6.1 of [RFC2045]. The attribute is optional. There is no + default value. + + The <param> element content model is the value of the parameter. + Note that a value that contains XML characters (e.g., "<") needs to + be escaped following standard XML conventions. + + + + + +McGlashan, et al. Standards Track [Page 50] + +RFC 6505 Mixer Control Package March 2012 + + +4.6. Response Status Codes + + This section describes the response codes in Table 1 for the 'status' + attribute of mixer management <response> (Section 4.2.3) and + <auditresponse> (Section 4.3.2). The MS MUST support the status + response codes defined here. All other valid but undefined values + are reserved for future use, where new status codes are assigned + using the Standards Action process defined in [RFC5226]. The AS MUST + treat any responses it does not recognize as being equivalent to the + x00 response code for all classes. For example, if an AS receives an + unrecognized response code of 499, it can safely assume that there + was something wrong with its request and treat the response as if it + had received a 400 (Syntax error) response code. + + 4xx responses are definite failure responses from a particular MS. + The 'reason' attribute in the response SHOULD identify the failure in + more detail, for example, "Mandatory attribute missing: id2 join + element" for a 400 (Syntax error) response code. + + The AS SHOULD NOT retry the same request without modification (for + example, correcting a syntax error or changing the conferenceid to + use one available on the MS). However, the same request to a + different MS might be successful, for example, if another MS supports + a capability required in the request. + + 4xx failure responses can be grouped into three classes: failure due + to a syntax error in the request (400); failure due to an error + executing the request on the MS (405-419); and failure due to the + request requiring a capability not supported by the MS (420-435). + + In cases where more than one request code could be reported for a + failure, the MS SHOULD use the most specific error code of the + failure class for the detected error. For example, if the MS detects + that the conference identifier in the request is invalid, then it + uses a 406 status code. However, if the MS merely detects that an + execution error occurred, then 419 is used. + + + + + + + + + + + + + + + +McGlashan, et al. Standards Track [Page 51] + +RFC 6505 Mixer Control Package March 2012 + + + +-------+---------------+----------------------+--------------------+ + | Code | Summary | Description | Informational: AS | + | | | | Possible Recovery | + | | | | Action | + +-------+---------------+----------------------+--------------------+ + | 200 | OK | request has | | + | | | succeeded. | | + | | | | | + | 400 | Syntax error | request is | Change the request | + | | | syntactically | so that it is | + | | | invalid: it is not | syntactically | + | | | valid with respect | valid. | + | | | to the XML schema | | + | | | specified in | | + | | | Section 5 or it | | + | | | violates a | | + | | | co-occurrence | | + | | | constraint for a | | + | | | request element | | + | | | defined in | | + | | | Section 4. | | + | | | | | + | 405 | Conference | request uses an | Send an <audit> | + | | already | identifier to create | request | + | | exists | a new conference | (Section 4.3.1) | + | | | (Section 4.2.1.1) | requesting the | + | | | that is already used | list of conference | + | | | by another | mixer identifiers | + | | | conference on the | already used by | + | | | MS. | the MS and then | + | | | | use a conference | + | | | | identifier that is | + | | | | not listed. | + | | | | | + | 406 | Conference | request uses an | Send an <audit> | + | | does not | identifier for a | request | + | | exist | conference that does | (Section 4.3.1) | + | | | not exist on the MS. | requesting the | + | | | | list of conference | + | | | | mixer identifiers | + | | | | used by the MS and | + | | | | then use a | + | | | | conference | + | | | | identifier that is | + | | | | listed. | + | | | | | + + + + + +McGlashan, et al. Standards Track [Page 52] + +RFC 6505 Mixer Control Package March 2012 + + + | 407 | Incompatible | request specifies a | Change the media | + | | stream | media stream | stream | + | | configuration | configuration that | configuration to | + | | | is in conflict with | match the | + | | | itself, the | capabilities of | + | | | connection, or | the connection or | + | | | conference | conference. | + | | | capabilities (see | | + | | | Section 4.2.2.2). | | + | | | | | + | 408 | Joining | request attempts to | Send an <audit> | + | | entities | create a join mixer | request | + | | already | (Section 4.2.2.2) | (Section 4.3.1) | + | | joined | where the entities | requesting the | + | | | are already joined. | list of join | + | | | | mixers on the MS | + | | | | and then use | + | | | | entities that are | + | | | | not listed. | + | | | | | + | 409 | Joining | request attempts to | Send an <audit> | + | | entities not | manipulate a join | request | + | | joined | mixer where the | (Section 4.3.1) | + | | | entities are not | requesting the | + | | | joined. | list of join | + | | | | mixers on the MS | + | | | | and then use | + | | | | entities that are | + | | | | listed. | + | | | | | + | 410 | Unable to | request attempts to | | + | | join - | join a participant | | + | | conference | to a conference | | + | | full | (Section 4.2.2.2) | | + | | | but the conference | | + | | | is already full. | | + | | | | | + | 411 | Unable to | request attempts to | | + | | perform join | create, modify, or | | + | | mixer | delete a join | | + | | operation | between entities but | | + | | | fails. | | + | | | | | + | 412 | Connection | request uses an | | + | | does not | identifier for a | | + | | exist | connection that does | | + | | | not exist on the MS. | | + | | | | | + + + +McGlashan, et al. Standards Track [Page 53] + +RFC 6505 Mixer Control Package March 2012 + + + | 419 | Other | requested operation | | + | | execution | cannot be executed | | + | | error | by the MS. | | + | | | | | + | 420 | Conference | request to create a | | + | | reservation | new conference | | + | | failed | (Section 4.2.1.1) | | + | | | failed due to | | + | | | unsupported | | + | | | reservation of | | + | | | talkers or | | + | | | listeners. | | + | | | | | + | 421 | Unable to | request to create or | | + | | configure | modify a conference | | + | | audio mix | failed due to | | + | | | unsupported audio | | + | | | mix. | | + | | | | | + | 422 | Unsupported | request contains one | | + | | media stream | or more <stream> | | + | | configuration | elements | | + | | | (Section 4.2.2.5) | | + | | | whose configuration | | + | | | is not supported by | | + | | | the MS. | | + | | | | | + | 423 | Unable to | request to create or | | + | | configure | modify a conference | | + | | video layouts | failed due to | | + | | | unsupported video | | + | | | layout | | + | | | configuration. | | + | | | | | + | 424 | Unable to | request to create or | | + | | configure | modify a conference | | + | | video switch | failed due to | | + | | | unsupported video | | + | | | switch | | + | | | configuration. | | + | | | | | + | 425 | Unable to | request to create or | | + | | configure | modify a conference | | + | | codecs | failed due to | | + | | | unsupported codec. | | + | | | | | + + + + + +McGlashan, et al. Standards Track [Page 54] + +RFC 6505 Mixer Control Package March 2012 + + + | 426 | Unable to | request to join | | + | | join - mixing | connection entities | | + | | connections | (Section 4.2.2.2) | | + | | not supported | failed due to lack | | + | | | of support for | | + | | | mixing connections. | | + | | | | | + | 427 | Unable to | request to join | | + | | join - mixing | conference entities | | + | | conferences | (Section 4.2.2.2) | | + | | not supported | failed due to lack | | + | | | of support for | | + | | | mixing conferences. | | + | | | | | + | 428 | Unsupported | the request contains | | + | | foreign | attributes or | | + | | namespace | elements from | | + | | attribute or | another namespace | | + | | element | that the MS does not | | + | | | support. | | + | | | | | + | 435 | Other | request requires | | + | | unsupported | another capability | | + | | capability | not supported by the | | + | | | MS. | | + +-------+---------------+----------------------+--------------------+ + + Table 1: Status Codes + +4.7. Type Definitions + + This section defines types referenced in attribute definitions. + +4.7.1. Boolean + + The value space of boolean is the set {true, false, 1, 0} as defined + in Section 3.2.2 of [XMLSchema:Part2]. In accordance with this + definition, the concept of false can be lexically represented by the + strings "0" and "false" and the concept of true by the strings "1" + and "true"; implementations MUST support both styles of lexical + representation. + +4.7.2. Non-Negative Integer + + The value space of non-negative integer is the infinite set + {0,1,2,...} as defined in Section 3.3.20 of [XMLSchema:Part2]. + + + + + +McGlashan, et al. Standards Track [Page 55] + +RFC 6505 Mixer Control Package March 2012 + + +4.7.3. Positive Integer + + The value space of positive integer is the infinite set {1,2,...} as + defined in Section 3.3.25 of [XMLSchema:Part2]. + +4.7.4. String + + A string in the character encoding associated with the XML element as + defined in Section 3.2.1 of [XMLSchema:Part2]. + +4.7.5. Time Designation + + A time designation consists of a non-negative real number followed by + a time unit identifier. + + The time unit identifiers are: "ms" (milliseconds) and "s" (seconds). + + Examples include: "3s", "850ms", "0.7s", ".5s" and "+1.5s". + +4.7.6. MIME Media Type + + A string formatted as an IANA MIME media type [MIME.mediatypes]. The + ABNF ([RFC5234]) production for the string is: + + media-type = type-name "/" subtype-name *(";" parameter) + + parameter = parameter-name "=" value + + where "type-name" and "subtype-name" are defined in Section 4.2 of + [RFC4288], "parameter-name" is defined in Section 4.3 of [RFC4288], + and "value" is defined in Section 5.1 of [RFC2045]. + +4.7.7. Language Identifier + + A language identifier labels information content as being of a + particular human language variant. Following the XML specification + for language identification [XML], a legal language identifier is + identified by a [RFC5646] code and matched according to [RFC4647]. + +5. Formal Syntax + + This section defines the XML schema for the Mixer Control Package. + The schema is normative. + + The schema defines datatypes, attributes, and mixer elements in the + urn:ietf:params:xml:ns:msc-mixer namespace. In most elements, the + order of child elements is significant. The schema is extensible: + elements allow attributes and child elements from other namespaces. + + + +McGlashan, et al. Standards Track [Page 56] + +RFC 6505 Mixer Control Package March 2012 + + + Elements from outside this package's namespace can occur after + elements defined in this package. + + The schema is dependent upon the schema (framework.xsd) defined in + Appendix A.1 of the Control Framework [RFC6230]. + + <?xml version="1.0" encoding="UTF-8"?> + <xsd:schema targetNamespace="urn:ietf:params:xml:ns:msc-mixer" + xmlns:fw="urn:ietf:params:xml:ns:control:framework-attributes" + elementFormDefault="qualified" + xmlns:xs="http://www.w3.org/2001/XMLSchema" + xmlns="urn:ietf:params:xml:ns:msc-mixer" + xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + + <xsd:annotation> + <xsd:documentation> + IETF MediaCtrl Mixer 1.0 (20110104) + + This is the schema of the Mixer Control Package. It + defines request, response, and notification elements for + mixing. + + The schema namespace is urn:ietf:params:xml:ns:msc-mixer + + </xsd:documentation> + </xsd:annotation> + + <!-- + ############################################################# + + SCHEMA IMPORTS + + ############################################################# + --> + + + <xsd:import + namespace="urn:ietf:params:xml:ns:control:framework-attributes" + schemaLocation="framework.xsd"> + <xsd:annotation> + <xsd:documentation> + This import brings in the framework attributes for + conferenceid and connectionid. + </xsd:documentation> + </xsd:annotation> + </xsd:import> + + <!-- + + + +McGlashan, et al. Standards Track [Page 57] + +RFC 6505 Mixer Control Package March 2012 + + + ##################################################### + + Extensible core type + + ##################################################### + --> + + + <xsd:complexType name="Tcore"> + <xsd:annotation> + <xsd:documentation> + This type is extended by other (non-mixed) component types to + allow attributes from other namespaces. + </xsd:documentation> + </xsd:annotation> + <xsd:sequence/> + <xsd:anyAttribute namespace="##other" processContents="lax" /> + </xsd:complexType> + + <!-- + ##################################################### + + TOP-LEVEL ELEMENT: mscmixer + + ##################################################### + --> + + <xsd:complexType name="mscmixerType"> + <xsd:complexContent> + <xsd:extension base="Tcore"> + <xsd:sequence> + <xsd:choice> + <xsd:element ref="createconference" /> + <xsd:element ref="modifyconference" /> + <xsd:element ref="destroyconference" /> + <xsd:element ref="join" /> + <xsd:element ref="unjoin" /> + <xsd:element ref="modifyjoin" /> + <xsd:element ref="response" /> + <xsd:element ref="event" /> + <xsd:element ref="audit" /> + <xsd:element ref="auditresponse" /> + <xsd:any namespace="##other" minOccurs="0" + maxOccurs="unbounded" processContents="lax" /> + </xsd:choice> + </xsd:sequence> + <xsd:attribute name="version" type="version.datatype" + use="required" /> + + + +McGlashan, et al. Standards Track [Page 58] + +RFC 6505 Mixer Control Package March 2012 + + + <xsd:attribute name="desclang" type="xsd:language" + default="i-default" /> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <xsd:element name="mscmixer" type="mscmixerType" /> + + <!-- + ##################################################### + + CONFERENCE MANAGEMENT TYPES + + ##################################################### + --> + + <!-- createconference --> + + <xsd:complexType name="createconferenceType"> + <xsd:complexContent> + <xsd:extension base="Tcore"> + <xsd:sequence> + <xsd:element ref="codecs" minOccurs="0" + maxOccurs="1" /> + <xsd:element ref="audio-mixing" minOccurs="0" + maxOccurs="1" /> + <xsd:element ref="video-layouts" minOccurs="0" + maxOccurs="1" /> + <xsd:element ref="video-switch" minOccurs="0" + maxOccurs="1" /> + <xsd:element ref="subscribe" minOccurs="0" + maxOccurs="1" /> + <xsd:any namespace="##other" + processContents="lax" minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + <xsd:attribute name="conferenceid" type="xsd:string" /> + <xsd:attribute name="reserved-talkers" + type="xsd:nonNegativeInteger" default="0" /> + <xsd:attribute name="reserved-listeners" + type="xsd:nonNegativeInteger" default="0" /> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + + <xsd:element name="createconference" type="createconferenceType" /> + + <!-- modifyconference --> + + + +McGlashan, et al. Standards Track [Page 59] + +RFC 6505 Mixer Control Package March 2012 + + + <xsd:complexType name="modifyconferenceType"> + <xsd:complexContent> + <xsd:extension base="Tcore"> + <xsd:sequence> + <xsd:element ref="codecs" minOccurs="0" + maxOccurs="1" /> + <xsd:element ref="audio-mixing" minOccurs="0" + maxOccurs="1" /> + <xsd:element ref="video-layouts" minOccurs="0" + maxOccurs="1" /> + <xsd:element ref="video-switch" minOccurs="0" + maxOccurs="1" /> + <xsd:element ref="subscribe" /> + <xsd:any namespace="##other" + processContents="lax" minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + <xsd:attribute name="conferenceid" type="xsd:string" + use="required" /> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <xsd:element name="modifyconference" type="modifyconferenceType" /> + + + <!-- destroyconference --> + + <xsd:complexType name="destroyconferenceType"> + <xsd:complexContent> + <xsd:extension base="Tcore"> + <xsd:sequence> + <xsd:any namespace="##other" minOccurs="0" + maxOccurs="unbounded" processContents="lax" /> + </xsd:sequence> + <xsd:attribute name="conferenceid" type="xsd:string" + use="required" /> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <xsd:element name="destroyconference" + type="destroyconferenceType" /> + + <!-- + ##################################################### + + JOIN TYPES + + + + +McGlashan, et al. Standards Track [Page 60] + +RFC 6505 Mixer Control Package March 2012 + + + ##################################################### + --> + + <xsd:complexType name="joinType"> + <xsd:complexContent> + <xsd:extension base="Tcore"> + <xsd:sequence> + <xsd:element ref="stream" minOccurs="0" + maxOccurs="unbounded" /> + <xsd:any namespace="##other" + processContents="lax" minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + <xsd:attribute name="id1" type="xsd:string" + use="required" /> + <xsd:attribute name="id2" type="xsd:string" + use="required" /> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <xsd:element name="join" type="joinType" /> + + <xsd:complexType name="modifyjoinType"> + <xsd:complexContent> + <xsd:extension base="Tcore"> + <xsd:sequence> + <xsd:element ref="stream" minOccurs="0" + maxOccurs="unbounded" /> + <xsd:any namespace="##other" + processContents="lax" minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + <xsd:attribute name="id1" type="xsd:string" + use="required" /> + <xsd:attribute name="id2" type="xsd:string" + use="required" /> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <xsd:element name="modifyjoin" type="modifyjoinType" /> + + + <xsd:complexType name="unjoinType"> + <xsd:complexContent> + <xsd:extension base="Tcore"> + <xsd:sequence> + <xsd:element ref="stream" minOccurs="0" + maxOccurs="unbounded" /> + + + +McGlashan, et al. Standards Track [Page 61] + +RFC 6505 Mixer Control Package March 2012 + + + <xsd:any namespace="##other" + processContents="lax" minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + <xsd:attribute name="id1" type="xsd:string" + use="required" /> + <xsd:attribute name="id2" type="xsd:string" + use="required" /> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <xsd:element name="unjoin" type="unjoinType" /> + + <!-- + ##################################################### + + OTHER TYPES + + ##################################################### + --> + + <xsd:complexType name="eventType"> + <xsd:complexContent> + <xsd:extension base="Tcore"> + <xsd:sequence> + <xsd:choice> + <xsd:element ref="active-talkers-notify" + minOccurs="0" maxOccurs="1" /> + <xsd:element ref="unjoin-notify" + minOccurs="0" maxOccurs="1" /> + <xsd:element ref="conferenceexit" + minOccurs="0" maxOccurs="1" /> + <xsd:any namespace="##other" minOccurs="0" + maxOccurs="unbounded" processContents="lax" /> + </xsd:choice> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <xsd:element name="event" type="eventType" /> + + <xsd:complexType name="activetalkersnotifyType"> + <xsd:complexContent> + <xsd:extension base="Tcore"> + <xsd:sequence> + <xsd:element ref="active-talker" minOccurs="0" + maxOccurs="unbounded" /> + + + +McGlashan, et al. Standards Track [Page 62] + +RFC 6505 Mixer Control Package March 2012 + + + <xsd:any namespace="##other" minOccurs="0" + maxOccurs="unbounded" processContents="lax" /> + </xsd:sequence> + <xsd:attribute name="conferenceid" type="xsd:string" + use="required" /> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <xsd:element name="active-talkers-notify" + type="activetalkersnotifyType" /> + + + <xsd:complexType name="activetalkerType"> + <xsd:complexContent> + <xsd:extension base="Tcore"> + <xsd:sequence> + <xsd:any namespace="##other" minOccurs="0" + maxOccurs="unbounded" processContents="lax" /> + </xsd:sequence> + <xsd:attributeGroup ref="fw:framework-attributes" /> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <xsd:element name="active-talker" type="activetalkerType" /> + + + <xsd:complexType name="unjoinnotifyType"> + <xsd:complexContent> + <xsd:extension base="Tcore"> + <xsd:sequence> + <xsd:any namespace="##other" minOccurs="0" + maxOccurs="unbounded" processContents="lax" /> + </xsd:sequence> + <xsd:attribute name="status" type="xsd:nonNegativeInteger" + use="required" /> + <xsd:attribute name="reason" type="xsd:string" /> + <xsd:attribute name="desclang" type="xsd:language"/> + <xsd:attribute name="id1" type="xsd:string" + use="required" /> + <xsd:attribute name="id2" type="xsd:string" + use="required" /> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <xsd:element name="unjoin-notify" type="unjoinnotifyType" /> + + + +McGlashan, et al. Standards Track [Page 63] + +RFC 6505 Mixer Control Package March 2012 + + + <!-- conferenceexit--> + + <xsd:complexType name="conferenceexitType"> + <xsd:complexContent> + <xsd:extension base="Tcore"> + <xsd:sequence> + <xsd:any namespace="##other" minOccurs="0" + maxOccurs="unbounded" processContents="lax" /> + </xsd:sequence> + <xsd:attribute name="conferenceid" type="xsd:string" + use="required" /> + <xsd:attribute name="status" + type="xsd:nonNegativeInteger" use="required" /> + <xsd:attribute name="reason" type="xsd:string" /> + <xsd:attribute name="desclang" type="xsd:language"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <xsd:element name="conferenceexit" type="conferenceexitType" /> + + + <xsd:complexType name="responseType"> + <xsd:complexContent> + <xsd:extension base="Tcore"> + <xsd:sequence> + <xsd:any namespace="##other" minOccurs="0" + maxOccurs="unbounded" processContents="lax" /> + </xsd:sequence> + <xsd:attribute name="status" type="status.datatype" + use="required" /> + <xsd:attribute name="reason" type="xsd:string" /> + <xsd:attribute name="desclang" type="xsd:language"/> + <xsd:attributeGroup ref="fw:framework-attributes" /> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + + <xsd:element name="response" type="responseType" /> + + <xsd:complexType name="subscribeType"> + <xsd:complexContent> + <xsd:extension base="Tcore"> + <xsd:sequence> + <xsd:element ref="active-talkers-sub" + minOccurs="0" maxOccurs="1" /> + <xsd:any namespace="##other" minOccurs="0" + + + +McGlashan, et al. Standards Track [Page 64] + +RFC 6505 Mixer Control Package March 2012 + + + maxOccurs="unbounded" processContents="lax" /> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + + <xsd:element name="subscribe" type="subscribeType" /> + + <xsd:complexType name="activetalkerssubType"> + <xsd:complexContent> + <xsd:extension base="Tcore"> + <xsd:sequence> + <xsd:any namespace="##other" minOccurs="0" + maxOccurs="unbounded" processContents="lax" /> + </xsd:sequence> + <xsd:attribute name="interval" + type="xsd:nonNegativeInteger" default="3" /> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <xsd:element name="active-talkers-sub" + type="activetalkerssubType" /> + + + <xsd:complexType name="streamType"> + <xsd:complexContent> + <xsd:extension base="Tcore"> + <xsd:sequence> + <xsd:element ref="volume" minOccurs="0" + maxOccurs="1" /> + <xsd:element ref="clamp" minOccurs="0" + maxOccurs="1" /> + <xsd:element ref="region" minOccurs="0" + maxOccurs="1" /> + <xsd:element ref="priority" minOccurs="0" + maxOccurs="1" /> + <xsd:any namespace="##other" minOccurs="0" + maxOccurs="unbounded" processContents="lax" /> + </xsd:sequence> + <xsd:attribute name="media" type="media.datatype" + use="required" /> + <xsd:attribute name="label" type="label.datatype" /> + <xsd:attribute name="direction" + type="direction.datatype" default="sendrecv" /> + </xsd:extension> + </xsd:complexContent> + + + +McGlashan, et al. Standards Track [Page 65] + +RFC 6505 Mixer Control Package March 2012 + + + </xsd:complexType> + + <xsd:element name="stream" type="streamType" /> + + + <xsd:complexType name="volumeType"> + <xsd:complexContent> + <xsd:extension base="Tcore"> + <xsd:sequence> + <xsd:any namespace="##other" minOccurs="0" + maxOccurs="unbounded" processContents="lax" /> + </xsd:sequence> + <xsd:attribute name="controltype" + type="volumecontroltype.datatype" use="required" /> + <xsd:attribute name="value" type="xsd:string" /> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <xsd:element name="volume" type="volumeType" /> + + + <xsd:complexType name="clampType"> + <xsd:complexContent> + <xsd:extension base="Tcore"> + <xsd:sequence> + <xsd:any namespace="##other" minOccurs="0" + maxOccurs="unbounded" processContents="lax" /> + </xsd:sequence> + <xsd:attribute name="tones" type="xsd:string" + default="1 2 3 4 5 6 7 8 9 0 * # A B C D"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <xsd:element name="clamp" type="clampType" /> + + + <!-- region --> + <xsd:simpleType name="regionType"> + <xsd:restriction base="xsd:NMTOKEN" /> + </xsd:simpleType> + + <xsd:element name="region" type="regionType" /> + + + <!-- priority --> + <xsd:simpleType name="priorityType"> + + + +McGlashan, et al. Standards Track [Page 66] + +RFC 6505 Mixer Control Package March 2012 + + + <xsd:restriction base="xsd:positiveInteger" /> + </xsd:simpleType> + + <xsd:element name="priority" type="priorityType" /> + + <xsd:complexType name="audiomixingType"> + <xsd:complexContent> + <xsd:extension base="Tcore"> + <xsd:sequence> + <xsd:any namespace="##other" minOccurs="0" + maxOccurs="unbounded" processContents="lax" /> + </xsd:sequence> + <xsd:attribute name="type" type="audiomix.datatype" + default="nbest" /> + <xsd:attribute name="n" type="xsd:nonNegativeInteger" + default="0" /> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <xsd:element name="audio-mixing" type="audiomixingType" /> + + <!-- video-switch --> + + <xsd:complexType name="videoswitchType"> + <xsd:complexContent> + <xsd:extension base="Tcore"> + <xsd:sequence> + <xsd:choice> + <xsd:element name="vas" type="Tcore"/> + <xsd:element name="controller" type="Tcore"/> + <xsd:any namespace="##other" processContents="lax" /> + </xsd:choice> + </xsd:sequence> + <xsd:attribute name="interval" + type="xsd:nonNegativeInteger" default="3" /> + <xsd:attribute name="activespeakermix" + type="xsd:boolean" default="false" /> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <xsd:element name="video-switch" type="videoswitchType" /> + + <!-- video-layouts --> + + <xsd:complexType name="videolayoutsType"> + <xsd:complexContent> + + + +McGlashan, et al. Standards Track [Page 67] + +RFC 6505 Mixer Control Package March 2012 + + + <xsd:extension base="Tcore"> + <xsd:sequence> + <xsd:element ref="video-layout" minOccurs="0" + maxOccurs="unbounded" /> + <xsd:any namespace="##other" minOccurs="0" + maxOccurs="unbounded" processContents="lax" /> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <xsd:element name="video-layouts" type="videolayoutsType" /> + + + <!-- video-layout --> + <xsd:complexType name="videolayoutType"> + <xsd:complexContent> + <xsd:extension base="Tcore"> + <xsd:sequence> + <xsd:choice> + <xsd:element name="single-view" type="Tcore"/> + <xsd:element name="dual-view" type="Tcore"/> + <xsd:element name="dual-view-crop" type="Tcore"/> + <xsd:element name="dual-view-2x1" type="Tcore"/> + <xsd:element name="dual-view-2x1-crop" type="Tcore"/> + <xsd:element name="quad-view" type="Tcore"/> + <xsd:element name="multiple-3x3" type="Tcore"/> + <xsd:element name="multiple-4x4" type="Tcore"/> + <xsd:element name="multiple-5x1" type="Tcore"/> + <xsd:any namespace="##other" processContents="lax" /> + </xsd:choice> + </xsd:sequence> + <xsd:attribute name="min-participants" + type="xsd:positiveInteger" default="1" /> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <xsd:element name="video-layout" type="videolayoutType" /> + + <xsd:complexType name="auditType"> + <xsd:complexContent> + <xsd:extension base="Tcore"> + <xsd:sequence> + <xsd:any namespace="##other" minOccurs="0" + maxOccurs="unbounded" processContents="lax" /> + </xsd:sequence> + <xsd:attribute name="capabilities" + + + +McGlashan, et al. Standards Track [Page 68] + +RFC 6505 Mixer Control Package March 2012 + + + type="xsd:boolean" default="true" /> + <xsd:attribute name="mixers" type="xsd:boolean" + default="true" /> + <xsd:attribute name="conferenceid" type="xsd:string" /> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <xsd:element name="audit" type="auditType" /> + + + <xsd:complexType name="auditresponseType"> + <xsd:complexContent> + <xsd:extension base="Tcore"> + <xsd:sequence> + <xsd:element ref="capabilities" minOccurs="0" + maxOccurs="1" /> + <xsd:element ref="mixers" minOccurs="0" + maxOccurs="1" /> + <xsd:any namespace="##other" minOccurs="0" + maxOccurs="unbounded" processContents="lax" /> + </xsd:sequence> + <xsd:attribute name="status" type="status.datatype" + use="required" /> + <xsd:attribute name="reason" type="xsd:string" /> + <xsd:attribute name="desclang" type="xsd:language"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <xsd:element name="auditresponse" type="auditresponseType" /> + + <!-- mixers --> + + <xsd:complexType name="mixersType"> + <xsd:complexContent> + <xsd:extension base="Tcore"> + <xsd:sequence> + <xsd:element ref="conferenceaudit" minOccurs="0" + maxOccurs="unbounded" /> + <xsd:element ref="joinaudit" minOccurs="0" + maxOccurs="unbounded" /> + <xsd:any namespace="##other" minOccurs="0" + maxOccurs="unbounded" processContents="lax" /> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + + +McGlashan, et al. Standards Track [Page 69] + +RFC 6505 Mixer Control Package March 2012 + + + <xsd:element name="mixers" type="mixersType" /> + + <!-- joinaudit --> + + <xsd:complexType name="joinauditType"> + <xsd:complexContent> + <xsd:extension base="Tcore"> + <xsd:sequence> + <xsd:any namespace="##other" + processContents="lax" minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + <xsd:attribute name="id1" type="xsd:string" + use="required" /> + <xsd:attribute name="id2" type="xsd:string" + use="required" /> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <xsd:element name="joinaudit" type="joinauditType" /> + + <!-- conferenceaudit --> + + <xsd:complexType name="conferenceauditType"> + <xsd:complexContent> + <xsd:extension base="Tcore"> + <xsd:sequence> + <xsd:element ref="codecs" minOccurs="0" + maxOccurs="1" /> + <xsd:element ref="participants" minOccurs="0" + maxOccurs="1" /> + <xsd:element ref="video-layout" minOccurs="0" + maxOccurs="1" /> + <xsd:any namespace="##other" minOccurs="0" + maxOccurs="unbounded" processContents="lax" /> + </xsd:sequence> + <xsd:attribute name="conferenceid" type="xsd:string" + use="required" /> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <xsd:element name="conferenceaudit" type="conferenceauditType" /> + + + <!-- participants --> + + <xsd:complexType name="participantsType"> + + + +McGlashan, et al. Standards Track [Page 70] + +RFC 6505 Mixer Control Package March 2012 + + + <xsd:complexContent> + <xsd:extension base="Tcore"> + <xsd:sequence> + <xsd:element ref="participant" minOccurs="0" + maxOccurs="unbounded" /> + <xsd:any namespace="##other" minOccurs="0" + maxOccurs="unbounded" processContents="lax" /> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <xsd:element name="participants" type="participantsType" /> + + <!-- participant --> + + <xsd:complexType name="participantType"> + <xsd:complexContent> + <xsd:extension base="Tcore"> + <xsd:sequence> + <xsd:any namespace="##other" minOccurs="0" + maxOccurs="unbounded" processContents="lax" /> + </xsd:sequence> + <xsd:attribute name="id" type="xsd:string" + use="required" /> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <xsd:element name="participant" type="participantType" /> + + <!-- capabilities --> + + <xsd:complexType name="capabilitiesType"> + <xsd:complexContent> + <xsd:extension base="Tcore"> + <xsd:sequence> + <xsd:element ref="codecs" minOccurs="1" + maxOccurs="1" /> + <xsd:any namespace="##other" minOccurs="0" + maxOccurs="unbounded" processContents="lax" /> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <xsd:element name="capabilities" type="capabilitiesType" /> + + + + +McGlashan, et al. Standards Track [Page 71] + +RFC 6505 Mixer Control Package March 2012 + + + <!-- codecs --> + + <xsd:complexType name="codecsType"> + <xsd:complexContent> + <xsd:extension base="Tcore"> + <xsd:sequence> + <xsd:element ref="codec" minOccurs="0" + maxOccurs="unbounded" /> + <xsd:any namespace="##other" minOccurs="0" + maxOccurs="unbounded" processContents="lax" /> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <xsd:element name="codecs" type="codecsType" /> + + <!-- codec --> + + <xsd:complexType name="codecType"> + <xsd:complexContent> + <xsd:extension base="Tcore"> + <xsd:sequence> + <xsd:element ref="subtype" minOccurs="1" + maxOccurs="1" /> + <xsd:element ref="params" minOccurs="0" + maxOccurs="1" /> + <xsd:any namespace="##other" minOccurs="0" + maxOccurs="unbounded" processContents="lax" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" + use="required" /> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <xsd:element name="codec" type="codecType" /> + + <!-- subtype --> + + <xsd:simpleType name="subtypeType"> + <xsd:restriction base="xsd:string" /> + </xsd:simpleType> + + <xsd:element name="subtype" type="subtypeType" /> + + + <!-- params --> + + + +McGlashan, et al. Standards Track [Page 72] + +RFC 6505 Mixer Control Package March 2012 + + + <xsd:complexType name="paramsType"> + <xsd:complexContent> + <xsd:extension base="Tcore"> + <xsd:sequence> + <xsd:element ref="param" minOccurs="0" + maxOccurs="unbounded" /> + <xsd:any namespace="##other" minOccurs="0" + maxOccurs="unbounded" processContents="lax" /> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <xsd:element name="params" type="paramsType" /> + + + <!-- param --> + <!-- doesn't extend tCore since its content model is mixed --> + <xsd:complexType name="paramType" mixed="true"> + <xsd:sequence/> + <xsd:attribute name="name" type="xsd:string" use="required" /> + <xsd:attribute name="type" type="mime.datatype" + default="text/plain" /> + <xsd:attribute name="encoding" type="xsd:string"/> + </xsd:complexType> + + <xsd:element name="param" type="paramType" /> + + + <!-- + #################################################### + + DATATYPES + + #################################################### + --> + + <xsd:simpleType name="version.datatype"> + <xsd:restriction base="xsd:NMTOKEN"> + <xsd:enumeration value="1.0" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="eventname.datatype"> + <xsd:restriction base="xsd:NMTOKEN"> + <xsd:pattern value="[a-zA-Z0-9\.]+" /> + </xsd:restriction> + </xsd:simpleType> + + + +McGlashan, et al. Standards Track [Page 73] + +RFC 6505 Mixer Control Package March 2012 + + + <xsd:simpleType name="audiomix.datatype"> + <xsd:restriction base="xsd:NMTOKEN"> + <xsd:enumeration value="nbest" /> + <xsd:enumeration value="controller" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="media.datatype"> + <xsd:restriction base="xsd:string" /> + </xsd:simpleType> + + <xsd:simpleType name="label.datatype"> + <xsd:restriction base="xsd:string" /> + </xsd:simpleType> + + <xsd:simpleType name="status.datatype"> + <xsd:restriction base="xsd:positiveInteger"> + <xsd:pattern value="[0-9][0-9][0-9]" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="direction.datatype"> + <xsd:restriction base="xsd:NMTOKEN"> + <xsd:enumeration value="sendonly" /> + <xsd:enumeration value="recvonly" /> + <xsd:enumeration value="sendrecv" /> + <xsd:enumeration value="inactive" /> + </xsd:restriction> + </xsd:simpleType> + + + <xsd:simpleType name="mime.datatype"> + <xsd:restriction base="xsd:string" /> + </xsd:simpleType> + + + <xsd:simpleType name="volumecontroltype.datatype"> + <xsd:restriction base="xsd:NMTOKEN"> + <xsd:enumeration value="automatic" /> + <xsd:enumeration value="setgain" /> + <xsd:enumeration value="setstate" /> + </xsd:restriction> + </xsd:simpleType> + + + </xsd:schema> + + Figure 10: Mixer Package XML Schema + + + +McGlashan, et al. Standards Track [Page 74] + +RFC 6505 Mixer Control Package March 2012 + + +6. Examples + + This section provides examples of the Mixer Control Package. + +6.1. AS-MS Framework Interaction Examples + + The following example assumes a Control Channel has been established + and synced as described in the Media Control Channel Framework + ([RFC6230]). + + The XML messages are in angled brackets (with the root <mscmixer> and + other details omitted for clarity); the REPORT status is in + parentheses. Other aspects of the protocol are omitted for + readability. + +6.1.1. Creating a Conference Mixer and Joining a Participant + + A conference mixer is created successfully and a participant is + joined. + + Application Server (AS) Media Server (MS) + | | + | (1) CONTROL: <createconference> | + | ----------------------------------------> | + | | + | (2) 202 | + | <--------------------------------------- | + | | + | | + | (3) REPORT: <response status="200"/> | + | (terminate) | + | <---------------------------------------- | + | | + | (4) 200 | + | ----------------------------------------> | + | | + | (5) CONTROL: <join id1=.. id2=..> | + | ----------------------------------------> | + | | + | (6) 202 | + | <--------------------------------------- | + | | + | (7) REPORT: <response status="200"/> | + | (terminate) | + | <---------------------------------------- | + | | + | (8) 200 | + | ----------------------------------------> | + + + +McGlashan, et al. Standards Track [Page 75] + +RFC 6505 Mixer Control Package March 2012 + + +6.1.2. Receiving Active Talker Notifications + + An active talker notification event is sent by the MS. + + Application Server (AS) Media Server (MS) + | | + | (1) CONTROL: <event ...> | + | <--------------------------------------- | + | | + | (4) 200 | + | ----------------------------------------> | + | | + +6.1.3. Conference Termination + + The MS receives a request to terminate the conference, resulting in + conferenceexit and participant unjoined notifications. + + Application Server (AS) Media Server (MS) + | | + | (1) CONTROL: <destroyconference> | + | ----------------------------------------> | + | | + | (2) 200: <response status="200"/> | + | <--------------------------------------- | + | | + | (3) CONTROL: <event ..> | + | (unjoin-notify) | + | <---------------------------------------- | + | | + | (4) 200 | + | ----------------------------------------> | + | | + | (5) CONTROL: <event ..> | + | (conferenceexit) | + | <---------------------------------------- | + | | + | (6) 200 | + | ----------------------------------------> | + +6.2. Mixing Examples + + The following examples show how the mixing package can be used to + create audio conferences, bridge connections, and video conferences. + + The examples do not specify all messages between the AS and MS. + + + + + +McGlashan, et al. Standards Track [Page 76] + +RFC 6505 Mixer Control Package March 2012 + + +6.2.1. Audio Conferencing + + The AS sends a request to create a conference mixer: + + <mscmixer version="1.0" xmlns="urn:ietf:params:xml:ns:msc-mixer"> + <createconference conferenceid="conf1" + reserved-talkers="2" reserved-listeners="3"> + <audio-mixing type="nbest"/> + <subscribe> + <active-talkers-sub interval="5"/> + </subscribe> + </createconference> + </mscmixer> + + The request specifies that the conference is assigned the conference + id "conf1" and is configured with 2 reserved talkers, 3 reserved + listener slots, audio-mixing policy set to nbest, and with active + talkers notifications set to 5 seconds. + + If the MS is able to create this conference mixer, it sends a 200 + response: + + <mscmixer version="1.0" xmlns="urn:ietf:params:xml:ns:msc-mixer"> + <response status="200" reason="conference created" + conferenceid="conf1"/> + </mscmixer> + + The AS is now able to join connections to the conference as + participants. A participant able to contribute to the audio mix + would be joined as follows: + + <mscmixer version="1.0" xmlns="urn:ietf:params:xml:ns:msc-mixer"> + <join id1="1536067209:913cd14c" id2="conf1"> + <stream media="audio" direction="sendrecv"/> + </join> + </mscmixer> + + If the MS can join the participant 1536067209:913cd14c to the + conference conf1 with audio in both directions, then it sends a + successful response: + + <mscmixer version="1.0" xmlns="urn:ietf:params:xml:ns:msc-mixer"> + <response status="200" reason="join successful"/> + </mscmixer> + + The AS could also join listener-only participants to the conference + by setting the stream direction to receive only: + + + + +McGlashan, et al. Standards Track [Page 77] + +RFC 6505 Mixer Control Package March 2012 + + + <mscmixer version="1.0" xmlns="urn:ietf:params:xml:ns:msc-mixer"> + <join id1="9936067209:914cd14c" id2="conf1"> + <stream media="audio" direction="recvonly"/> + </join> + </mscmixer> + + If the MS can join the participant 9936067209:914cd14c to the + conference conf1, then it would send a successful response (not + shown). + + As the active talker changes, the MS sends an active talker + notification to the AS: + + <mscmixer version="1.0" xmlns="urn:ietf:params:xml:ns:msc-mixer"> + <event> + <active-talkers-notify conferenceid="conf1"> + <active-talker connectionid="1536067209:913cd14c"/> + </active-talkers-notify> + </event> + </mscmixer> + + The AS could decide to change the status of a talker connection so + that they can only listen: + + <mscmixer version="1.0" xmlns="urn:ietf:params:xml:ns:msc-mixer"> + <modifyjoin id1="1536067209:913cd14c" id2="conf1"> + <stream media="audio" direction="recvonly"/> + </modifyjoin> + </mscmixer> + + Where the participant 1536067209:913cd14c is no longer able to + contribute to the audio mix on the conference. If the MS is able to + execute this request, it would send a 200 response. + + The AS could decide to remove this participant from the conference: + + <mscmixer version="1.0" xmlns="urn:ietf:params:xml:ns:msc-mixer"> + <unjoin id1="1536067209:913cd14c" id2="conf1"/> + </mscmixer> + + Again, if the MS can execute this request, a 200 response would be + sent. + + Finally, the AS terminates the conference: + + <mscmixer version="1.0" xmlns="urn:ietf:params:xml:ns:msc-mixer"> + <destroyconference conferenceid="conf1"/> + </mscmixer> + + + +McGlashan, et al. Standards Track [Page 78] + +RFC 6505 Mixer Control Package March 2012 + + + If the MS is able to destroy the conference conf1, it sends a 200 + response: + + <mscmixer version="1.0" xmlns="urn:ietf:params:xml:ns:msc-mixer"> + <response status="200" conferenceid="conf1"/> + </mscmixer> + + For each participant attached to the conference when it is destroyed, + the MS sends an unjoin notification event: + + <mscmixer version="1.0" xmlns="urn:ietf:params:xml:ns:msc-mixer"> + <event> + <unjoin-notify status="2" id1="9936067209:914cd14c" + id2="conf1"/> + </event> + </mscmixer> + + And the MS sends a conferenceexit notification event when the + conference finally exits: + + <mscmixer version="1.0" xmlns="urn:ietf:params:xml:ns:msc-mixer"> + <event> + <conferenceexit status="0" conferenceid="conf1"/> + </event> + </mscmixer> + +6.2.2. Bridging Connections + + The mixer package can be used to join connections to one another. In + a call-center scenario, for example, this package can be used to set + up and modify connections between a caller, agent, and supervisor. + + A caller is joined to an agent with bidirectional audio: + + <mscmixer version="1.0" xmlns="urn:ietf:params:xml:ns:msc-mixer"> + <join id1="caller:001" id2="agent:002"> + <stream media="audio" direction="sendrecv"/> + </join> + </mscmixer> + + If the MS is able to establish this connection, then it would send a + 200 response: + + <mscmixer version="1.0" xmlns="urn:ietf:params:xml:ns:msc-mixer"> + <response status="200"/> + </mscmixer> + + + + + +McGlashan, et al. Standards Track [Page 79] + +RFC 6505 Mixer Control Package March 2012 + + + Now assume that the AS wants a supervisor to listen into the agent + conversation with the caller and provide whispered guidance to the + agent. First, the AS would send a request to join the supervisor and + the caller connections: + + <mscmixer version="1.0" xmlns="urn:ietf:params:xml:ns:msc-mixer"> + <join id1="supervisor:003" id2="caller:001"> + <stream media="audio" direction="recvonly"/> + </join> + </mscmixer> + + If this request was successful, audio output from the caller + connection would now be sent to both the agent and the supervisor. + + Second, the AS would send a request to join the supervisor and the + agent connections: + + <mscmixer version="1.0" xmlns="urn:ietf:params:xml:ns:msc-mixer"> + <join id1="supervisor:001" id2="agent:002"> + <stream media="audio" direction="sendrecv"/> + </join> + </mscmixer> + + If this request was successful, the audio mixing would occur on both + the agent and supervisor connections: the agent would hear the caller + and supervisor, and the supervisor would hear the agent and caller. + The caller would only hear the agent. If the MS is unable to join + and mix connections in this way, it would send a 426 response. + +6.2.3. Video Conferencing + + In this example, an audio-video conference is created where the + loudest participant has the most prominent region in the video + layout. + + The AS sends a request to create an audio-video conference: + + + + + + + + + + + + + + + +McGlashan, et al. Standards Track [Page 80] + +RFC 6505 Mixer Control Package March 2012 + + + <mscmixer version="1.0" xmlns="urn:ietf:params:xml:ns:msc-mixer"> + <createconference conferenceid="conf2"> + <audio-mixing type="nbest"/> + <video-layouts> + <video-layout min-participants="1"><single-view/></video-layout> + <video-layout min-participants="2"><dual-view/></video-layout> + <video-layout min-participants="3"><quad-view/></video-layout> + <video-layout min-participants="5"><multiple-5x1/></video-layout> + </video-layouts> + <video-switch><vas/></video-switch> + </createconference> + </mscmixer> + + In this configuration, the conference uses a nbest audio mixing + policy and a <vas/> video-switching policy, so that the loudest + speaker receives the most prominent region in the layout. Multiple + video layouts are specified and the active one depends on the number + of participants. + + Assume that 4 participants are already joined to the conference. In + that case, the video layout will be quad-view (Figure 6) with the + most active speaker displayed in region 1. When a fifth participant + joins, the video layout automatically switches to a multiple-5x1 + layout (Figure 9), again with the most active speaker in region 1. + + The AS can manipulate which participants are displayed in the + remaining regions. For example, it could force an existing + conference participant to be displayed in region 2: + + <mscmixer version="1.0" xmlns="urn:ietf:params:xml:ns:msc-mixer"> + <modifyjoin id1="1536067209:913cd14c" id2="conf2"> + <stream media="video"> + <region>2</region> + </stream> + </modifyjoin> + </mscmixer> + +7. Security Considerations + + As this Control Package processes XML markup, implementations MUST + address the security considerations of [RFC3023]. + + As a Control Package of the Media Control Channel Framework, + security, confidentiality, and integrity of messages transported over + the Control Channel MUST be addressed as described in Section 12 of + the Media Control Channel Framework ([RFC6230]), including transport- + level protection, Control Channel policy management, and session + establishment. In addition, implementations MUST address security, + + + +McGlashan, et al. Standards Track [Page 81] + +RFC 6505 Mixer Control Package March 2012 + + + confidentiality, and integrity of User Agent sessions with the MS, + both in terms of SIP signaling and the associated RTP media flow; see + [RFC6230] for further details on this topic. + + Adequate transport protection and authentication are critical, + especially when the implementation is deployed in open networks. If + the implementation fails to correctly address these issues, it risks + exposure to malicious attacks, including (but not limited to): + + Denial of Service: An attacker could insert a request message into + the transport stream causing specific conferences or join mixers + on the MS to be destroyed. For example, <destroyconference + conferenceid="XXXX">, where the value of "XXXX" could be guessed + or discovered by auditing active mixers on the MS using an <audit> + request. Likewise, an attacker could impersonate the MS and + insert error responses into the transport stream thereby denying + the AS access to package capabilities. + + Resource Exhaustion: An attacker could insert into the Control + Channel new request messages (or modify existing ones) with, for + instance, <createconference> elements causing large numbers of + conference mixer resources to be allocated. At some point, this + will exhaust the number of conference mixers that the MS is able + to allocate. + + The Media Control Channel Framework permits additional policy + management (beyond that specified for the Media Control Channel + Framework), including resource access and Control Channel usage, to + be specified at the Control Package level. (See Section 12.3 of + [RFC6230].) + + Since creation of conference and join mixers is associated with + media-mixing resources on the MS, the security policy for this + Control Package needs to address how such mixers are securely managed + across more than one Control Channel. Such a security policy is only + useful for secure, confidential, and integrity-protected channels. + The identity of Control Channels is determined by the channel + identifier, i.e., the value of the 'cfw-id' attribute in the SDP and + Dialog-ID header in the channel protocol (see [RFC6230]). Channels + are the same if they have the same identifier; otherwise, they are + different. This Control Package imposes the following additional + security policies: + + Responses: The MS MUST only send a response to a mixer management or + audit request using the same Control Channel as the one used to + send the request. + + + + + +McGlashan, et al. Standards Track [Page 82] + +RFC 6505 Mixer Control Package March 2012 + + + Notifications: The MS MUST only send notification events for + conference and join mixers using the same Control Channel as it + received the request creating the mixer. + + Auditing: The MS MUST only provide audit information about + conference and join mixers that have been created on the same + Control Channel as the one upon which the <audit> request is sent. + For example, if a join between two connections has been created on + one channel, then a request on another channel to audit all mixers + -- <audit mixers="true"/> -- would not report on this join mixer. + + Rejection: The MS SHOULD reject requests to audit or manipulate an + existing conference or join mixer on the MS if the channel is not + the same as the one used when the mixer was created. The MS + rejects a request by sending a Control Framework 403 response (see + Sections 7.4 and 12.3 of [RFC6230]). For example, if a channel + with identifier 'cfw1234' has been used to send a request to + create a particular conference and the MS receives on channel + 'cfw98969' a request to audit or destroy this particular + conference, then the MS sends a Control Framework 403 response. + + There can be valid reasons why an implementation does not reject an + audit or mixer manipulation request on a different channel from the + one that created the mixer. For example, a system administrator + might require a separate channel to audit mixer resources created by + system users and to terminate mixers consuming excessive system + resources. Alternatively, a system monitor or resource broker might + require a separate channel to audit mixers managed by this package on + a MS. However, the full implications need to be understood by the + implementation and carefully weighed before accepting these reasons + as valid. If the reasons are not valid in their particular + circumstances, the MS rejects such requests. + + There can also be valid reasons for 'channel handover' including high + availability support or when one AS needs to take over management of + mixers after the AS that created them has failed. This could be + achieved by the Control Channels using the same channel identifier, + one after another. For example, assume a channel is created with the + identifier 'cfw1234', and the channel is used to create mixers on the + MS. This channel (and associated SIP dialog) then terminates due to + a failure on the AS. As permitted by the Control Framework, the + channel identifier 'cfw1234' could then be reused so that another + channel is created with the same identifier 'cfw1234', allowing it to + 'take over' management of the mixers on the MS. Again, the + implementation needs to understand the full implications and + carefully weigh them before accepting these reasons as valid. If the + reasons are not valid for their particular circumstances, the MS uses + + + + +McGlashan, et al. Standards Track [Page 83] + +RFC 6505 Mixer Control Package March 2012 + + + the appropriate SIP mechanisms to prevent session establishment when + the same channel identifier is used in setting up another Control + Channel (see Section 4 of [RFC6230]). + +8. IANA Considerations + + Per this specification, IANA has registered a new Media Control + Channel Framework Package, a new XML namespace, a new XML schema, and + a new MIME type. + + IANA has further created a new registry for the response codes for + the MEDIACTRL Mixer Control Package, RFC 6505. + +8.1. Control Package Registration + + This section registers a new Media Control Channel Framework package, + per the instructions in Section 13.1 of [RFC6230]. + + To: ietf-sip-control@iana.org + Subject: Registration of new Channel Framework package + Package Name: msc-mixer/1.0 + Published Specification(s): RFC 6505 + Person & email address to contact for further information: + IETF MEDIACTRL working group (mediactrl@ietf.org), + Scott McGlashan (smcg.stds01@mcglashan.org). + +8.2. URN Sub-Namespace Registration + + This section registers a new XML namespace, + "urn:ietf:params:xml:ns:msc-mixer", per the guidelines in RFC 3688 + [RFC3688]. + + URI: urn:ietf:params:xml:ns:msc-mixer + Registrant Contact: + IETF MEDIACTRL working group (mediactrl@ietf.org), + Scott McGlashan (smcg.stds01@mcglashan.org). + + + + + + + + + + + + + + + +McGlashan, et al. Standards Track [Page 84] + +RFC 6505 Mixer Control Package March 2012 + + + XML: + BEGIN + <?xml version="1.0"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> + <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> + <head> + <title>Media Control Channel Framework Mixer + Package attributes</title> + </head> + <body> + <h1>Namespace for Media Control Channel + Framework Mixer Package attributes</h1> + <h2>urn:ietf:params:xml:ns:msc-mixer</h2> + <p>See <a href="http://www.rfc-editor.org/rfc/rfc6505.txt"> + RFC 6505</a>.</p> + </body> + </html> + END + +8.3. XML Schema Registration + + This section registers an XML schema as per the guidelines in RFC + 3688 [RFC3688]. + + URI: urn:ietf:params:xml:schema:msc-mixer + Registrant Contact: + IETF MEDIACTRL working group (mediactrl@ietf.org), + Scott McGlashan (smcg.stds01@mcglashan.org). + Schema: The XML for this schema can be found in + Section 5 of this document. + +8.4. MIME Media Type Registration for 'application/msc-mixer+xml' + + This section registers the "application/msc-mixer+xml" MIME type. + + To: ietf-types@iana.org + Subject: Registration of MIME media type + application/msc-mixer+xml + MIME media type name: application + MIME subtype name: msc-mixer+xml + Required parameters: (none) + Optional parameters: charset + Indicates the character encoding of enclosed XML. Default is + UTF-8. + Encoding considerations: Uses XML, which can employ 8-bit + characters, depending on the character encoding used. See RFC + 3023 [RFC3023], Section 3.2. + + + +McGlashan, et al. Standards Track [Page 85] + +RFC 6505 Mixer Control Package March 2012 + + + Security considerations: No known security considerations outside + of those provided by the Media Control Channel Framework Mixer + Package. + Interoperability considerations: This content type provides + constructs for the Media Control Channel Framework Mixer Package. + Published specification: RFC 6505 + Applications that use this media type: Implementations of + the Media Control Channel Framework Mixer package. + Additional Information: + Magic Number(s): (none) + File extension(s): (none) + Macintosh File Type Code(s): (none) + Person & email address to contact for further information: + Scott McGlashan <smcg.stds01@mcglashan.org> + Intended usage: LIMITED USE + Author/Change controller: The IETF + Other information: None. + +8.5. Mixer Control Package Status Code Registration + + This section creates an IANA registry for the response codes for the + MEDIACTRL Mixer Control Package. New status codes are assigned using + the Standards Action process defined in RFC 5226 [RFC5226]. The + initial population of the registry is defined in Section 4.6. + + The format of this registry is as follows: + + +----------+----------------+----------------+----------------------+ + | Code | Summary | Description | Reference | + +----------+----------------+----------------+----------------------+ + | status | brief summary | full | reference document | + | code | of the status | description of | defining the status | + | number | code | the status | code | + | | | code | | + +----------+----------------+----------------+----------------------+ + + Table 2: Fields for Mixer Control Package Status Code Registry + +9. Contributors + + Asher Shiratzky provided valuable support and contributions to early + draft versions of this document. + + The authors would like to thank the Mixer design team consisting of + Roni Even, Lorenzo Miniero, Adnan Saleem, Diego Besprosvan, and Mary + Barnes who provided valuable feedback, input, diagrams, and text to + this document. + + + + +McGlashan, et al. Standards Track [Page 86] + +RFC 6505 Mixer Control Package March 2012 + + +10. Acknowledgments + + The authors would like to thank Steve Buko and Stephane Bastien for + expert reviews of this work. + + Shawn Emery carried out a thorough security review. + +11. References + +11.1. Normative References + + [RFC2045] Freed, N. and N. Borenstein, "Multipurpose + Internet Mail Extensions (MIME) Part One: Format + of Internet Message Bodies", RFC 2045, + November 1996. + + [RFC2119] Bradner, S., "Key words for use in RFCs to + Indicate Requirement Levels", BCP 14, RFC 2119, + March 1997. + + [RFC3023] Murata, M., St. Laurent, S., and D. Kohn, "XML + Media Types", RFC 3023, January 2001. + + [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, + RFC 3688, January 2004. + + [RFC4288] Freed, N. and J. Klensin, "Media Type + Specifications and Registration Procedures", + BCP 13, RFC 4288, December 2005. + + [RFC4574] Levin, O. and G. Camarillo, "The Session + Description Protocol (SDP) Label Attribute", + RFC 4574, August 2006. + + [RFC4647] Phillips, A. and M. Davis, "Matching of Language + Tags", BCP 47, RFC 4647, September 2006. + + [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for + Writing an IANA Considerations Section in RFCs", + BCP 26, RFC 5226, May 2008. + + [RFC5234] Crocker, D. and P. Overell, "Augmented BNF for + Syntax Specifications: ABNF", STD 68, RFC 5234, + January 2008. + + [RFC5646] Phillips, A. and M. Davis, "Tags for Identifying + Languages", BCP 47, RFC 5646, September 2009. + + + + +McGlashan, et al. Standards Track [Page 87] + +RFC 6505 Mixer Control Package March 2012 + + + [RFC6230] Boulton, C., Melanchuk, T., and S. McGlashan, + "Media Control Channel Framework", RFC 6230, + May 2011. + + [RFC6501] Novo, O., Camarillo, G., Morgan, D., and J. + Urpalainen, "Conference Information Data Model for + Centralized Conferencing (XCON)", RFC 6501, + March 2012. + + [XML] Bray, T., Paoli, J., Sperberg-McQueen, C., Maler, + E., and F. Yergeau, "Extensible Markup Language + (XML) 1.0 (Fifth Edition)", World Wide Web + Consortium Recommendation REC-xml-20081126, + November 2008, + <http://www.w3.org/TR/2008/REC-xml-20081126>. + + [XMLSchema:Part2] Biron, P. and A. Malhotra, "XML Schema Part 2: + Datatypes Second Edition", W3C Recommendation, + October 2004. + +11.2. Informative References + + [IANA] IANA, "RTP Payload Types", + <http://www.iana.org/assignments/rtp-parameters>. + + [MIME.mediatypes] IANA, "MIME Media Types", + <http://www.iana.org/assignments/media-types>. + + [RFC2277] Alvestrand, H., "IETF Policy on Character Sets and + Languages", BCP 18, RFC 2277, January 1998. + + [RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., + Johnston, A., Peterson, J., Sparks, R., Handley, + M., and E. Schooler, "SIP: Session Initiation + Protocol", RFC 3261, June 2002. + + [RFC3550] Schulzrinne, H., Casner, S., Frederick, R., and V. + Jacobson, "RTP: A Transport Protocol for Real-Time + Applications", STD 64, RFC 3550, July 2003. + + [RFC5022] Van Dyke, J., Burger, E., and A. Spitzer, "Media + Server Control Markup Language (MSCML) and + Protocol", RFC 5022, September 2007. + + [RFC5167] Dolly, M. and R. Even, "Media Server Control + Protocol Requirements", RFC 5167, March 2008. + + + + + +McGlashan, et al. Standards Track [Page 88] + +RFC 6505 Mixer Control Package March 2012 + + + [RFC5707] Saleem, A., Xin, Y., and G. Sharratt, "Media + Server Markup Language (MSML)", RFC 5707, + February 2010. + +Authors' Addresses + + Scott McGlashan + Hewlett-Packard + + EMail: smcg.stds01@mcglashan.org + + + Tim Melanchuk + Rainwillow + + EMail: timm@rainwillow.com + + + Chris Boulton + NS-Technologies + + EMail: chris@ns-technologies.com + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +McGlashan, et al. Standards Track [Page 89] + |