Internet DRAFT - draft-jennings-xcon-media-control

draft-jennings-xcon-media-control






XCON WG                                                      C. Jennings
Internet-Draft                                             Cisco Systems
Expires: January 17, 2006                                       B. Rosen
                                                               Emergicon
                                                           July 16, 2005


                Media Conference Server Control for XCON
                  draft-jennings-xcon-media-control-03

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 on January 17, 2006.

Copyright Notice

   Copyright (C) The Internet Society (2005).

Abstract

   Conference servers have many controls that change how the media is
   combined for the various conference participants.  It is necessary to
   describe these controls to the clients connected to a centralized
   conference, so that the clients can render a user interface and allow
   the user to manipulate them.

   This work is being discussed on the xcon@ietf.org mailing list.  This



Jennings & Rosen        Expires January 17, 2006                [Page 1]

Internet-Draft             Media Mixer Control                 July 2005


   draft has not changed since the 02 version.

Table of Contents

   1.   Conventions  . . . . . . . . . . . . . . . . . . . . . . . .   3
   2.   TODO Items . . . . . . . . . . . . . . . . . . . . . . . . .   3
   3.   Introduction . . . . . . . . . . . . . . . . . . . . . . . .   3
   4.   Non Problems . . . . . . . . . . . . . . . . . . . . . . . .   6
   5.   Terminology  . . . . . . . . . . . . . . . . . . . . . . . .   6
     5.1  Templates  . . . . . . . . . . . . . . . . . . . . . . . .   6
     5.2  Controls . . . . . . . . . . . . . . . . . . . . . . . . .   6
     5.3  Parameters . . . . . . . . . . . . . . . . . . . . . . . .   7
     5.4  Roles  . . . . . . . . . . . . . . . . . . . . . . . . . .   8
     5.5  Streams  . . . . . . . . . . . . . . . . . . . . . . . . .   9
   6.   Examples . . . . . . . . . . . . . . . . . . . . . . . . . .  10
     6.1  Simple Audio Example . . . . . . . . . . . . . . . . . . .  10
     6.2  Simple Audio Video Example . . . . . . . . . . . . . . . .  11
   7.   Types of Controls  . . . . . . . . . . . . . . . . . . . . .  14
     7.1  Strings  . . . . . . . . . . . . . . . . . . . . . . . . .  14
     7.2  Integer  . . . . . . . . . . . . . . . . . . . . . . . . .  15
     7.3  Boolean  . . . . . . . . . . . . . . . . . . . . . . . . .  15
     7.4  Selection  . . . . . . . . . . . . . . . . . . . . . . . .  15
     7.5  Multiple Selection . . . . . . . . . . . . . . . . . . . .  16
     7.6  Control Array  . . . . . . . . . . . . . . . . . . . . . .  16
     7.7  Layout . . . . . . . . . . . . . . . . . . . . . . . . . .  16
     7.8  Panel  . . . . . . . . . . . . . . . . . . . . . . . . . .  17
   8.   Template Registry  . . . . . . . . . . . . . . . . . . . . .  17
   9.   IANA . . . . . . . . . . . . . . . . . . . . . . . . . . . .  18
   10.  Security . . . . . . . . . . . . . . . . . . . . . . . . . .  18
   11.  Acknowledgments  . . . . . . . . . . . . . . . . . . . . . .  18
   12.  References . . . . . . . . . . . . . . . . . . . . . . . . .  18
     12.1   Normative References . . . . . . . . . . . . . . . . . .  18
     12.2   Informative References . . . . . . . . . . . . . . . . .  18
        Authors' Addresses . . . . . . . . . . . . . . . . . . . . .  19
        Intellectual Property and Copyright Statements . . . . . . .  20
















Jennings & Rosen        Expires January 17, 2006                [Page 2]

Internet-Draft             Media Mixer Control                 July 2005


1.  Conventions

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in RFC-2119 [4].

2.  TODO Items

   Note - the issue of switching from presenter mode to Q and A mode
   (etc.) is essentially one of floor control?  Need much more on how
   MPCP and floor control work.

   Note - using panel for now - may later replace with media neutral
   term such as placement

3.  Introduction

   This work tries to solve the problem of how a conference participant
   should manipulate the media flow in a conference server.  It defines
   a protocol between the centralized conference server and the end
   user's software that manipulates the conference.  This protocol needs
   to be rich enough for a conference server to express what information
   it wants, yet simple enough to allow the client to render a useful
   user interface.  This work takes into account that real conference
   servers have constraints on what media flows are possible and that
   UIs have buttons, knobs, etc. that users manipulate.  The goal is for
   a conferencing end point made by one vendor to work with conference
   servers or conference systems made by other vendors.

   Someone wishing to create a conference uses CPCP (or some other
   means) to create a conference and obtain a Conference URI.  The
   conference creator can query the server to find out its media
   capabilities, information such as the set of templates that a server
   supports.  A template defines a type of conferencing service that a
   conference server can provide.  It includes what media streams can
   flow in and out of the conference, the roles that are possible in the
   conference, and most importantly, what controls a client can
   manipulate on the conference to affect the media mix.  A set of
   standardized templates that a server may support is defined, and in
   addition, conference servers that support the flow graphs work in
   TODO REF can dynamically define new templates.  Note that templates
   contain media specific information, so to know which templates are
   supported is also to know what media types are supported.  Each
   template lists a number of parameters that must be set to initialize
   the conference and can have limits imposed by the conference server.
   Parameters are typically maximum values that are hardware or software
   (or policy) hard limits that constrain what is possible in a
   conference.  Parameters can only be set when the conference is



Jennings & Rosen        Expires January 17, 2006                [Page 3]

Internet-Draft             Media Mixer Control                 July 2005


   instantiated and can not be changed after that.  For things that are
   changed as the conference progresses, controls are used.  The point
   of the parameters in the templates is simply to reduce the number of
   templates needed.

   The conference creator can then choose a template, populate the
   parameter values and upload using CPCP to the server.  If the chosen
   parameter values are acceptable to the server, the update is accepted
   and the media policy created.  If not, an error message indicating
   the failure is returned.

   The simplest template will have just a single role: Participant.  By
   default, each participant will join a conference as a Participant.
   More interesting templates will have multiple roles.  For example, a
   template might have two roles: Lecturer and Participant.  A template
   role definition will indicate if there can be more than one
   participant having that role.  For this example, there can be only
   one Lecturer but many Participants.

   The conference creator can assign roles to participants.  This can be
   done in advance of the conference or dynamically during the
   conference.  For example, the conference creator can assign the role
   of Lecturer in advance, if it is known.  When this participant joins
   the conference, they will be automatically assigned the role of
   Lecturer.  This is Conference Policy not Media Policy but it does
   relate to the templates.  The conference package TODO REF includes
   the Role of each participant in the conference.

   Once a conference starts, a participant can find out the media policy
   template.  They can also download the set of controls for each role
   they may assume during the conference.  This template may also have
   controls that allow a participant to control their view of/input to
   the conference.  These controls may be rendered to the participant,
   and any changes to the controls result in commands being sent to the
   conference server.  A template may define different controls for
   different roles.  For example, a Participant may have only a very
   small set of controls, a Lecturer a larger set, and the Floor Holder
   an even larger set.  If a participant's role changes during a
   conference, their set of controls may change, and the user interface
   needs to be updated accordingly.

   An advanced conference server may support the definition of custom
   templates using flow graphs.  If so, the conference policy will
   indicate this capability.  If it is supported, a conference creator
   may upload a flow graph using CPCP.  This flow graph will contain
   enough information for the conference server to create a custom
   template: it will contain stream level media mixing information and
   information about parameters, roles, controls, and support for floor



Jennings & Rosen        Expires January 17, 2006                [Page 4]

Internet-Draft             Media Mixer Control                 July 2005


   control.  If the server can process the flow graph and support the
   mixing defined by the template, the server returns a success
   response.  If it is not able, it returns an error indicating how the
   flow graph might be fixed.  A custom template created using flow
   graphs will be identical to the set of standardized templates - it
   will just have a different name, roles, parameters, controls, etc.
   The same methods that allow a participant to render an unknown
   standardized template will be used to render a custom template.

   Once a conference begins, the template and parameters are fixed and
   MAY NOT be manipulated during the conference.  As a result, flow
   graphs can only be uploaded prior to the start of the conference,
   although they could be downloaded by a participant during a
   conference using CPCP.  In general, however, flow graphs will only be
   used by the creator of the conference prior to the start of the
   conference.

   A conference client can request the conference object from the focus.
   This allows the client to discover what the current media policy is
   and what controls it can manipulate.  The client can then send an
   update to the focus to change the controls to manipulate media policy
   for various participants.

   The conference has a set of physical streams that get contributed to
   the conference and a set of streams that are sent to the client.  The
   streams coming into the conference feed into an input stream group,
   and the streams coming out of a conference come from an output stream
   group.

   A template may define various logical stream lists.  For example, one
   video stream may contain video of the active presenter, and another
   video stream may have the presentation that the presenter is showing.
   Media from a participant is contributed to one of the input stream
   groups.  Various controls, such as gain, may be attached to each
   physical input stream, to logical stream groups, or to a top-level
   conference or sidebar.

   Each conference also has output stream groups that represent media
   being sent to the client.  Output streams to a client are named and
   may have complex controls that affect which streams are selected to
   contribute to the result.  Output streams may be formed using
   multiple input component streams.  This is typically done for video
   when the output is some composited form of the input component
   streams, but it can also be done for audio, e.g. when selecting
   multiple mono audio streams and defining how they are composited into
   a stereo stream.





Jennings & Rosen        Expires January 17, 2006                [Page 5]

Internet-Draft             Media Mixer Control                 July 2005


4.  Non Problems

   There are several topics that are completely internal to the
   conference systems and are out of scope of this work.  These include:
      how the focus manipulates the conference server
      how one describes what a conference server is capable of doing;
      and
      managing resource allocation and how busy a given DSP is, and
      checking whether more work can be allocated to a media processor.

5.  Terminology

5.1  Templates

   TODO - one template instantiated per conference.  Changing a template
   is close to stopping a conference and starting a new one.

   A template defines a model for the reception, manipulation and
   transmission of streams.  A template provides enough information that
   the client can intelligently render a useful GUI to the end user to
   manipulate the model.  There is a registry of well known templates,
   but a conference server can define new ones.  A convener can find all
   the templates a conference server supports and select one to use when
   creating the conference.

   Templates contain a list of logical stream, input and output stream,
   roles for participants, and controls for the conference.

   A template for a very basic audio conference, for example, may
   indicate that there is one audio stream for each participant, and one
   output stream group named "main".  Each participant in the stream has
   a single binary control called "Mute".  There is only one Role that
   can be used, called "participant".

5.2  Controls

   Controls are variables in a conference object that participants may
   manipulate to control the media streams of the conference.  The
   Control has information about what type of inputs it accepts that
   help the client render a user interface.  Conferences can have
   controls, participants in a conference can have controls, and streams
   in a conference can have controls.  A control has a name, a value,
   and constraints on its value.  The controls that are available are
   defined in the template.

   A control can be defined as being part of a role.  In that case, all
   participants who assume that role have an instance of the control.  A
   control may also be defined as part of an input stream group, in



Jennings & Rosen        Expires January 17, 2006                [Page 6]

Internet-Draft             Media Mixer Control                 July 2005


   which case all contributors of that stream will have an instance of
   the control; or an output stream, in which case each output stream
   will have an instance of the control.  There can be global controls
   that change values for the whole conference.

   A control can be inside the template, participant, or stream group.
   The control will apply to the appropriate context.  By including
   stream definitions in multiple roles that have the same name,
   different controls can be provided to different roles affecting
   streams contributed or sunk from multiple roles.  For example, a
   moderator may be given a set of input volume controls controlling a
   mix, and every participant can be given an output master mix control
   for the output stream sent to him.

5.3  Parameters

   TODO - need better name for Parameters.  Perhaps Instantiation Values

   Parameters are variables in the template that are set when the
   conference is created.  The point of a Parameter is simply to reduce
   the number of templates required.  For example, in the audio
   conference, whether or not sidebars are supported might be a
   parameter.  The template can indicate the valid range for parameters.
   Parameters can also be used for an application instantiating a
   conference to limit what capabilities it will use.

   Parameters are variables that modify the function of the template.
   They are fixed when the conference object is instantiated and can not
   be changed after that.  Parameters allow a single template definition
   to describe a range of possible conference server capabilities.

   Parameters have a name, a type, a value and, optionally, a min and
   max value.

   The parameters in the templates customize a generic template for a
   specific conference.  Parameters have name, type, value, and
   optionally min/max.  Parameters are defined in the template
   description.  Only conveners can set template parameters.

   One typical template parameter is "max-sidebars".  When the CS
   generates the template for the client, it can customize the min and
   max value of this parameter to match what it is capable of, which
   might range from zero or one to infinite.  When the client
   instantiates the template and creates the conference, it can specify
   the value that has been requested.  The value typically represents
   the limits the conference server is capable of.  Resource
   availability may limit the actual value that can be achieved.




Jennings & Rosen        Expires January 17, 2006                [Page 7]

Internet-Draft             Media Mixer Control                 July 2005


   Parameter names are strings.

   Parameter Types:
      Integer
      Real
      Enumeration

   Values of course are constrained to the type.  Min and Max, if
   defined, also constrain the the value.

   TODO - need to be able to make the limits of controls be parameters.

5.4  Roles

   Participants in a conference can take on multiple different Roles
   that will change what controls they may manipulate and which media
   streams they have access to.  The template defines what Roles are
   available for the client.  Manipulation of Roles is not directly part
   of MPCP, but the various Roles that are possible are found in the
   template.  Some common roles include:
      Participant
      Presenter
      Moderator
      Observer

   OPEN ISSUE - decide if we want Role so a single participant can
   simultaneously have multiple roles

   Roles are defined as part of Conference Policy but are used here so
   that the Media Policy can define separate streams and controls
   depending on role.  Roles are defined by in the template.  Some
   templates may allow a participant to take on more than one role at a
   time.  Each template must define a role named "Participant", which is
   the default role.  "Moderator" is a typical role, but templates do
   not intrinsically define or require such roles.  A given user will
   only be able to access parts of the template that are not inside a
   Role or are inside a Role that the this user is a member of.

   Templates define all the Roles that a participant can take and
   (optionally) the max number of participants of each role.  Each role
   is defined in a role element.  A Role element includes a name and
   optionally a "max-participants" value.  Role elements may also
   contain stream elements, which define per-participant-in-role
   streams.  The first stream list of a given media type inside a Role
   is the default location for that type of media.






Jennings & Rosen        Expires January 17, 2006                [Page 8]

Internet-Draft             Media Mixer Control                 July 2005


5.5  Streams

   Streams correspond to a given flow of media.  They are named and can
   be selected by controls.  The conference package is used to
   understand the relationships between users or participants, dialog or
   session, and streams.

   The physical streams are the actual media streams sent and/or
   received by or on behalf of conference participants.  Media streams
   are typically established when conference participants join a
   conference and are described by the SDP media lines in the offer/
   answer exchange between the participants and the focus, or the
   analogous exchange in other protocols (ex: H.245 logical channel
   establishment).  Each stream is described by a media type, direction
   and at least one identifier.  Initially media types considered
   include audio, video or text.  (Other media types can also be
   considered in the future.)  The direction "in" corresponds to streams
   originating from the conference participants to the conference, and
   "out" for streams originating from the conference and terminating at
   the conference participants.  A stream-id is an integer assigned by
   the focus to each physical input and output stream.  This integer is
   unique to all streams in a specific conference (and all its sub-
   conferences).

   Logical streams are names that are defined in the template and can be
   used like other streams but correspond to some virtual stream that
   the conference is creating.  Logical streams often change dynamically
   and potentially very quickly during the lifetime of a conference.
   For example, one logical set is the set of input video streams
   corresponding to the current speaker or speakers.  Logical stream
   lists are discussed in more detail in the following section.

   Streams have types.  These correspond to the major MIME types of the
   media the stream carries.

   Audio Streams originate as participant contributions (dir is "in")
      that are mixed using some kind of algorithm.  Controls commonly
      available on audio streams include input or output faders (volume
      controls), stereo balance, and mute.
   Video Streams originate as participant contributions (dir is "in"),
      which are combined with some kind of algorithm.  Intermediate
      streams may be created, which are subsequently combined with other
      streams to yield streams that are sent to participants (dir is
      "out").  Controls commonly available on video streams might
      include selectors for choosing a tiling format, selectors that
      choose which input stream is rendered on an output tile, and video
      freeze and blank.




Jennings & Rosen        Expires January 17, 2006                [Page 9]

Internet-Draft             Media Mixer Control                 July 2005


   Text Streams originate as participant contributions (dir is "in")
      (Instant Messages).  Messages from all participants are combined
      using some algorithm.  Intermediate streams may be created, which
      are subsequently combined with other text streams to yield streams
      that are sent to participants (dir is "out").

   The stream id correlates the stream with a particular RTP session or
   media session for non RTP based media.  The client can learn the
   correlation of stream ID to the particular media streams it is
   sending by TBD (TODO could be subscribing to the conference package).

   A stream-id is an integer assigned by the focus to each physical
   input and output stream.  For RTP media, this corresponds to a single
   RTP session.  This integer is unique to all streams in a specific
   conference (and all its sub-conferences).

6.  Examples

6.1  Simple Audio Example

   The examples in this section will all be moved to XML, but to help
   make them easier to understand and focus on the semantics instead of
   the syntax, they are currently just some text with indentation
   representing containment.

   The client selects the basic audio template that looks like:

   Template BasicAudio
     PhysicalStream direction=input type=audio name=main-audio-in
        control type=bool name=mute label="Mute"

     PhysicalStream direction=output type=audio name=main-audio-out
        control type=real name=gain label="Volume"

   This templates defines that this conference has one input stream
   group called main-audio and one output stream group called main-
   audio.  There is a single control, called mute, for each physical
   input stream, and a gain for each output stream.

   After Alice and Bob have joined, the conference server informs Bob
   that the current state of the conference object is as shown in the
   xml below.









Jennings & Rosen        Expires January 17, 2006               [Page 10]

Internet-Draft             Media Mixer Control                 July 2005


   Conference BasicAudio
     PhysicalStream name=main-audio-in stream-id=1
        control bool mute=false

     PhysicalStream name=main-audio-out stream-id=3
        control bool mute=false

     PhysicalStream name=main-oudio-out stream-id=2
        control real gain=0.0

     PhysicalStream name=main-audio-out stream-id=4
        control real gain=0.0

   There are two participants, Alice and Bob, who both contribute input
   streams and receive output streams, and neither is muted.

   A key part of this is that Bob's client may have known about this
   basic audio template and what the semantics of the "mute" control
   implied.  The client may have connected this up with a button of the
   client's that was labeled mute.  On the other hand, Bob's client may
   not have known anything about this template and simply rendered a
   button on the screen and labeled it "mute" with no idea what this
   would do.  A third client may not have been able to deal with the
   control at all and may have just ignored it.  Clearly the user
   interface can be better if the client understands the semantics of
   what the template means, but the user interface is still functional
   when the client does not.

6.2  Simple Audio Video Example

   A more complex video example is given below.




















Jennings & Rosen        Expires January 17, 2006               [Page 11]

Internet-Draft             Media Mixer Control                 July 2005


   Template basicAudioVideo
     LogicalStream type=video name=activeSpeaker-video
     LogicalStream type=video name=presenter-video
     LogicalStream type=video name=presentation-video

     Floor name=presenter-floor

     Control type=bool name=eCan label="Echo Cancelation"

     Role name=listener
        PhysicalStream direction=output type=audio name=main-audio-out
        PhysicalStream direction=output type=video name=main-video-out

     Role name=participant
       PhysicalStream direction=input type=audio name=main-audio-in
          Control type=bool name=mute label="Mute"
       PhysicalStream direction-input type=video name=main-video-in
          Control type=choice name=video-mute
                  choices="normal,blank,freeze"
       PhysicalStream direction-input type=video name=presentation
          Control type=choice name=video-mute
                  choices=" normal, blank, freeze"

      PhysicalStream direction=output type=audio name=main-audio-out
         Control type=real name=gain label="Volume"

      PhysicalStream direction=output type=video name=main-video-out

      Control name=main-laoyout type=layout choices=1x1,2x2,1x2,

      Sidebar
        Control name=mainConfVolume type=real
        PhysicalStream direction=input type=audio name=side-audio-in
          control type=bool name=mute label="Mute"
        PhysicalStream direction=output type=audio name=side-audio-out
          control type=real name=gain label="Volume"

      Role name=moderator
        controllArray index=main-audio
          control type=bool name=mute label="Mute"


   This template has some logical streams that can be used for selecting
   in the layout.  It defines a control called eCan that applies to the
   whole conference.  It defines a Listener role that can only receive
   input and a Participant role.  There is also a moderator role that
   has everything a participant has along with an additional set of
   controls to mute any of the contributors to the main-audio.  The



Jennings & Rosen        Expires January 17, 2006               [Page 12]

Internet-Draft             Media Mixer Control                 July 2005


   participants share a single layout control that defines the video
   layout.  The conference supports sidebars but they can only have
   audio media.

   The instantiated value of the conference object for this might look
   like


   ConferenceObject type=basicAudioVideo name=conf1234
    Role Participant
     PhysicalStream name=main-audio-in  stream-id=22
        Control name=mute value=false
     PhysicalStream name=main-video-in  stream-id=23
        Control name=video-mute value=normal
     PhysicalStream name=main-audio-out stream-id=24
        Control name=gain value=0
     PhysicalStream name=main-video-out stream-id=25

     PhysicalStream name=main-audio-in  stream-id=32
        Control name=mute value=false
     PhysicalStream name=main-video-in  stream-id=33
        Control name=video-mute value=normal
     PhysicalStream name=main-audio-out stream-id=34
        Control name=gain value=0
     PhysicalStream name=main-video-out stream-id=35

     PhysicalStream name=main-audio-in  stream-id=42
        Control name=mute value=false
     PhysicalStream name=main-video-in  stream-id=43
        Control name=video-mute value=normal
     PhysicalStream name=main-audio-out stream-id=44
        Control name=gain value=0
     PhysicalStream name=main-video-out stream-id=45

     Control name=main-layout value="3x1+16"
       Pannel input=presenter-video postion=1 selectionQ=0.8 exGrp=1
       Pannel input=presentation    postion=2 selectionQ=1.0 exGrp=1
       Pannel input=active-speaker  postion=3 selectionQ=0.9 exGrp=1
       Pannel input=main-video-in   postion=4 selectionQ=0.5 exGrp=2

   In the example above three participants have joined.  All the video
   participants are watching the same video composition, which has the
   presenter in position 1, the presentation in position 2, the active
   speaker in position 3; followed by all the video from participants
   contributed to the main input group.  The streams that are in the
   positions after the first three are not in the same exclusivity group
   as the first three, so streams could repeat even if they were being
   shown in the first three positions.  The active speaker position 3 is



Jennings & Rosen        Expires January 17, 2006               [Page 13]

Internet-Draft             Media Mixer Control                 July 2005


   in the same exclusion group as the presenter in position 1, so if the
   primary active speaker was the presenter, this would not be shown in
   position 3 and instead the previous active speaker would be shown.

7.  Types of Controls

   Controls need to collect information of several different types.  It
   should be possible to provide default values, a name for the control
   and text it displays, help text, control if a value is required, and
   control of whether or not the value is editable.  It should be
   possible to express constraints on the form an input can take by
   specifying a minimum or maximum for types where that makes sense, or
   specifying a regular expression that must be satisfied.  For numeric
   values in a constrained range, it should be possible to provide an
   increment value used by the control.  For strings it should be
   possible to indicate that they should not be displayed when they are
   entered for things like passwords.  These controls are necessary to
   make it possible to internationalize any text that is displayed to
   the user.

   There are control types for:
      Strings
      Multi-line Strings
      Integer
      Real
      Boolean
      Date
      Time
      Date Time
      URI
      Select Single
      Select Multiple
      Select Stream - TODO ADD THIS
      Layout - video layout object
      Panel - a portion of a Layout

   If an unknown control is encountered, it should be treated as a
   string type.  The <label> element controls what is displayed to the
   user and the <value> element contains the current setting of the
   control.  If set in the template definition, it represents the
   default value.  An optional <description> element provides some text
   that can be used as help text for the control.

7.1  Strings

   This is typically rendered as a text input field.





Jennings & Rosen        Expires January 17, 2006               [Page 14]

Internet-Draft             Media Mixer Control                 July 2005


   <control type="string" name="Host" private="true" >
      <label> Meeting Host </label>
      <value>Richard</value>
      <description>Host for this weeks meeting</description>
      <regex>.*[rR].*</regex>
   </control>

   The "private" attribute indicates that the string should not be
   displayed as it is entered.

7.2  Integer

   This can be rendered as a slider or volume knob if it has a
   constrained range; otherwise it is a text field.  The text field may
   have increment or decrement buttons.

           <control type="integer" name="gain">
                   <label> Volume </label>
                   <value>0</value>
                   <range min="-18" max="6" increment="3"/>
           </control>


7.3  Boolean

   This is typically rendered as a toggle button.

           <control type="boolean" name="mute">
                   <label> Mute </label>
                   <value>True</value>
           </control>


7.4  Selection

   This is typically rendered as a pull down menu or as a radio button
   box.














Jennings & Rosen        Expires January 17, 2006               [Page 15]

Internet-Draft             Media Mixer Control                 July 2005


           <control type="select1" name="foo">
                   <label> the thing </label>
                   <value>2</value>
                   <item>
                           <label>one</label>
                           <value>1</value>
                   </item>
                   <item>
                           <label>two</label>
                           <value>2</value>
                   </item>
           </control>

   The list of items that can be selected is contained in <item>
   elements.  Each item has a label that is displayed and a value that
   is returned when it is selected.

7.5  Multiple Selection

   This is typically rendered as a combo box or list.

   This is the same as a selection, except that the type is selected and
   the initial value is a space-separated list of values.

7.6  Control Array

   The control array is a way of defining a logical group with a
   variable number of related controls.  When the control array is
   defined in the template, it is associated with some group of streams.
   Then in n the actual conference object, there will be one instance of
   the control for each of the actual streams in the stream group.
   Inside the control array in the template is a single control.  A
   typical use of this would be to form a separate mute control for each
   of the audio stream correctly contributing to a conference.

7.7  Layout

   Layouts provide a control for compositing multiple video streams.  A
   layout uses several windows that each contain one video stream.  Each
   of these individual windows is referred to as a panel.  Generally the
   windows are rectangles arranged in some grid, but they do not have to
   be this way if the conference service has some other way of laying
   them out, such as warping them so they look like talking heads
   arranged in a circle.

   A layout control allows the selection of an enumerated type of
   layout.  This might include things like "2x1", "2x2", "5+1", "auto",
   "vendor X special layout 10".  Some of the layouts are well



Jennings & Rosen        Expires January 17, 2006               [Page 16]

Internet-Draft             Media Mixer Control                 July 2005


   understood, some may be customized.  There are also a number of
   panels that are being selected into this layout.  The layout will
   support some compositing of a number of streams, like 4 for a 2x2
   layout.  However, there may be more than 4 streams competing to get
   shown.  The first thing the layout group does is select which 4
   streams will get shown.  It then figures out where to display these
   streams in the layout.  Each panel inside the layout has a selection
   Q value.  This is used to order the streams to figure out if they
   will be selected or not.  Q values range from 0.0 to 1.0 and higher
   values are selected over lower values.  In addition, panels can be
   grouped into exclusion groups.  If an exclusion group has the same
   stream more than once, the type of the exclusion group will determine
   whether the stream is displayed once or twice.  If the exclusion
   group is set at no repeat, the repeat stream with the highest Q value
   is selected and the rest are removed from the selection set.

   Once the set of selected streams is formed, they need to be put in
   the appropriate place in the layout.  Each "window" in the layout has
   a position number.  Generally these increment left to right and then
   top to bottom.  If a panel sets its position attribute, then it gets
   that location in the layout.  For panels where the position is not
   set, the selected streams are sorted, with a the primary key of the
   position Q value and a secondary key of the selection Q value then
   placed into the remaining positions in this order.  The streams may
   be further ordered to minimize streams moving their location in the
   rendered output as the conference server sees fit.

   TODO - need to work back in way of dealing with exclusivity groups.
   Suggest using a exclusivity set value for each panel so that if two
   things have the same set value, they will not both display the same
   image.

7.8  Panel

   Panels are a control to select some streams to display in a layout.
   They are a control that can select any stream or list of streams in
   the conference, be they logical or physical.  They can select a
   specific physical stream using the stream id.  The client can
   correlate this with participants using the conference package.  They
   can select a stream out of a logical group such as "active-speaker".

8.  Template Registry

   An IANA registry will be created for commonly encountered template
   definitions.  This document will include some starter templates

   [Still need TODO this].




Jennings & Rosen        Expires January 17, 2006               [Page 17]

Internet-Draft             Media Mixer Control                 July 2005


9.  IANA

   TODO - will need template registry

10.  Security

   TODO

11.  Acknowledgments

   Many thanks to Rohan Mahy, Nermeen Ishmail, Alan Johnson, Orit Levin,
   Roni Evin, and Lyndsay Campbell for many helpful comments.  Rohan in
   particular has spent a huge amount of time improving this document.
   Large chunks of text were contributed by Alan Johnson.

12.  References

12.1  Normative References

   [1]  Even, R., "Conferencing media policy requirements",
        draft-even-xcon-media-policy-requirements-00 (work in progress),
        June 2003.

   [2]  Boulton, C. and U. Chandra, "Media Policy Templates for XCON",
        draft-boulton-xcon-media-template-00 (work in progress),
        October 2004.

   [3]  Barnes, M. and C. Boulton, "A Framework and Data Model for
        Centralized Conferencingg", draft-barnes-xcon-framework-01 (work
        in progress), December 2004.

   [4]  Bradner, S., "Key words for use in RFCs to Indicate Requirement
        Levels", BCP 14, RFC 2119, March 1997.

12.2  Informative References

   [5]  Mahy, R. and N. Ismail, "Media Policy Manipulation in the
        Conference Policy Control Protocol",
        draft-mahy-xcon-media-policy-control-00 (work in progress),
        June 2003.

   [6]  Even, R., "Conferencing Scenarios",
        draft-even-xcon-conference-scenarios-00 (work in progress),
        June 2003.

   [7]  Rosenberg, J., "A Framework for Conferencing with the Session
        Initiation Protocol",
        draft-ietf-sipping-conferencing-framework-00 (work in progress),



Jennings & Rosen        Expires January 17, 2006               [Page 18]

Internet-Draft             Media Mixer Control                 July 2005


        May 2003.


Authors' Addresses

   Cullen Jennings
   Cisco Systems
   170 West Tasman Drive
   Mailstop SJC-21/2
   San Jose, CA  95134
   USA

   Phone: +1 408 421 9990
   Email: fluffy@cisco.com


   Brian Rosen
   Emergicon
   470 Conrad Dr.
   Mars, PA  16046
   USA

   Phone: +1 724 382 1051
   Email: br@brianrosen.net



























Jennings & Rosen        Expires January 17, 2006               [Page 19]

Internet-Draft             Media Mixer Control                 July 2005


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.




Jennings & Rosen        Expires January 17, 2006               [Page 20]