XCON Working Group C. Boulton Internet-Draft Ubiquity Software Corporation Expires:October 15, 2005April 26, 2006 U. Chandra Nokia Research CenterApril 13,October 23, 2005 Media Policy Templates for XCONdraft-boulton-xcon-media-template-01draft-boulton-xcon-media-template-02 Status of this Memo By submitting this Internet-Draft, each author represents that any applicable patent or other IPR claims of which he or she is aware have been or will be disclosed, and any of which he or she becomes aware will be disclosed, in accordance with Section 6 of BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet- Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt. The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html. This Internet-Draft will expire onOctober 15, 2005.April 26, 2006. Copyright Notice Copyright (C) The Internet Society (2005). AbstractMedia Policy control isThe xcon framework[1] specifies themechanism byobject model for centralized conferencing. The Conference Object, whichparticipantsis defined in the framework data model, comprises ofa conference manipulatestwo distinct components - themedia inCommon Conference Information and Conference Templates. This memo specifies theconference.Conference Templates that describe various common conference scenarios. The templates define controlsprovided to conference(and media properties like type of media supported, what streams are supported etc) through which participantstoof the conference can manipulate the mediaenhances participants experience inthey receive from theconference.conference server. This document provides a minimum set of mediapolicytemplates that can be instantiated during conference creation and manipulated during the life cycle of a conference instance.The templates define conference properties like what streams are supported, what controls are available etc.This draft is currently under major revision and should be considered a work in progress as it aligns with current technical direction of the Working Group. A revision of this draft will be submitted very soon. This work is being discussed on the xcon@ietf.org mailing list. Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . .4 2. Guidelines for writers of Media Policy Templates . . . . . . 4 3. Templates . . . . . . . . . . . . . . . . . . . . . . . .. 43.1 Basic-Audio Template . . . . . . . . . . . . . . . . . . . 4 3.1.1 Description . . . . .2. XML Conventions and Practices . . . . . . . . . . . . . . . . 43.1.2 Roles . . . . . . . . . . . . .3. Guidelines for writers of Media Policy Templates . . . . . . . 5 4. Templates . . . .4 3.1.3 Parameters. . . . . . . . . . . . . . . . . . . . . . 53.1.4 Controls . . . .4.1. Basic-Audio Template . . . . . . . . . . . . . . . . . . . 53.1.5 Streams . . . . . . . . . . . . . . . . . . . . . . . 7 3.1.6 XML Definition . . . . .4.1.1. Description . . . . . . . . . . . . . . .8 3.1.7 XML Schema Definition. . . . . . 5 4.1.2. Roles . . . . . . . . . .9 3.2 Advanced Audio Template. . . . . . . . . . . . . . 5 4.1.3. Parameters . . .12 3.2.1 Description. . . . . . . . . . . . . . . . . . . 6 4.1.4. Controls . .12 3.2.2 Roles. . . . . . . . . . . . . . . . . . . . . 6 4.1.5. Control Arrays . . .12 3.2.3 Parameters. . . . . . . . . . . . . . . . . 7 4.1.6. Streams . . . . .12 3.2.4 Controls. . . . . . . . . . . . . . . . . . 8 4.1.7. Blueprint - XML example . . . . .13 3.2.5 Streams. . . . . . . . . . 9 4.1.8. XML Schema Definition . . . . . . . . . . . . .15 3.2.6 XML Definition. . . 11 4.2. Advanced Audio Template . . . . . . . . . . . . . . . . .16 3.314 4.3. Basic-Video Template . . . . . . . . . . . . . . . . . . .18 3.3.114 4.3.1. Description . . . . . . . . . . . . . . . . . . . . .18 3.3.214 4.3.2. Roles . . . . . . . . . . . . . . . . . . . . . . . .18 3.3.314 4.3.3. Parameters . . . . . . . . . . . . . . . . . . . . . .18 3.3.415 4.3.4. Controls . . . . . . . . . . . . . . . . . . . . . . .19 3.3.5 Streams . . . . . . . . . . . . . . . . . . . . . . . 20 3.3.6 XML Definition . . . . . . . . . . . . . . . . . . . . 22 3.4 Advanced Video Template . . . . . . . . . . . . . . . . . 23 3.4.1 Description . . . . . . . . . . . . . . . . . . . . . 23 3.4.2 Roles . . . . . . . . . . . . . . . . . . . . .15 4.3.5. Control Array . . .23 3.4.3 Parameters. . . . . . . . . . . . . . . . . 16 4.3.6. Streams . . . . .23 3.4.4 Controls. . . . . . . . . . . . . . . . . . 16 4.3.7. Blueprint - XML Example . . . . .24 3.4.5 Streams. . . . . . . . . . 17 4.3.8. XML Schema Definition . . . . . . . . . . . . .25 3.4.6 XML Definition. . . 19 4.4. Advanced Video Template . . . . . . . . . . . . . . . . .27 3.522 4.5. Basic Text Template . . . . . . . . . . . . . . . . . . .28 3.5.122 4.5.1. Description . . . . . . . . . . . . . . . . . . . . .28 3.5.222 4.5.2. Roles . . . . . . . . . . . . . . . . . . . . . . . .28 3.5.322 4.5.3. Parameters . . . . . . . . . . . . . . . . . . . . . .29 3.5.423 4.5.4. Controls . . . . . . . . . . . . . . . . . . . . . . .29 3.5.5 Streams . . . . . . . . . . . . . . . . . . . . . . . 30 3.5.6 XML Definition . . . . . . . . . . . . . . . . . . . . 32 3.6 Advanced Text Template . . . . . . . . . . . . . . . . . . 33 3.6.1 Description . . . . . . . . . . . . . . . . . . . . . 33 3.6.2 Roles . . . . . . . . . . . . . . . . . .23 4.5.5. Control Array . . . . . .33 3.6.3 Parameters .. . . . . . . . . . . . . . 23 4.5.6. Streams . . . . . . .33 3.6.4 Controls. . . . . . . . . . . . . . . . 23 4.5.7. Blueprint - XML Example . . . . . . .33 3.6.5 Streams. . . . . . . . 25 4.5.8. XML Schema Definition . . . . . . . . . . . . . . .33 3.6.6 XML Definition .. 26 4.6. Advanced Text Template . . . . . . . . . . . . . . . . . .33 3.729 4.7. Basic Audio-Video Template . . . . . . . . . . . . . . . .. . . 33 3.7.129 4.7.1. Description . . . . . . . . . . . . . . . . . . . . .33 3.7.229 4.7.2. Roles . . . . . . . . . . . . . . . . . . . . . . . .33 3.7.329 4.7.3. Parameters . . . . . . . . . . . . . . . . . . . . . .33 3.7.430 4.7.4. Controls . . . . . . . . . . . . . . . . . . . . . . .33 3.7.5 Streams . . . . . . . . . . . . . . . . . . . . . . . 33 3.7.6 XML Definition . . . . . . . . . . . . . . . . . . . . 33 3.8 audio-text Template . . . . . . . . . . . . . . . . . . . 36 3.8.1 Description . . . . . . . . . . . . . . . . . . . . . 36 3.8.2 Roles . . . . . . . . . . . . . . . . . . .30 4.7.5. Control Array . . . . .37 3.8.3 Parameters. . . . . . . . . . . . . . . 30 4.7.6. Streams . . . . . . .37 3.8.4 Controls. . . . . . . . . . . . . . . . 30 4.7.7. Blueprint - XML Example . . . . . . .37 3.8.5 Streams. . . . . . . . 31 4.7.8. XML Schema Definition . . . . . . . . . . . . . . .37 3.8.6 XML Definition. 33 4.8. Audio-text Template . . . . . . . . . . . . . . . . . . . 373.94.9. Basic Multimedia Template . . . . . . . . . . . . . . . .40 3.9.1 Description . . . . . . . . . . . . . . . . . . . . . 40 3.9.2 Roles . . . . . . . . . . . . . . . . . . . . . . . . 40 3.9.3 Parameters . . . . . . . . . . . . . . . . . . . . . . 40 3.9.4 Controls . . . . . . . . . . . . . . . . . . . . . . . 40 3.9.5 Streams . . . . . . . . . . . . . . . . . . . . . . . 40 3.9.6 XML Definition . . . . . . . . . . . . . . . . . . . . 40 3.1037 4.10. Advanced Multimedia Template . . . . . . . . . . . . . .40 3.10.1 Description . . . . . . . . . . . . . . . . . . . . 40 3.10.2 Roles . . . . . . . . . ... . . . . . . . . . . . 41 3.10.3 Parameters . . . . . . . . . . . . . . . . . . . . . 41 3.10.4 Controls . . . . . . . . . . . . . . . . . . . . . . 41 3.10.5 Streams . . . . . . . . . . . . . . . . . . . . . . 41 3.10.6 XML Definition . . . . . . . . . . . . . . . . . . . 41 4.37 5. Security Considerations . . . . . . . . . . . . . . . . . .41 5.. 37 6. IANA Considerations . . . . . . . . . . . . . . . . . . . .41 6.. 37 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . .41 7.. 37 8. References . . . . . . . . . . . . . . . . . . . . . . . . .41 7.1. 37 8.1. Normative References . . . . . . . . . . . . . . . . . . .41 7.237 8.2. Informative References . . . . . . . . . . . . . . . . . .4138 Authors' Addresses . . . . . . . . . . . . . . . . . . . . .41. . . 39 Intellectual Property and Copyright Statements . . . . . . .43. . . 40 1. Introduction The XCON architecture defined in [1] is built around a fundamental concept of Conference Object. A Conference Object is a logical representation of a conference instance. For conference creation, a conference object provides a "blueprint" representing the system capabilities which consists of a Common Conference Information part [4] and a Conference Template (as defined in this document). A conference object also provides the logical representation of a conference during each of the various stages of a conference (e.g. reservation, active, completed etc). [Editors Note: Need explicit reference relating to where the CCI is derived from.] The mechanism described in the 'Media Conference ServerControl[1]Control[2]' draft defines a protocol between thecentralized conference serverCentralized Conference System andconference participants.individual Conference Participants. The mechanism details the construction of media templates that provide a wide range of functionality to a client for the purpose of manipulating a media profile. The templates are constructed using an XML rule set described in[1].[2]. This document supplies a a set of core media templates that should be used in conjunction with[1].[2]. The templates specified SHOULD be supported at aminimum.minimum but MAY NOT be supported if a core related feature is not available on the Conference System. The editors of this document would like to point out that this document is currently 'Work In Progress' and fully identify that more work is required on the text and XML for the next revision. In the current draft revision we have defined only four templates - basic audio, basic video, basic audio & video and basic-text. Thedocument has been releasedintent of defining these templates is togainget a complete picture of conference object which comprises of the common conference information which is defined in [4] and the conference template. The idea is to get earlyfeedback.feedback from the working group regarding templates which would help in defining the more complex templates for different conference scenarios in the next revision. 2. XML Conventions and Practices It is intended that future iterations of this document will provide an individual namespace for each template schema definition. The schema will then be registered in an appropriate IANA registry. In the future, when new templates are constructed, they can also be registered. It is also intended that common components of this draft will be removed and incorporated in a separate namespace. Templates will then import the common components and use appropriately. This will save on repetition of common elements that appear in multiple media templates. This section will be expanded to include all the relevant details of these changes. 3. Guidelines for writers of Media Policy Templates [Editors Note: TODO]3.4. Templates3.14.1. Basic-Audio Template3.1.14.1.1. Description The Basic-Audio template can be used to achieve the simplest form of audio interaction between multiple voice input streams from participating entities. The output stream consists mix of all the participants audio excluding the input stream of the receiving entity. If a participant needs to talk in the conference, it first needs to get a floor from the moderator of the conference.3.1.2The floor control can be enabled or disabled by the moderator during the conference creation stage. When the floor control is not enabled then any participant can speak in the conference at any time. In this conference very basic controls like muting the output stream, changing the volume of the output stream are provided to end participants. If more advanced control (or user defined control) are required, it is recommended to use the advance-audio template. 4.1.2. RolesParticipant:Roles define different privileges that are available to the conference participants. In [3] different types of roles that the participants can assume in a conference are defined. For the basic audio template, there can be only two types of roles - participants and moderator. Issue : Do we limit that there can be only two types of participants or we remove this restriction and let the conference creator to define as many roles as possible and name them as they wish. 4.1.2.1. Participant The basic audio template specifies the role of 'Participant' to signify an entry level user with no privileges by default. The participant role could obtain access to all controls available for this template if set accordingly by a privileged user.Access toThis is achieved during the blueprint creation phase by setting the enable attribute of thecontrols available to a participant can be controlled using floor control, as defined in [refcontroldraft]. Moderator:element to TRUE. 4.1.2.2. Moderator The basic audio template specifies the role of 'Moderator' to signify a user with advanced privileges by default. The 'Moderator' role for this template has the same controls as a 'Participant' with an additional control for muting any participant in a conference instance.AnotherThe primary difference being that the default value for the 'enable' attribute on the 'mute' control on an output media stream is set to 'true'. See the individual control definitions for the impact of attribute settings.3.1.34.1.3. Parametersmax-particpants:4.1.3.1. max-participants The 'max-particpants' parameter specifies the maximum number of participants (Entity with signaling connection to the focus) that are permitted to be involved in an instantiated instance of the template (or sub-element, depending on where specified) for the specified role. The example Blue-Print provides a minimum value permittedisof "1" and the maximum value permitted is "128".max-audio-streams:4.1.3.2. max-audio-streams The 'max-audio-streams' parameter specifies the maximum number of audio media streams that are permitted to be involved in an instantiated instance of the template for the specified role. The example Blue-Print provides a minimum value permittedisof "1" and the maximum value permitted is "128".3.1.44.1.4. Controls3.1.4.1In the basic-audio template, only two types of controls are defined - mute and gain. It is expected that for most of the basic audio conferencing, these two controls are sufficient. If the conference server wants to support more advanced control, then it is recommended that advance-audio template to be used. In those templates the schema for controls is extensible, hence new control types can be added. Issue : For the basic audio template, we are restricting the type of the control to boolean and real (for mute and gain control). The motivation for that was you cannot define new control types in the basic-audio template. Should we keep the restriction or let the capability to define new control in a basic-audio template. 4.1.4.1. mute The 'mute' control is used in conjunction with a media stream to cease transmission of associated media. It has a 'Boolean' value.The 'mute' control can exist in two forms, depending on if the control appears on input or output media streams.Whenappearing as a control on an input media stream, the control locally manipulates the clients media stream to be active or inactive. When muting locally,muting, the control consists of the following attributes:- type: The 'mute' control has a type of 'Boolean'. name: The control is named 'mute'.default: Indicates the default value for the 'mute' control when not set. The attribute type is 'Boolean' with a default value of 'false'. Setting the 'mute' attribute to 'false' specifies that media should be transported for the associated media stream. When set to the value of 'true', media should not be transported for the associated media stream.enable: The enable attribute specifies if access to the control is available to the client. The value is of type 'boolean' and is set to 'true' as default. The'mute' control canControl alsoappear on an output stream. This indicates that the mute will manipulate outgoing media streams from the mixer to alternative clients. When used in this instance, the attributes for the control are identical to that of the input definition with the exception that the 'enable' and 'default' values are both set to 'true'. This instanceconsists of thecontrol defines anfollowing additional'controlArray' that represents other participating clients. This provideselements:- label: Provides aprivileged user the ability to mute/un-mute media being distributed to every client defined. 3.1.4.2 MuteInputAudio 'MuteInputAudio' is a controlarrayControl label thatis used in conjunction with media input streams of other participants and allows any input media stream of the participants to be muted. The moderatorcanuse this control to mute any paritcipant if it doesn't follows conference code. The controlArray enables a specific media stream tobemuted by passing in the associated identifying number of the participant into the name attribute e.g. The first participantrendered toenter the mix could be identified by the number '1' and sotheoperation 'MuteInoutAudio[1]' would result inclient. For theparticipant identified withinBlue-Print example thepolicy withvlaue is 'Mute-Audio'. value: Provides a default valueof '1' being muted. The upper bound offor thenumber being passed in is controlled byControl. For the'max-participants' parameter value. 3.1.4.3Blue-Print example the value is 'True'. 4.1.4.2. gain The 'gain' control is used in conjunction with a media output stream to indicate the amount of amplification of an audio stream. It has a 'Real' number value. The control consists of the following attributes:- type: The 'gain' control has a type of 'Real'. name: The control is named 'gain'. enable: The enable attribute specifies if access to the control is available to the client. The Control also consists of the following additional elements:- default: Indicates the default value for the 'gain' control when not set.3.1.4.4 MuteOutputAudio This controlarray4.1.5. Control Arrays The definition for Templates isused byderived from [2] which permits for Control Arrays. The controlArray defines a control for an logical stream. In themoderator to muteactual conference object, there would be one instance of control for each of theoutgoing audiostreamto a participantincasetheparticipantlogical stream. Logical streams are defined in [2]. With the controlArray an control isnot confirmingdefined which applies to all theconference policy. The moderator can choosestreams which are contributing toset this control temporaraly tilltheparticipant follows conference rules.logical stream. Thecontrolarray enables a specific outgoing audiological streamto be muted by passing inelement has an attribute type which defines theassociated identifying numbermedia type of theparticipant into the name attribute e.g.logical stream. Thefirst participant to enterattribute name in the Logicalstream has a semantic meaning. The conferencewould be identified byserver based on thenumber '1' and soname of theoperation 'StopoutputText[1]' would resultlogical stream knows what streams constitutes the logical stream. For example in theparticipant identified withinbasic audio we have an logical stream called MainAudioIn, which comprises of thepolicy with a valueincoming streams from the participants. We also define another logical stream in basic audio called MainAudioOut which comprises of'1' not hearingtheconference. The control type is boolean andoutput stream from thedefault valueserver to the end points. In the basic-audio template, for the role of the moderator, two controlArray elements are defined which work on the two logical streams - MainAudioIn, MainAudioOut. For both these logical streams, the controlArray element defines the controlwhen not set is false indicating that all participant getMute, which enables thetext stream. 3.1.5moderator to mute any participants incoming audio stream or out going audio stream 4.1.6. Streams The 'Basic Audio Template' consists of two audio streams:3.1.5.14.1.6.1. AudioIn The 'AudioIn' media stream details properties associated with the incoming audio to the mixer. The 'AudioIn' stream has the followingattributes:attributes and properties: type: The stream type is 'audio'. name: The descriptive name for this stream is 'AudioIn'. dir: The direction of the stream is set to 'in'.3.1.5.1.1stream-id : The identifier which uniquely identifies the stream. It is optional because during the blueprint creation phase there is no need to specify the stream-id. But once the conference starts and the streams are created in the server, each stream element is assigned an stream-id, through which the server and the client can uniquely identify the streams. 4.1.6.1.1. Floor The 'AudioIn' media stream consists of the following floor:3.1.5.1.1.14.1.6.1.1.1. Send_audio The 'Send-audio' floor is associated with the 'AudioIn' stream. It provides a mechanism to control the input to a media mix. A participant with a role of 'Moderator' should always have floor preference - this is considered out of scope for this document. The following attributes are defined: floor_id: Uniquely identifies the floor within the context of this template and has a value of '1'. instances: Value of '1' implies only one occurrence of this floor at any one time. enable: A value of 'false' indicates that this floor is not enabled by default. value: A value of false specifies that the instance represented by this template does not have control of the floor.3.1.5.24.1.6.2. AudioOut The 'AudioOut' media stream details properties associated with the outgoing audio from the mixer. The 'AudioOut' stream has the following attributes: type: The stream type is 'audio'. name: The descriptive name for this stream is 'AudioOut'. dir: The direction of the stream is set to 'out'.3.1.64.1.7. Blueprint - XMLDefinitionexample <template name="basic-audio"> <parameter type="integer" name="max-participants" value="1" min="1" max="128"/> <parameter type="integer" name="max-audio-streams" value="1" min="1" max="128"/> <role name="Participant"> <parameter type="integer" name="max-participants" value="1" min="1" max="128"/> <stream type="audio" name="AudioIn" dir="in"> <floor name="Send_audio" floor_id="1" instances="1" enable="true" value="false"> <control type ="boolean" name="mute" enable="true"> <label> Mute-Audio </label> <value>True</value> </control> </floor> </stream> <stream type="audio" name="AudioOut" dir="out"> <control type="real" name="gain" enable="true" > <label>Volume</label> <value>0</value> </control> </stream> </role> <role name="moderator"> <parameter type="integer" name="max-participants" value="0" min="0" max="128"/> <controlArrayname="MuteInputAudio" index="0" type="boolean" enable="true"> <LogicaStream type="audio" name="MainAudioIn" /> <control type="boolean" name="mute" enable="false"> <label>MuteInputAudio</label> <value>False</value> </control> </controlArray><controlArray name="MuteOutputAudio" index="0"<controlArray> <LogicalStream type="audio" name="MainAudioOut" /> <control name="mute" type="boolean"enable="true" >enable="false"> <label>MuteOutputAudio</label> <value>False</value> </control> </controlArray> <stream type="audio" name="AudioIn" dir="in"> <floor name="Send_audio" floor_id="1" instances="1" enable="true" value="true"> <control type ="boolean" name="mute" enable="true"> <label> Mute-Audio </label> <value>True</value> </control> </floor> </stream> <stream type="audio" name="AudioOut" dir="out"> <control type="real" name="gain" enable="true" > <label>Volume</label> <value>1.0</value> </control> </stream> </role> </template>3.1.74.1.8. XML Schema Definition This section provides the XML schema definition for the 'Basic-Audio' template.This schema in currently in the process of being defined and was included as an early hint of working group direction.<?xml version="1.0" encoding="UTF-8"?> <xs:schemaxmlns:xs="http://www.w3.org/2001/XMLSchema">xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:role="urn:ietf:params:xml:ns:role-schema"> <import namespace="urn:ietf:params:xml:ns:role-schema" /> <xs:element name="template-basic-audio"> <xs:complexType> <xs:sequence> <xs:element ref="parameter" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="role"minOccurs="0"minOccurs="1" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="parameter"> <xs:complexType> <xs:attribute name="type" type="parameter-defined" use="required"/> <xs:attribute name="name" type="xs:string" use="required"/> <xs:attribute name="value" type="parameter-value" use="required"/> <xs:attribute name="min" type="xs:positiveInteger" use="optional"/> <xs:attribute name="max" type="xs:positiveInteger" use="optional"/> </xs:complexType> </xs:element> <xs:simpleType name="parameter-value"> <xs:union> <xs:simpleType> <xs:restriction base="xs:integer"/> </xs:simpleType> <xs:simpleType> <xs:restriction base="xs:real"/> </xs:simpleType> <xs:simpleType> <xs:restriction base="xs:enumeration"/> </xs:simpleType> </xs:union> </xs:simpleType> <xs:simpleType name="parameter-defined"> <xs:restriction base="xs:string"> <xs:enumeration value="integer"/> <xs:enumeration value="real"/> <xs:enumeration value="enumeration"/> </xs:restriction> </xs:simpleType> <xs:element name="role"> <xs:complexType> <xs:sequence> <xs:element ref="parameter" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="controlArray" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="stream" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="name"type="role-type"type="rtype" use="required"/> </xs:complexType> </xs:element> <xs:simpleTypename="role-type">name="rtype"> <xs:restrictionbase="xs:string">base="role:role-type"> <xs:enumeration value="Participant"/> <xs:enumerationvalue="Presenter"/> <xs:enumerationvalue="Moderator"/><xs:enumeration value="Observer"/></xs:restriction> </xs:simpleType> <xs:element name="controlArray"> <xs:complexType><element name="label" type="xs:string"/> <element name="value" type="control-type"/><xs:sequence> <xs:element ref="LogicalStream" minoccurs="1" maxoccurs="unbounded" /> <xs:element ref="control" minoccurs="1" maxoccurs="1"/> </xs:sequence> </xs:complexType><xs:attribute name="type" type="control-type" use="required"/> <xs:attribute name="name" type="xs:string" use="required"/> <xs:attribute name="enable" type="xs:boolean" use="required"/> <xs:attribute name="arrayIndex" type="xs:positiveInteger" use="required"/></xs:element> <xs:element name="stream"> <xs:complexType> <xs:sequence> <xs:element ref="parameter" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="floor" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="control" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="type" type="media-type" use="required"/> <xs:attribute name="name" type="xs:string" use="required"/> <xs:attribute name="dir" type="direction-type" use="required"/> <xs:attribute name="stream-id" type="xs:positiveInteger" use="optional"/> </xs:complexType> </xs:element> <xs:element name="LogicalStream"> <xs:complexType> <xs:attribute name="type" type="media-type" /> <xs:attribute name="name" type="logical-Streamtype" /> <xs:complexType> </xs:element> <xs:simpleType name="logical-streamType > <xs:restriction base="xs:string"> <xs:enumeration value="MainAudioIn"/> <xs:enumeration value="MainAudioOut"/> </xs:simpleType> <xs:simpleType name="media-type"> <xs:restriction base="xs:string"> <xs:enumeration value="audio"/><xs:enumeration value="video"/></xs:restriction> </xs:simpleType> <xs:simpleType name="direction-type"> <xs:restriction base="xs:string"> <xs:enumeration value="in"/> <xs:enumeration value="out"/> </xs:restriction> </xs:simpleType> <xs:element name="floor"> <xs:complexType> <xs:sequence> <xs:element ref="control" minOccurs="1" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="name" type="xs:string" use="required"/> <xs:attribute name="floor_id" type="xs:positiveInteger" use="required"/> <xs:attribute name="instances" type="xs:positiveInteger" use="required"/> <xs:attribute name="enable" type="xs:boolean" use="required"/> <xs:attribute name="value" type="xs:boolean" use="required"/> </xs:complexType> </xs:element> <xs:element name="control"> <xs:complexType> <element name="label" type="xs:string"/> <element name="value" type="control-value"/> </xs:complexType> <xs:attribute name="type" type="control-type" use="required"/> <xs:attribute name="name" type="xs:string" use="required"/> <xs:attribute name="enable" type="xs:boolean" use="required"/></xs:complexType></xs:element> <xs:simpleType name="control-value"> <xs:union> <xs:simpleType> <xs:restriction base="xs:real"/> </xs:simpleType> <xs:simpleType> <xs:restriction base="xs:boolean"/> </xs:simpleType> </xs:union> </xs:simpleType> <xs:simpleType name="control-type"> <xs:restriction base="xs:string"> <xs:enumerationvalue="integer"/> <xs:enumerationvalue="real"/> <xs:enumeration value="boolean"/> </xs:restriction> </xs:simpleType> </xs:schema>3.24.2. Advanced Audio Template3.2.1 Description The 'Advanced-Audio' template builds on the functionality provided by the 'Basic-Audio' template. Additional features include 'sidebar' support and the ability to output both 'mix-minus' style audio or the active speakers audio stream. 3.2.2 Roles Participant: The advanced audio template specifies the role of 'Participant' to signify an entry level user with no privileges by default. The participant role could obtain access to all controls available for this template if set accordingly by a privileged user. Access to the controls available to a participant can be controlled using floor control, as defined in [ref control draft]. Moderator: The advanced audio template specifies the role of 'Moderator' to signify a user with advanced privileges by default. The 'Moderator' role for this template has the same controls as a 'Participant' with an additional control for muting any participant in a conference instance and one for specifying the type of output mix (e.g. mix-minus or Active speaker). Another difference being that the default value for the 'enable' attribute on the 'mute' control on an output media stream is set to 'true'. See the individual control definitions for the impact of attribute settings. 3.2.3 Parameters max-particpants: The 'max-particpants' parameter specifies the maximum number of participants (Entity with signalling connection to the focus) that are permitted to be involved in an instantiated instance of the template (or sub-element, depending on where specified) for the specified role. The minimum value permitted is "1" and the maximum value permitted is "128". max-audio-streams: The 'max-streams' parameter specifies the maximum number of audio media streams that are permitted to be involved in an instantiated instance of the template for the specified role. The minimum value permitted is "1" and the maximum value permitted is "128". 3.2.4 Controls 3.2.4.1 mute The 'mute' control is used in conjunction with a media stream to cease transmission of associated media. It has a 'Boolean' value. The 'mute' control can exist in two forms, depending on if the control appears on input or output media streams. When appearing as a control on an input media stream, the control locally manipulates the clients media stream to be active or inactive. When muting locally, the control consists of the following attributes:- type: The 'mute' control has a type of 'Boolean'. name: The control is named 'mute'. default: Indicates the default value for the 'mute' control when not set. The attribute type is 'Boolean' with a default value of 'false'. Setting the 'mute' attribute to 'false' specifies that media should be transported for the associated media stream. When set to the value of 'true', media should not be transported for the associated media stream. enable: The enable attribute specifies if access to the control is available to the client. The value is of type 'boolean' and is set to 'true' as default. The 'mute' control can also appear on an output stream. This indicates that the mute will manipulate outgoing media streams from the mixer to alternative clients. When used in this instance, the attributes for the control are identical to that of the input definition with the exception that the 'enable' and 'default' values are both set to 'true'. This instance of the control defines an additional 'controlArray' that represents other participating clients. This provides a privileged user the ability to mute/un-mute media being distributed to every client defined. 3.2.4.2 MuteInputAudio 'MuteInputAudio' is a controlarray that is used in conjunction with media input streams of other participants and allows any input media stream of the participant to be muted. The moderator can use this control to mute any participant if it doesn't follows conference code. The controlArray enables a specific media stream to be muted by passing in the associated identifying number of the participant into the name attribute e.g. The first participant to enter the mix could be identified by the number '1' and so the operation 'MuteInoutAudio[1]' would result in the participant identified within the policy with a value of '1' being muted. The upper bound of the number being passed in is controlled by the 'max-participants' parameter value. 3.2.4.3 gain The 'gain' control is used in conjunction with a media output stream to indicate the amount of amplification of an audio stream. It has a 'Real' number value. The control consists of the following attributes:- type: The 'gain' control has a type of 'Real'. name: The control is named 'gain'. enable: The enable attribute specifies if access to the control is available to the client. default: Indicates the default value for the 'gain' control when not set. 3.2.4.4 MuteOutputAudio This controlarray is used by the moderator to mute the outgoing audio stream to a participant in case the participant is not confirming to the conference policy. The moderator can choose to set this control temporaraly till the participant follows conference rules. The controlarray enables a specific outgoing audio stream to be muted by passing in the associated identifying number of the participant into the name attribute e.g. The first participant to enter the conference would be identified by the number '1' and so the operation 'StopoutputText[1]' would result in the participant identified within the policy with a value of '1' not hearing the conference. The control type is boolean and the default value of the control when not set is false indicating that all participant get the text stream. 3.2.4.5 individual-stream-gain The 'individual-stream-gain' controlArray can be used in conjunction with an 'AudioOut-Mix' media stream. It allows the gain of individual audio media streams involved in the mix to be controlled. The controlArray enables gain to be controlled on a specific media stream by passing in the associated identifying number of the participant into the name attribute e.g. The first participant to enter the mix could be identified by the number '1' and so the operation 'individual-stream-gain[1]' would result in the media involved in the output mix, identified within the media policy with a value of '1', having it's gain adjusted. The upper bound of the number being passed in is controlled by the 'max-participants' parameter value. 3.2.4.6 MuteParticipantsfromMix The 'MuteParticipantsfromMix' controlArray is also used in conjunction with an 'AudioOut-Mix' media stream. It allows individual participants audio streams involved in the mix to be muted. Participants to be muted are selected in a similar manner to 'individual-stream-gain'control by passing in the associated identifying number of the participant into the name attribute e.g. The first participant to enter the mix could be identified by the number '1' and so the operation 'MuteParticipantsfromMix[1]' would result in the media involved in the output mix, identified within the media policy with a value of '1', being muted. The upper bound of the number being passed in is controlled by the 'max-participants' parameter value. 3.2.5 Streams The 'Advanced-Audio' Template consists of two audio streams: 3.2.5.1 AudioIn The 'AudioIn' media stream details properties associated with the incoming audio to the mixer. The 'AudioIn' stream has the following attributes: type: The stream type is 'audio'. name: The descriptive name for this stream is 'AudioIn'. dir: The direction of the stream is set to 'in'. 3.2.5.1.1 Floor The 'AudioIn' media stream consists of the following floor: 3.2.5.1.1.1 Send_audio The 'Send-audio' floor is associated with the 'AudioIn' stream. It provides a mechanism to control the input to a media mix. A participant with a role of 'Moderator' should always have floor preference - this is considered out of scope for this document. The following attributes are defined: floor_id: Uniquely identifies the floor within the context of this template and has a value of '1'. instances: Value of '1' implies only one occurrence of this floor at any one time. enable: A value of 'false' indicates that this floor is not enabled by default. value: A value of false specifies that the instance represented by this template does not have control of the floor. 3.2.5.2 AudioOut The 'AudioOut' media stream details properties associated with the outgoing audio from the mixer. Two types of AudioOut streams are defined based on the mix type. This gives the participant the ability to choose either the audio of the active speaker of the conference or can choose to hear the audio mix of all the participants(excluding itself). The 'AudioOut' stream has the following attributes: type: The stream type is 'audio'. name: The descriptive name for this stream is 'AudioOut'. dir: The direction of the stream is set to 'out'. 3.2.6 XML Definition <template name="Advanced-audio"> <parameter type="integer" name="max-participants" min="1" max="128"/> <parameter type="integer" name="max-audio-streams" min="1" max="128"/> <role name="Participant"> <parameter type="integer" name="max-participants" min="1" max="128"/> <parameter type="integer" name="max-audio-input-streams" min="1" max="1"/> <stream type="audio" name="AudioIn" dir="in"> <floor name="Send_audio" floor_id="1" instances="1" enable="true" value="false"> <control type ="boolean" name="mute" enable="true"> <label>Mute-Audio</label> <value>True</value> </control> </floor> </stream> <stream type="audio" name="AudioOut-ActiveSpeaker" dir="out"> <control type="real" name="gain" enable="true"> <label>Volume</label> <value>1.0</value> </control> </stream> <stream type="audio" name="AudioOut-Mix" dir="out"> <controlArray type="real" name="gain" index="0" enable="true" > <label>Volume</label> <value>1.0</value> </controlArray> <controlArray name=MuteParticipantsfromMix" index="0" type="boolean" enable="true"> <label>MuteParticipant</label> <value>False</value> </controlArray> </stream> </role> <role name="moderator"> <parameter type="integer" name="max-participants" min="0" max="1"/> <parameter type="integer" name="max-audio-input-streams" min="1" max="1"/> <controlArray name="MuteInputAudio" type="enumeration" index="0" enable="true" > <label>MuteInputAudio</label> <value>False</value> </controlArray> <controlArray name="MuteOutputAudio" type="enumeration" index="0" enable="true" > <label>MuteOutputAudio</label> <value>False</value> </controlArray> <stream type="audio" name="AudioIn" dir="in"> <floor name="Send_audio" floor_id="1" instances="1" enable="true" value="true"> <control type ="boolean" name="mute" enable="true"> <label>Mute-Audio</label> <value>True</value> </control> </floor> </stream> <stream type="audio" name="AudioOut-ActiveSpeaker" dir="out"> <control type="real" name="gain" enable="true"> <label>Volume</label> <value>1.0</value> </control> </stream> <stream type="audio" name="AudioOut-Mix" dir="out"> <controlArray type="real" name="gain" index="0" enable="true" > <label>Volume</label> <value>1.0</value> </controlArray> <controlArray name="MuteParticipantsfromMix" index="0" type="boolean" enable="true"> <label>MuteParticipant</label> <value>False</value> </controlArray> </stream> </role> </template> [Editors Note: Sidebar support to be added in next revision] 3.3TODO 4.3. Basic-Video Template3.3.14.3.1. Description The 'Basic-Video Template' is used to convey the basic set of video functionality. The template allows participants to send and receive video media with a control that allows input to be paused. The conference server chooses the output video stream for each participant based on local policy. The local policy for example can be active-speaker or the video of the host of the conference or the moderator of the conference. The template also defines a moderator role who has the ability to pause a users video input.3.3.24.3.2. Roles Participant: The basic video template specifies the role of 'Participant' to signify an entry level user with nopriviledgesprivileges by default. The participant role could obtain access to all controls available for this template if set accordingly by a privileged user. Moderator: The basic video template specifies the role of 'Moderator' to signify a user with advanced privileges by default. The 'Moderator' role for this template has exactly the same controls as a 'Participant'. The major difference being that the default value for the 'enable' attribute on the 'pause-video' control of the output video stream is set to 'false'.3.3.34.3.3. Parametersmax-participants:4.3.3.1. max-participants The 'max-participants' parameter specifies the maximum number of entities that are permitted to be involved in an instantiated instance of the template for the specified template category. The minimum value permitted is "1" and the maximum value permitted is "128". The parameter can appear at either a template or role level.max-video-streams:4.3.3.2. max-video-streams The 'max-video-streams' parameter specifies the maximum number of video media streams that are permitted to be involved in an instantiated instance of the template. The minimum value permitted is "1" and the maximum value permitted is "128". This parameter is required as participant of the mix can contribute more than one video stream.max-video-input-streams: The parameter "max-video-input-streams" indicates the number of input video streams each participant can inject into the conference. The convenor of the conference can set this value when instantiating a conference. This reduces the requirement to define multiple templates for a number of media stream of same type that participants can send to the conference. 3.3.44.3.4. Controls3.3.4.1 pause-video The 'pause-video' control is used in conjunction with a media stream to cease transmission of associated media. It has a 'Boolean' value. The 'pause-video' control consists of the following attributes:- type: The 'pause-video' control has a type of 'Boolean'. name: The control is named 'pause-video'. default: Indicates the default value forIn the'pause-video' control when not set. The attribute type is 'Boolean' withbasic-video template, adefault value of 'false. Setting the 'default' attribute to 'false' specifies that media should be transported for the associated media stream. When set to the value of 'true', media should not be transported for the associated media stream. enable: The enable attribute specifies if access to thepause-video control isavailable todefined which basically pauses theclient. The value is of type 'boolean' and is set to 'true' as default. 3.3.4.2 PauseInputVideo 'PauseInputVideo' is a controlarray that is used in conjuntion with video mediainputstreams of other participantsandallows to pause any input media streams from the participants. The moderator of the conference can use this control to pause the incoming video stream in casetheparticipant does not follow the conference code. The controlarray enables a specific videooutput streamto be paused by passing in the associated identifying number of the participant into the name attribute e.g. The first participant to enter the conference would be identified by the number '1'from andso the operation 'PauseInputVideo[1]' would result in the participant identified within the policy with a value of '1' being paused. This result would be such that this participants video would not be senttoany one inthe conferenceor would not be mixed in case the server is mixing the video streams. 3.3.4.3 PauseOutputVideo This controlarrayserver. It isused by the moderator to pause the outgoing video stream toexpected that for aparticipant in case the participant is not confirming to the conference policy. The moderator can choose to setvery basic video conferencing this controltemporaraly tillis sufficient. If theparticipant followsconferencerules. The controlarray enables a specific outgoing video stream to be paused by passing in the associated identifying number of the participant into the name attribute e.g. The first participantserver wants toenter the conference would be identified by the number '1' and so the operation 'StopoutputText[1]' would result in the participant identified within the policy with a value of '1' not seeing the conference. The control type is boolean and the default value of the control when not setsupport more advance features, then it isfalse indicatingrecommended thatall participant get the text stream. 3.3.5 Streams The 'Basic-Video Template' consists of two video streams: 3.3.5.1 VideoIn The 'VideoIn' media stream details properties associated with the incoming video to the mixer. The 'VideoIn' stream has the following attributes: type: The stream type is 'video'. name: The descriptive name for this stream is 'VideoIn'. dir: The direction of the stream is set to 'in'. 3.3.5.1.1 Floor 3.3.5.1.1.1 Send_Video The 'Send_Video' floor is associated with the 'VideoIn' stream. It provides a mechanism to control the Video input to a media mix. A participant with a role of 'Moderator' should always have floor preference - this is considered out of scope for this document. The following attributes are defined: floor_id: Uniquely identifies the floor within the context of thisadvance-video templateand has a value of '1'. instances: Value of '1' implies only one occurrence of this floor at any one time. enable: A value of 'false' indicates that this floor is not enabled by default. value: A value of 'false' specifies that the instance represented by thisto be used. In advance-video templatedoes not have control ofthefloor. A value of 'true' indicates conttrol of the floor. enable: A value of 'true' specifies that floor control is in operation while 'false' specifies that floor control is not in operation. 3.3.5.2 VideoOut The 'ViedoOut' media stream details properties associated with the outgoing audio from the mixer. The 'VideoOut' stream has the following attributes: type: The stream type is 'video'. name: The descriptive nameschema forthis stream is 'VideoOut'. dir: The direction of the streamcontrols isset to 'out'. 3.3.6 XML Definition <template name="basic-video"> <parameter type="integer" name="max-participants" min="1" max="128"/> <parameter type="integer" name="max-video-streams" min="1" max="128"/> <role name="Participant"> <parameter type="integer" name="max-participants" min="1" max="128"/> <parameter type="integer" name="max-video-input-streams" min="1" max="128"/> <stream type="video" name="VideoIn" dir="in"> <floor name="Send_Video" floor_id="1" instances="1" enable="true" value="false"> <control name ="pause-video" type="boolean" enable="true" > <label>Pause-Video</label> <value>False</value> </control> </floor> </stream> <stream type="video" name="VideoOut" dir="out"/> </role> <role name="Moderator"> <parameter type="integer" name="max-participants" min="0" max="1"/> <parameter type="integer" name="max-video-input-streams" min="1" max="128"/> <controlArray name="PauseInputVideo" index="0" type="boolean" enable="true"> <label>PauseInputVideo</label> <value>False</value> </controlArray> <controlArray name="PauseOutputAudio" index="0" type="boolean" enable="true"> <label>PauseOutputVideo</label> <value>False</value> </controlArray> <stream type="video" name="VideoIn" dir="in"> <floor name="Send_video" floor_id="1" instances="1" enable="true" value="true"> <control name ="pause-video" type="boolean" enable="true" > <label>Pause-Video</label> <value>False</value> </control> </floor> </stream> <stream type="video" name="VideoOut" dir="out"/> </role> </template> 3.4 Advanced Video Template 3.4.1 Description The 'Advanced-Video Template' builds onextensible, hence new control types can be defined. Issue : For the basicset of video functionality to provide a set of advanced features. The template allows provides additional functionality which includes the specification of layout associated with a participants output stream and the ability to select an individual output source from the list participants. 3.4.2 Roles Participant: The advanced video template specifies the role of 'Participant' to signify an entry level user with no privileges by default. The participant role could obtain access to all controls available for this template if set accordingly by a privileged user. Moderator: The advancedvideo templatespecifieswe are restricting theroletype of'Moderator' to signify a user with advanced privileges by default. The 'Moderator' role for this template has exactlythesame controls as a 'Participant'. The major difference being that the default value for the 'enable' attribute on the 'pause-video' and 'Layout' controls are setcontrol to'true'. 3.4.3 Parameters max-participants:boolean (for pause-video control). The'max-participants' parameter specifies the maximum number of entities that are permitted to be involved in an instantiated instance of the templatereason forthe specified template category. The minimum value permitteddoing is"1" andthemaximum value permitted is "128". The parameterbasic-audio canappear at either a templateonly have very basic control like pause- video. Should we keep the restriction orrole level. max-video-streams: The 'max-video-streams' parameter specifieslet themaximum number of video media streams that are permittedcapability tobe involveddefine new control inan instantiated instance of thebasic-video template.The minimum value permitted is "1" and the maximum value permitted is "128". This parameter is required as participant of the mix can contribute more than one video stream. max-video-input-streams: The parameter "max-video-input-streams" indicates the number of input video streams each participant can inject into the conference. The convener of the conference can set this value when instantiating a conference. This reduces the requirement to define multiple templates for a number of media stream of same type that participants can send to the conference. 3.4.4 Controls 3.4.4.14.3.4.1. pause-video The 'pause-video' control is used in conjunction with a media stream to cease transmission of associated media. It has a 'Boolean' value. The 'pause-video' control consists of the following attributes:- type: The 'pause-video' control has a type of 'Boolean'. name: The control is named 'pause-video'. default: Indicates the default value for the 'pause-video' control when not set. The attribute type is 'Boolean' with a default value of 'false. Setting the 'default' attribute to 'false' specifies that media should be transported for the associated media stream. When set to the value of 'true', media should not be transported for the associated media stream. enable: The enable attribute specifies if access to the control is available to the client. The value is of type'boolean'. 3.4.4.2 Layout The 'Layout' control'boolean' and isused in conjunction with an output video streamset todefine'true' as default. 4.3.5. Control Array In thevideo layout configuration. It has a 'enumeration' value which provides various tile formats for video display.basic-video template, two logical streams are defined - mainvideoIn, mainvideoOut. The'Layout' control consistsmainvideoIn comprises of thefollowing attributes:- name: The control is named 'Layout' type: The 'Layout' control has a type of 'enumeration'. enable: The enable attribute specifies if access toinput video stream from thecontrol is available toparticipants and theclient. The value ismainvideoout stream comprises oftype 'boolean'. default: The default value for this control is '0'. 3.4.4.3 SourceSelector The 'SourceSelector' control is used in conjunction with anthe output video streamto define which video media stream are contributing tofrom theoutput mix. It has a 'enumeration' value which provides a list format containingserver to themediaparticipants.The List element is described in [1]. The 'SourceSelector' control consistsFor the role of moderator, two controlArrays are defined which defines thefollowing attributes:- name: The control is named 'SourceSelector' type: The 'SourceSelector'controlhas a typepause-video for each of'enumeration'. enable: The enable attribute specifies if access tothecontrol is available tological streams. With theclient. The value ishelp oftype 'boolean'. default: The default value forthiscontrol is '1'. 3.4.4.4 PauseInputVideo 'PauseInputVideo' is a controlarray that is used in conjunction with video media input streams of other participants and allows to pause any input media streams fromcontrols, theparticipants. Themoderatorof the conferencecanuse this control topausethe incoming video stream in case the participant does not follow the conference code. The controlarray enables a specific video stream to be paused by passing in the associated identifying number of the participant into the name attribute e.g. The first participant to enter the conference would be identified by the number '1' and so the operation 'PauseInputVideo[1]' would result in the participant identified within the policy with a value of '1' being paused. This result would be such that thisany participants videowould not be sent to any one in the conference or would not bebeing mixed incasethe serveris mixing the video streams. 3.4.4.5 PauseOutputVideo This controlarray is used by the moderator to pause the outgoing video stream to a participant in case the participant is not confirming to the conference policy. The moderatorand canchoose to set this control temporaraly until the participant follows conference rules. The controlarray enables a specific outgoingpause any output video stream tobe paused by passing in the associated identifying numberany of theparticipant into the name attribute e.g. The first participant to enter the conference would be identified by the number '1' and so the operation 'StopoutputText[1]' would result in the participant identified within the policy with a valueparticipants of'1' not seeingthe conference.The control type is boolean and the default value of the control when not set is false indicating that all participant get the text stream. 3.4.54.3.6. Streams The'Advanced-Video'Basic-Video Template' consists of two video streams:3.4.5.14.3.6.1. VideoIn The 'VideoIn' media stream details properties associated with the incoming video to the mixer. The 'VideoIn' stream has the following attributes: type: The stream type is 'video'. name: The descriptive name for this stream is 'VideoIn'. dir: The direction of the stream is set to 'in'.3.4.5.1.1stream-id : The unique identifier of the stream. 4.3.6.1.1. Floor3.4.5.1.1.14.3.6.1.1.1. Send_Video The 'Send_Video' floor is associated with the 'VideoIn' stream. It provides a mechanism to control the Video input to a media mix. A participant with a role of 'Moderator' should always have floor preference - this is considered out of scope for this document. The following attributes are defined: floor_id: Uniquely identifies the floor within the context of this template and has a value of '1'. instances: Value of '1' implies only one occurrence of this floor at any one time. enable: A value of 'false' indicates that this floor is not enabled by default. value: A value of 'false' specifies that the instance represented by this template does not have control of the floor. A value of 'true' indicatescontrolconttrol of the floor. enable: A value of 'true' specifies that floor control is in operation while 'false' specifies that floor control is not in operation.3.4.5.24.3.6.2. VideoOut The 'ViedoOut' media stream details properties associated with the outgoing audio from the mixer. The 'VideoOut' stream has the following attributes: type: The stream type is 'video'. name: The descriptive name for this stream is 'VideoOut'. dir: The direction of the stream is set to 'out'.3.4.6stream-id : The unique identifier of the stream. 4.3.7. Blueprint - XMLDefinitionExample <templatename="advanced-video">name="basic-video"> <parameter type="integer" name="max-participants" value ="1" min="1" max="128"/> <parameter type="integer" name="max-video-streams" value="1" min="1" max="128"/><list name="participants[1:%maxparticipants]"/><role name="Participant"> <parameter type="integer" name="max-participants"min="1" max="128"/> <parameter type="integer" name="max-video-input-streams"value="1" min="1" max="128"/> <stream type="video" name="VideoIn" dir="in"> <floor name="Send_Video" floor_id="1" instances="1" enable="true" value="false"> <control name ="pause-video" type="boolean" enable="true" > <label>Pause-Video</label> <value>False</value> </control> </floor> </stream> <stream type="video" name="VideoOut"dir="out"> <control name="Layout" type="select1" enable="false"> <label>Video-Layout</label> <value>0</value> <item> <label> 1x1</label> <value> 0 </value> </item> <item> <label> 2x2</label> <value> 1 </value> </item> <item> <label> 3x3</label> <value> 2 </value> </item> <item> <label> 4x4</label> <value> 3 </value> </item> </control> <control name="sourceSelector" type="enumeration" enable="false" default="1" > <item label="%participants[*]" value="*"/> </control> </stream>dir="out"/> </role> <role name="Moderator"> <parameter type="integer" name="max-participants" value="1" min="0"max="128"/> <parameter type="integer" name="max-video-input-streams" min="0" max="128"/> <controlArray name="PauseInputVideo" index="0"max="1"/> <controlArray> <LogicalStream type="video" name="MainVideoIn" /> <control type="boolean"enable="true">name="pause-video" enable="false"> <label>PauseInputVideo</label> <value>False</value> </control> </controlArray><controlArray name="PauseOutputAudio" index="0"<controlArray> <LogicalStream type="video" name="MainVideoOut" /> <control type="boolean"enable="true">name="pause-video" enable="false"> <label>PauseOutputVideo</label> <value>False</value> </control> </controlArray> <stream type="video" name="VideoIn" dir="in"> <floorname="Send_Video"name="Send_video" floor_id="1" instances="1" enable="true" value="true"> <control name ="pause-video" type="boolean" enable="true" > <label>Pause-Video</label> <value>False</value> </control> </floor> </stream> <stream type="video" name="VideoOut"dir="out"> <control name="Layout" type="enumeration" enable="true" default="0"> <item label="1x1" value="0"/> <item label="2x1" value="1"/> <item label="1x2" value="2"/> <item label="2x2" value="3"/> <item label="3x3" value="4"/> </control> <control name="sourceSelector" type="enumeration" enable="true" default="1" > <item label="%participants[*]" value="*"/> </control> </stream>dir="out"/> </role> </template>[Editors Note: Sidebar support to be added in next revision] 3.54.3.8. XML Schema Definition This section provides the XML schema definition for the 'Basic-Video' template. <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:role="urn:ietf:params:xml:ns:role-schema"> <import namespace="urn:ietf:params:xml:ns:role-schema" /> <xs:element name="template-basic-video> <xs:complexType> <xs:sequence> <xs:element ref="parameter" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="role" minOccurs="1" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="parameter"> <xs:complexType> <xs:attribute name="type" type="parameter-defined" use="required"/> <xs:attribute name="name" type="parameter-name" use="required"/> <xs:attribute name="value" type="parameter-value" use="required"/> <xs:attribute name="min" type="xs:positiveInteger" use="optional"/> <xs:attribute name="max" type="xs:positiveInteger" use="optional"/> </xs:complexType> </xs:element> <xs:simpleType name="parameter-value"> <xs:union> <xs:simpleType> <xs:restriction base="xs:integer"/> </xs:simpleType> <xs:simpleType> <xs:restriction base="xs:real"/> </xs:simpleType> <xs:simpleType> <xs:restriction base="xs:enumeration"/> </xs:simpleType> </xs:union> </xs:simpleType> <xs:simpleType name="parameter-defined"> <xs:restriction base="xs:string"> <xs:enumeration value="integer"/> <xs:enumeration value="real"/> <xs:enumeration value="enumeration"/> </xs:restriction> </xs:simpleType> <xs:element name="role"> <xs:complexType> <xs:sequence> <xs:element ref="parameter" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="controlArray" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="stream" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="name" type="rtype" use="required"/> </xs:complexType> </xs:element> <xs:simpleType name="rtype"> <xs:restriction base="role:role-type"> <xs:enumeration value="Participant"/> <xs:enumeration value="Moderator"/> </xs:restriction> </xs:simpleType> <xs:element name="controlArray"> <xs:complexType> <xs:sequence> <xs:element ref="LogicalStream" minoccurs="1" maxoccurs="unbounded" /> <xs:element ref="control" minoccurs="1" maxoccurs="1"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="stream"> <xs:complexType> <xs:sequence> <xs:element ref="parameter" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="floor" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="control" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="type" type="media-type" use="required"/> <xs:attribute name="name" type="xs:string" use="required"/> <xs:attribute name="dir" type="direction-type" use="required"/> <xs:attribute name="stream-id" type="xs:positiveInteger" use="optional"/> </xs:complexType> </xs:element> <xs:element name="LogicalStream"> <xs:complexType> <xs:attribute name="type" type="media-type" /> <xs:attribute name="name" type="logical-Streamtype" /> <xs:complexType> </xs:element> <xs:simpleType name="logical-streamType > <xs:restriction base="xs:string"> <xs:enumeration value="MainVideoIn"/> <xs:enumeration value="MainVideoOut"/> </xs:simpleType> <xs:simpleType name="media-type"> <xs:restriction base="xs:string"> <xs:enumeration value="video"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="direction-type"> <xs:restriction base="xs:string"> <xs:enumeration value="in"/> <xs:enumeration value="out"/> </xs:restriction> </xs:simpleType> <xs:element name="floor"> <xs:complexType> <xs:sequence> <xs:element ref="control" minOccurs="1" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="name" type="xs:string" use="required"/> <xs:attribute name="floor_id" type="xs:positiveInteger" use="required"/> <xs:attribute name="instances" type="xs:positiveInteger" use="required"/> <xs:attribute name="enable" type="xs:boolean" use="required"/> <xs:attribute name="value" type="xs:boolean" use="required"/> </xs:complexType> </xs:element> <xs:element name="control"> <xs:complexType> <element name="label" type="xs:string"/> <element name="value" type="xs:boolean"/> </xs:complexType> <xs:attribute name="type" type="control-type" use="required"/> <xs:attribute name="name" type="xs:string" use="required"/> <xs:attribute name="enable" type="xs:boolean" use="required"/> </xs:element> <xs:simpleType name="control-type"> <xs:restriction base="xs:string"> <xs:enumeration value="boolean"/> </xs:restriction> </xs:simpleType> </xs:schema> 4.4. Advanced Video Template TODO 4.5. Basic Text Template3.5.14.5.1. Description The Basic-Text template can be used to achieve the simplest form of interaction between multiple text input streams from participating entities. The output stream will consist of allinoutinput messages except those injected by the participant in question. Controls are defined to limit who can inject into a conference and a privilege user has the ability to block participants receiving outgoing media.3.5.24.5.2. Roles Participant: The basic audio template specifies the role of 'Participant' to signify an entry level user with no privileges by default. The participant role could obtain access to all controls available for this template if set accordingly by a privileged user. Access to the controls available to a participant can be controlled using floorcontrol, as defined in [ref control draft].element. Moderator: The basic audio template specifies the role of 'Moderator' to signify a user with advanced privileges by default. The 'Moderator' role for this template has thethesame controls as a'Participant' with an additional control for muting'Participant'. The moderator also has the capability to block anyparticipant in a conference instance. Another differenceinput stream from beingthat the default value formixed in the'enable' attribute onoutput stream and can also block the'mute' control on anoutputmediastreamis setto'true'.any participant. See the individual control definitions forithe mpactthe impact of attribute settings.3.5.34.5.3. Parameters max-participants: The 'max-particpants' parameter specifies the maximum number of participants (Entity with signalling connection to the focus) that are permitted to be involved in an instantiated instance of the template (or sub-element, depending on where specified) for the specified role. The minimum value permitted is "1" and the maximum value permitted is "128".3.5.44.5.4. Controls3.5.4.1 block-incoming4.5.4.1. block The'block-incoming''block' control is used in conjunction with a input (and output) stream from a participant (and from the conference server) to cease transmission of associated media. It has a 'Boolean' value. The'block-incoming''block' control consists of the following attributes:- type: The'block-incoming''block' control has a type of 'Boolean'. name: The control is named'block-incoming'.'block'. default: Indicates the default value for the'block-incoming''block' control when not set. The attribute type is 'Boolean' with a default value of 'false'. Setting the 'block-incoming' attribute to 'false' specifies that media should be transported for the associated media stream. When set to the value of 'true', media should not be transported for the associated media stream. enable: The enable attribute specifies if access to the control is available to the client. The value is of type 'boolean' and is set to 'true' as default.3.5.4.2 StopoutputText This controlarray is used by4.5.5. Control Array In themoderator to blockbasic-text template, two logical streams are defined - mainTextIn, mainTextOut. The mainTextIn comprises of theoutgoinginput text streamto a particular participant iffrom theparticipant doesnt follow conference rules. The moderator can choose to set this control temporaraly tillparticipants and theparticipant follows conference rules. The controlarray enables a specific outgoing textmaintextout streamto be stopped by passing in the associated identifying numbercomprises of theparticipant intooutput text stream from thename attribute e.g. The first participantserver toentertheconference would be identified by the number '1' and so the operation 'StopoutputText[1]' would result in the participant identified withinparticipants. For thepolicy with a valuerole of'1' not getting any text media. The control type is boolean andmoderator, two controlArrays are defined which defines thedefault valuecontrol "block" for each of thecontrol when not set is false indicating that all participant getlogical streams. With thetext stream. 3.5.4.3 StopinputText This controlarray is used byhelp of this controls, the moderatortocan blockthe incomingany participants text stream froma particular participant uf the participant doesnt follow the conference rules. This will resultbeing mixed in theparticipants input text media not to distributed to other participants in conference mix. The controlarray enables a specific incomingserver and can block any output text stream tobe not be mixed in the conference mix by passing the associated identifying number of the participant into the name attribute e.g. The first participant to enter the conference would be identified by the number '1' and so the operation 'StopinputText[1]' would result in the participant identified within the policy with a valueany of'1', its text media not being mixed. The control type is boolean andthedefault valueparticipants of thecontrol when not set is false indicating that all participant text stream is mixed. 3.5.5conference. 4.5.6. Streams The 'Basic-Text' Template consists of two text media streams:3.5.5.14.5.6.1. TextIn The 'TextIn' media stream details properties associated with the incoming text to the mixer. The 'TextIn' stream has the following attributes: type: The stream type is 'text'. name: The descriptive name for this stream is 'TextIn'. dir: The direction of the stream is set to 'in'.3.5.5.1.14.5.6.1.1. Floor3.5.5.1.1.1 Right_to_inject4.5.6.1.1.1. send_text The'Right_to_inject''send_text' floor is associated with the 'TextIn' stream. It provides a mechanism to control the text input to a text media mix. A participant with a role of 'Moderator' should always have floor preference - this is considered out of scope for this document. The following attributes are defined: floor_id: Uniquely identifies the floor within the context of this template and has a value of '1'. instances:IndicatestheIndicates the number of occurrences of this floor at any one time. enable: A value of 'false' indicates that this floor is not enabled. A value of 'true' indicates that this floor is enabled. value: A value of 'false' specifies that the instance represented by this template does not have control of the floor. A value of 'true' indicates control of the floor.3.5.5.24.5.6.2. TextOut The 'TextOut' media stream details properties associated with the outgoing text media from the mixer. The 'TextOut' stream has the following attributes: type: The stream type is 'text'. name: The descriptive name for this stream is 'TextOut'. dir: The direction of the stream is set to 'out'.3.5.64.5.7. Blueprint - XMLDefinitionExample <template name="basic-text"> <parameter type="integer" name="max-participants" min="1" max="128"/><list name="participants[1:%maxparticipants]"/><role name="Participant"> <parameter type="integer" name="max-participants" value="1" min="1" max="128"/> <stream type="text" name="TextIn" dir="in"> <floorname="Right_to_inject"name="send_text" floor_id="1" instances="1" enable="true" value="false"> <control type ="boolean"name="block_incoming"name="block" enable="true"> <label>Block-Incoming-Text</label> <value>True</value> </control> </floor> </stream> <stream type="text" name="TextOut" dir="out"/> </role> <role name="moderator"> <parameter type="integer" name="max-participants" value="0" min="1" max="128"/><controlArray name="StopOutputText"<controlArray> <LogicalStream name="MainTextIn" type="Text"/> <control name="block" type="boolean"index="0" enable="true" > <label>Stop-Output-Text</label>enable="false"> <label>Stop-Input-Text</label> <value>False</value> </control> </controlArray><controlArray name="StopInputText"<controlArray> <LogicalStream name="MainTextOut" type="Text" /> <control name="block" type="boolean"index="0" enable="true" > <label>StopInputText</label>enable="false"> <label>StopOutputText</label> <value>False</value> </control> </controlArray> <stream type="text" name="TextIn" dir="in"> <floor name="Right_to_inject" floor_id="1" instances="1" enable="true" value="true"> <control type ="boolean"name="block_incoming"name="block" enable="true"> <label>Block-Incoming-Text</label> <value>False</value> </control> </floor> </stream> <stream type="text" name="TextOut" dir="out"/> </role> </template>3.64.5.8. XML Schema Definition This section provides the XML schema definition for the 'Basic-Text' template. <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:role="urn:ietf:params:xml:ns:role-schema"> <import namespace="urn:ietf:params:xml:ns:role-schema" /> <xs:element name="template-basic-text"> <xs:complexType> <xs:sequence> <xs:element ref="parameter" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="role" minOccurs="1" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="parameter"> <xs:complexType> <xs:attribute name="type" type="parameter-defined" use="required"/> <xs:attribute name="name" type="xs:string" use="required"/> <xs:attribute name="value" type="parameter-value" use="required"/> <xs:attribute name="min" type="xs:positiveInteger" use="optional"/> <xs:attribute name="max" type="xs:positiveInteger" use="optional"/> </xs:complexType> </xs:element> <xs:simpleType name="parameter-value"> <xs:union> <xs:simpleType> <xs:restriction base="xs:integer"/> </xs:simpleType> <xs:simpleType> <xs:restriction base="xs:real"/> </xs:simpleType> <xs:simpleType> <xs:restriction base="xs:enumeration"/> </xs:simpleType> </xs:union> </xs:simpleType> <xs:simpleType name="parameter-defined"> <xs:restriction base="xs:string"> <xs:enumeration value="integer"/> <xs:enumeration value="real"/> <xs:enumeration value="enumeration"/> </xs:restriction> </xs:simpleType> <xs:element name="role"> <xs:complexType> <xs:sequence> <xs:element ref="parameter" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="controlArray" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="stream" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="name" type="rtype" use="required"/> </xs:complexType> </xs:element> <xs:simpleType name="rtype"> <xs:restriction base="role:role-type"> <xs:enumeration value="Participant"/> <xs:enumeration value="Moderator"/> </xs:restriction> </xs:simpleType> <xs:element name="controlArray"> <xs:complexType> <xs:sequence> <xs:element ref="LogicalStream" minoccurs="1" maxoccurs="unbounded" /> <xs:element ref="control" minoccurs="1" maxoccurs="1"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="stream"> <xs:complexType> <xs:sequence> <xs:element ref="parameter" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="floor" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="control" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="type" type="media-type" use="required"/> <xs:attribute name="name" type="xs:string" use="required"/> <xs:attribute name="dir" type="direction-type" use="required"/> <xs:attribute name="stream-id" type="xs:positiveInteger" use="optional"/> </xs:complexType> </xs:element> <xs:element name="LogicalStream"> <xs:complexType> <xs:attribute name="type" type="media-type" /> <xs:attribute name="name" type="logical-Streamtype" /> <xs:complexType> </xs:element> <xs:simpleType name="logical-streamType > <xs:restriction base="xs:string"> <xs:enumeration value="MainTextIn"/> <xs:enumeration value="MainTextOut"/> </xs:simpleType> <xs:simpleType name="media-type"> <xs:restriction base="xs:string"> <xs:enumeration value="text"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="direction-type"> <xs:restriction base="xs:string"> <xs:enumeration value="in"/> <xs:enumeration value="out"/> </xs:restriction> </xs:simpleType> <xs:element name="floor"> <xs:complexType> <xs:sequence> <xs:element ref="control" minOccurs="1" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="name" type="xs:string" use="required"/> <xs:attribute name="floor_id" type="xs:positiveInteger" use="required"/> <xs:attribute name="instances" type="xs:positiveInteger" use="required"/> <xs:attribute name="enable" type="xs:boolean" use="required"/> <xs:attribute name="value" type="xs:boolean" use="required"/> </xs:complexType> </xs:element> <xs:element name="control"> <xs:complexType> <element name="label" type="xs:string"/> <element name="value" type="control-value"/> </xs:complexType> <xs:attribute name="type" type="control-type" use="required"/> <xs:attribute name="name" type="xs:string" use="required"/> <xs:attribute name="enable" type="xs:boolean" use="required"/> </xs:element> <xs:simpleType name="control-type"> <xs:restriction base="xs:string"> <xs:enumeration value="boolean"/> </xs:restriction> </xs:simpleType> </xs:schema> 4.6. Advanced Text Template3.6.1 Description [Editors Note: To be completed in the next revision of this draft] 3.6.2 Roles 3.6.3 Parameters 3.6.4 Controls 3.6.5 Streams 3.6.6 XML Definition [Editors Note: Sidebar support to be added in next revision] 3.7TODO 4.7. Basic Audio-Video Template3.7.14.7.1. Description Theadvance audio-videoBasic Audio-Video template enables a conferencewithto provide both audio and videoand gives some advance controlsinteractions between entities that provide input stream tothea Conference mix. The Audio and Video output streams consist of a mix of all participants audio and video input. This particular template and definition creates a union of functionality from theconference.basic audio and basic video templates. 4.7.2. Roles 4.7.2.1. Participant The basic Audio-Video template specifies the role of 'Participant' to signify an entry level user with no privileges by default. The participant role could obtain access to all controlsprovidedavailable for this template if set accordingly by a privileged user. This is achieved during the blueprint creation phase by setting the enable attribute of the control element to TRUE. 4.7.2.2. Moderator The basic Audio-Video template specifies theparticipants in this templates are similarrole of 'Moderator' to signify a user with advanced privileges by default. The 'Moderator' role for this template has theone defined in advancesame controls as a 'Participant' with an additional controls for muting audio andadvancestopping videotemplates. 3.7.2 Roles 3.7.3for any participant in a conference instance. Another primary difference between a 'Participant' and a 'Moderator' being that the default value for the 'enable' attribute on the 'mute' and 'pause-video' controls on an output media stream is set to 'true'. See the individual control definitions for the impact of attribute settings. 4.7.3. Parameters3.7.44.7.3.1. max-participants See Section 4.1.3.1 for definition. 4.7.3.2. max-audio-streams See Section 4.1.3.2 for definition. 4.7.3.3. max-video-streams See Section 4.3.3.2 for definition. 4.7.4. Controls3.7.54.7.4.1. mute See Section 4.1.4.1 for definition. 4.7.4.2. pause-video See Section 4.3.4.1 for definition. 4.7.4.3. gain See Section 4.1.4.2 for definition. 4.7.5. Control Array See Section 4.1.5 for information relating to audio Control arrays and Section 4.3.5 for information relating to video related Control arrays in this template. 4.7.6. Streams3.7.6The 'Basic Audio-Video Template' consists of two audio streams: 4.7.6.1. AudioIn See Section 4.1.6.1 for definition. 4.7.6.2. AudioOut See Section 4.1.6.2 for definition. The 'Basic Audio-Video Template' consists of two video streams: 4.7.6.3. VideoIn See Section 4.3.6.1 for definition. 4.7.6.4. VideoOut See Section 4.3.6.2 for definition. 4.7.7. Blueprint - XMLDefinitionExample <templatename="audio-video">name="basic-audio-video"> <parameter type="integer" name="max-participants" value="1" min="1" max="128"/> <parameter type="integer" name="max-audio-streams" value="1" min="1" max="128"/> <parameter type="integer" name="max-video-streams" value="1" min="1" max="128"/> <role name="Participant"> <parameter type="integer" name="max-participants" value="1" min="1" max="128"/><parameter type="integer" name="max-audio-input-streams" min="1" max="1"/> <parameter type="integer" name="max-video-input-streams" min="1" max="2"/> <list name="participants[1:%maxparticipants]"/><stream type="audio" name="AudioIn" dir="in"> <floor name="Send_audio" floor_id="1" instances="1" enable="true" value="false"> <control type ="boolean" name="mute" enable="true"><label>Mute-Audio</label><label> Mute-Audio </label> <value>True</value> </control> </floor> </stream> <stream type="video" name="VideoIn" dir="in"> <floor name="Send_Video"floor_id="2"floor_id="1" instances="1" enable="true" value="false"> <control name ="pause-video" type="boolean" enable="true" > <label>Pause-Video</label><value>True</value><value>False</value> </control> </floor> </stream> <stream type="audio"name="AudioOut-ActiveSpeaker"name="AudioOut" dir="out"> <control type="real" name="gain" enable="true" > <label>Volume</label><value>1.0</value><value>0</value> </control> </stream> <streamtype="audio" name="AudioOut-Mix" dir="out"> <controlArray type="real" name="gain" index="0" enable="true" > <label>Volume</label> <value>1.0</value> </controlArray> <controlArray name="MuteParticipantsfromMix" index="0" type="boolean" enable="true"> <label>MuteParticipant</label> <value>False</value> </controlArray> </stream> <streamtype="video" name="VideoOut"dir="out"> <control name="Layout" type="enumeration" enable="false" default="0"> <item label="1x1" value="0"/> <item label="2x1" value="1"/> <item label="1x2" value="2"/> <item label="2x2" value="3"/> <item label="3x3" value="4"/> </control> <control name="sourceSelector" type="enumeration" enable="false" default="0" > <item label="Voice_Activated-Switching" value="0"/> <item label="%participants[*]" value="*"/> </control> </stream>dir="out"/> </role> <role name="moderator"> <parameter type="integer" name="max-participants" value="0" min="0"max="1"/> <parameter type="integer" name="max-audio-input-streams" min="1" max="1"/> <parameter type="integer" name="max-video-input-streams" min="1" max="2"/> <controlArray name="MuteInputAudio" type="enumeration" index="0" enable="true" > <label>MuteInputAudio</label> <value>False</value> </controlArray> <controlArray name="PauseInputVideo" type="enumeration" index="0" enable="true" > <label>PauseInputVideo</label> <value>False</value> </controlArray>max="128"/> <controlArrayname="MuteOutputAudio" type="enumeration" index="0" enable="true"><label>MuteOutputAudio</label> <value>False</value> </controlArray> <controlArray name="PauseOutputVideo" type="enumeration" index="0" enable="true"> <label>PauseOutputVideo</label> <value>False</value> </controlArray> <stream<LogicaStream type="audio"name="AudioIn" dir="in"> <floor name="Send_audio" floor_id="1" instances="1" enable="true" value="true">name="MainAudioIn" /> <controlname ="pause-video"type="boolean"enable="true" > <label>Pause-Video</label>name="mute" enable="false"> <label>MuteInputAudio</label> <value>False</value> </control></floor> </stream> <stream type="audio" name="AudioOut-ActiveSpeaker" dir="out"> <control type="real" name="gain" enable="true" > <label>Volume</label> <value>1.0</value> </control> </stream> <stream type="audio" name="AudioOut-Mix" dir="out"> <controlArray type="real" name="gain" index="0" enable="true" > <label>Volume</label> <value>1.0</value></controlArray><controlArray name="MuteParticipantsfromMix" index="0" type="boolean" enable="true"> <label>MuteParticipant</label> <value>False</value> </controlArray> </stream> <stream<controlArray> <LogicalStream type="video"name="VideoIn" dir="in"> <floor name="Send_video" floor_id="2" instances="1" enable="true" value="true">name="MainVideoIn" /> <controlname ="pause-video"type="boolean" name="pause-video" enable="false"><label>Pause-Video</label><label>PauseInputVideo</label> <value>False</value> </control></floor> </stream> <stream type="video" name="VideoOut" dir="out"> <control name="Layout" type="enumeration" enable="true" default="0"> <item label="1x1" value="0"/> <item label="2x1" value="1"/> <item label="1x2" value="2"/> <item label="2x2" value="3"/> <item label="3x3" value="4"/> </control> <control name="sourceSelector" type="enumeration" enable="true" default="0" > <item label="Voice_Activated-Switching" value="0"/> <item label="%participants[*]" value="*"/> </control> </stream> </role> </template> [Editors Note: Sidebar support to be added in next revision] 3.8 audio-text Template 3.8.1 Description The advance audio-text template enables a conference with audio and text with some advance controls to the participants of the conference. The controls provided to the participants in this templates are similar to the one defined in advance audio and advance text templates. An additional control called 'close-captioning'is defined for receiving a text stream for the audio mix from the conference. 3.8.2 Roles **/ same as defined in advance audio and text templates in section 3.2.2 and 3.5.2 **/ 3.8.3 Parameters **/ same parameter as defined in audio audio and text template. **/ 3.8.4 Controls **/ This templates uses the same controls as defined in audio and text templates. One new control is defined for this template. **/ 3.8.4.1 close-captioning The close captioning control enables a participant to receive a text stream for the audio mix of the conference. This control is useful in case the quality of the audio is not good or for hearing impaired participant. The 'close-captioning' control consists of the following attributes:- name: The control is named 'close-captioning' type: boolean'. enable: The enable attribute specifies if access to the control is available to the client. The value is of type 'boolean'. default: The default value for this control is false. 3.8.5 Streams **/ Same as in advance audio and text templates **/ 3.8.6 XML Definition <template name="audio-text"> <parameter type="integer" name="max-participants" min="1" max="128"/> <parameter type="integer" name="max-audio-streams" min="1" max="128"/> <role name="Participant"> <parameter type="integer" name="max-participants" min="1" max="128"/> <parameter type="integer" name="max-audio-input-streams" min="1" max="1"/> <stream</controlArray> <controlArray> <LogicalStream type="audio"name="AudioIn" dir="in"> <floor name="Send_audio" floor_id="1" instances="1" enable="true" value="false">name="MainAudioOut" /> <controltype ="boolean"name="mute"enable="true"> <label>Mute-Audio</label> <value>True</value> </control> </floor> </stream> <stream type="text" name="TextIn" dir="in"> <floor name="Right_to_inject" floor_id="2" instances="1" enable="true" value="false"> <control type ="boolean" name="block_incoming" enable="true"> <label>Block-Incoming-Text</label> <value>True</value> </control> </floor> </stream> <stream type="text" name="TextOut" dir="out"/> <stream type="audio" name="AudioOut-ActiveSpeaker" dir="out"> <control type="real" name="gain" enable="true"> <label>Volume</label> <value>1.0</value> </control> <controltype="boolean"name="close-captioning"enable="false"><label>Close-Captioning</label><label>MuteOutputAudio</label> <value>False</value> </control></stream> <stream type="audio" name="AudioOut-Mix" dir="out"> <controlArray type="real" name="gain" index="0" enable="true" > <label>Volume</label> <value>1.0</value> </controlArray> <controlArray name="MuteParticipantsfromMix" index="0" type="boolean" enable="true"> <label>MuteParticipant</label> <value>False</value></controlArray> <controlArray> <LogicalStream type="video" name="MainVideoOut" /> <control type="boolean"name="close-captioning"name="pause-video" enable="false"><label>Close-Captioning</label><label>PauseOutputVideo</label> <value>False</value> </control></stream> </role> <role name="moderator"> <parameter type="integer" name="max-participants" min="0" max="1"/> <parameter type="integer" name="max-audio-input-streams" min="1" max="1"/> <controlArray name="MuteInputAudio" type="enumeration" index="0" enable="true" > <label>MuteInputAudio</label> <value>False</value> </controlArray> <controlArray name="MuteOutputAudio" type="enumeration" index="0" enable="true" > <label>MuteOutputAudio</label> <value>False</value> </controlArray> <controlArray name="StopOutputText" type="boolean" index="0" enable="true" > <label>Stop-Output-Text</label> <value>False</value> </controlArray> <controlArray name="StopInputText" type="boolean" index="0" enable="true" > <label>StopInputText</label> <value>False</value></controlArray> <stream type="audio" name="AudioIn" dir="in"> <floor name="Send_audio" floor_id="1" instances="1" enable="true" value="true"> <control type ="boolean" name="mute" enable="true"><label>Mute-Audio</label> <value>False</value><label> Mute-Audio </label> <value>True</value> </control> </floor> </stream> <streamtype="text" name="TextIn"type="video" name="VideoIn" dir="in"> <floorname="Right_to_inject"name="Send_video" floor_id="1" instances="1" enable="true" value="true"> <controltype ="boolean" name="block_incoming" enable="true"> <label>Block-Incoming-Text</label>name ="pause-video" type="boolean" enable="true" > <label>Pause-Video</label> <value>False</value> </control> </floor> </stream> <streamtype="text" name="TextOut" dir="out"/> <streamtype="audio"name="AudioOut-ActiveSpeaker"name="AudioOut" dir="out"> <control type="real" name="gain"enable="true"> <label>Volume</label> <value>1.0</value> </control> <control type="boolean" name="close-captioning" enable="false"> <label>Close-Captioning</label> <value>False</value> </control> </stream> <stream type="audio" name="AudioOut-Mix" dir="out"> <controlArray type="real" name="gain" index="0"enable="true" > <label>Volume</label> <value>1.0</value></controlArray> <controlArray name="MuteParticipantsfromMix" index="0" type="boolean" enable="true"> <label>MuteParticipant</label> <value>False</value> </controlArray> <control type="boolean" name="close-captioning" enable="false"> <label>Close-Captioning</label> <value>False</value></control> </stream> <stream type="video" name="VideoOut" dir="out"/> </role> </template>[Editors Note: Sidebar support to be added in next revision] 3.94.7.8. XML Schema Definition <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:role="urn:ietf:params:xml:ns:role-schema"> <import namespace="urn:ietf:params:xml:ns:role-schema" /> <xs:element name="basic-audio-video"> <xs:complexType> <xs:sequence> <xs:element ref="parameter" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="role" minOccurs="1" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="parameter"> <xs:complexType> <xs:attribute name="type" type="parameter-defined" use="required"/> <xs:attribute name="name" type="parameter-name" use="required"/> <xs:attribute name="value" type="parameter-value" use="required"/> <xs:attribute name="min" type="xs:positiveInteger" use="optional"/> <xs:attribute name="max" type="xs:positiveInteger" use="optional"/> </xs:complexType> </xs:element> <xs:simpleType name="parameter-value"> <xs:union> <xs:simpleType> <xs:restriction base="xs:integer"/> </xs:simpleType> <xs:simpleType> <xs:restriction base="xs:real"/> </xs:simpleType> <xs:simpleType> <xs:restriction base="xs:enumeration"/> </xs:simpleType> </xs:union> </xs:simpleType> <xs:simpleType name="parameter-name"> <xs:restriction base="xs:string"> <xs:enumeration value="max-participants"/> <xs:enumeration value="max-audio-streams"/> <xs:enumeration value="max-video-streams"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="parameter-defined"> <xs:restriction base="xs:string"> <xs:enumeration value="integer"/> <xs:enumeration value="real"/> <xs:enumeration value="enumeration"/> </xs:restriction> </xs:simpleType> <xs:element name="role"> <xs:complexType> <xs:sequence> <xs:element ref="parameter" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="controlArray" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="stream" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="name" type="rtype" use="required"/> </xs:complexType> </xs:element> <xs:simpleType name="rtype"> <xs:restriction base="role:role-type"> <xs:enumeration value="Participant"/> <xs:enumeration value="Moderator"/> </xs:restriction> </xs:simpleType> <xs:element name="controlArray"> <xs:complexType> <xs:sequence> <xs:element ref="LogicalStream" minoccurs="1" maxoccurs="unbounded" /> <xs:element ref="control" minoccurs="1" maxoccurs="1"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="stream"> <xs:complexType> <xs:sequence> <xs:element ref="parameter" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="floor" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="control" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="type" type="media-type" use="required"/> <xs:attribute name="name" type="xs:string" use="required"/> <xs:attribute name="dir" type="direction-type" use="required"/> <xs:attribute name="stream-id" type="xs:positiveInteger" use="optional"/> </xs:complexType> </xs:element> <xs:element name="LogicalStream"> <xs:complexType> <xs:attribute name="type" type="media-type" /> <xs:attribute name="name" type="logical-Streamtype" /> <xs:complexType> </xs:element> <xs:simpleType name="logical-streamType > <xs:restriction base="xs:string"> <xs:enumeration value="AudioIn"/> <xs:enumeration value="AudioOut"/> <xs:enumeration value="VideoIn"/> <xs:enumeration value="VideoOut"/> </xs:simpleType> <xs:simpleType name="media-type"> <xs:restriction base="xs:string"> <xs:enumeration value="audio"/> <xs:enumeration value="video"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="direction-type"> <xs:restriction base="xs:string"> <xs:enumeration value="in"/> <xs:enumeration value="out"/> </xs:restriction> </xs:simpleType> <xs:element name="floor"> <xs:complexType> <xs:sequence> <xs:element ref="control" minOccurs="1" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="name" type="xs:string" use="required"/> <xs:attribute name="floor_id" type="xs:positiveInteger" use="required"/> <xs:attribute name="instances" type="xs:positiveInteger" use="required"/> <xs:attribute name="enable" type="xs:boolean" use="required"/> <xs:attribute name="value" type="xs:boolean" use="required"/> </xs:complexType> </xs:element> <xs:element name="control"> <xs:complexType> <element name="label" type="xs:string"/> <element name="value" type="control-value"/> </xs:complexType> <xs:attribute name="type" type="control-type" use="required"/> <xs:attribute name="name" type="xs:string" use="required"/> <xs:attribute name="enable" type="xs:boolean" use="required"/> </xs:element> <xs:simpleType name="control-value"> <xs:union> <xs:simpleType> <xs:restriction base="xs:real"/> </xs:simpleType> <xs:simpleType> <xs:restriction base="xs:boolean"/> </xs:simpleType> </xs:union> </xs:simpleType> <xs:simpleType name="control-type"> <xs:restriction base="xs:string"> <xs:enumeration value="real"/> <xs:enumeration value="boolean"/> </xs:restriction> </xs:simpleType> </xs:schema> 4.8. Audio-text Template TODO 4.9. Basic Multimedia Template3.9.1 Description [Editors Note: To be added in the next revision] 3.9.2 Roles 3.9.3 Parameters 3.9.4 Controls 3.9.5 Streams 3.9.6 XML Definition 3.10TODO 4.10. Advanced Multimedia Template3.10.1 Description [Editors Note: To be added in the next revision] 3.10.2 Roles 3.10.3 Parameters 3.10.4 Controls 3.10.5 Streams 3.10.6 XML Definition [Editors Note: Sidebar support to be added in next revision] 4.5. Security Considerations5.6. IANA Considerations6.7. Acknowledgements Many thanks to the media policy design team members for helpful comments including Cullen Jennings, Alan Johnston, Roni Even, Brian Rosen and Mark Trayer. Special thanks goes to Alan Johnston for his guidance.7.8. References7.18.1. Normative References [1] Barnes, M., "A Framework and Data Model for Centralized Conferencing", draft-ietf-xcon-framework-01 (work in progress), July 2005. [2] Jennings,C.,C. and B. Rosen, "Media Conference Server Control for XCON",draft-jennings-xcon-media-control-02draft-jennings-xcon-media-control-03 (work in progress),FebruaryJuly 2005. [3] Morgan, D. and O. Novo, "Role Definitions for Centralized Conferencing", draft-morgan-xcon-roles-00 (work in progress), October 2005.7.2[4] Novo, O., "A Common Conference Information Data Model for Centralized Conferencing (XCON)", draft-novo-xcon-common-data-model-00 (work in progress), September 2005. 8.2. Informative References Authors' Addresses Chris Boulton Ubiquity Software CorporationLangstone Park Newport, SouthBuilding 3 Wern Fawr Lane St Mellons, Cardiff, WalesNPUK CF3 5EA Email: cboulton@ubiquity.net Umesh Chandra Nokia Research Center 6000 Connection Drive Irving, Texas 75063 Email: Umesh.Chandra@nokia.com Intellectual Property Statement The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79. Copies of IPR disclosures made to the IETF Secretariat and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr. The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org. Disclaimer of Validity This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Copyright Statement Copyright (C) The Internet Society (2005). This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights. Acknowledgment Funding for the RFC Editor function is currently provided by the Internet Society.