<?xml version="1.0"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc toc="yes" ?>
<?rfc compact="yes" ?>
<?rfc sortrefs="no" ?>
<rfc category="std" ipr="full2026"
     docName="draft-jennings-xcon-media-control-00">
<front>
  <title abbrev= "Media Mixer Control" >
    Media Mixer Control for XCON
  </title >
  <author initials="C." surname="Jennings" fullname="Cullen Jennings">
    <organization>Cisco Systems</organization>
    <address>
      <postal>
        <street>170 West Tasman Drive</street>
        <street>Mailstop SJC-21/2</street>
        <city>San Jose</city>
        <region>CA</region>
        <code>95134</code>
        <country>USA</country>
      </postal>
      <phone>+1 408 421 9990</phone>
      <email>fluffy@cisco.com </email>
    </address>
  </author>
  <date month="February" day="7" year="2004"/>
  <area>Transport</area>
  <workgroup>XCON WG</workgroup>
  <keyword>I-D</keyword>
  <keyword>Internet-Draft</keyword>
  <keyword>Media Control</keyword>
  <abstract>
    
<t>
Conference mixers have many controls that change how the media is combined for
each participant in the conference. There is a need to describe these to the
clients connected to the a centralized conference so that the clients can render
a user interface and allow the user to manipulate them.  </t>
<t>
This work is very early and far from complete. This draft sketched the outline
of a solution for consideration. It is being discussed on the xcon@ietf.org
mailing list.
 </t>

  </abstract> 
</front>


<middle>
  
<section title = "Conventions" >                        
<t>
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
<xref target="RFC2119">RFC-2119</xref>.</t> 
</section>

<section title = "Introduction to the Problem" >

<t>
This works tries to solve the problem of allowing a conference participant to
manipulate the media flow in a mixer. It defines a protocol between the end
users software from manipulating the conference and the centralized
conference. This needs to be rich enough for a mixer to express what information
it wants from a mixer yet simple enough to allow the client to render a useful
user interface to the user. This work takes into account that real mixers 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 mixers or conference systems made by another vendor. </t>

<section title = "Non Problems" >
<t>
There are several topics that are completely internal to the conference systems
and are out of scope for this this work. These include: </t>
<list>
<t>
How the focus manipulates the mixer. </t>
<t>
How one describes what a mixer is capable of doing. </t>
</list>
</section>

</section>
<section title = "Overview" >

<t>
When a conference is created, it is instantiated from a template. The template
describes what controls are available for the client to manipulate the
media. The conference also describes roles that the client can take on, such as
Moderator. The template can have parameters that are set when it is
instantiated to help control the type of the conference. </t>
<t>
This document describes the templates and ways for the client to understand and
manipulate the media in the conference. It allows for the following things: </t>
<list>
<t>
A conference consists of several participants and multiple streams of media. </t>
<t>
Sidebars are mini conferences that are just like conferences except that they can
not contain sidebars. </t>
<t>
Clients can discover the virtual streams in a conference. </t>
<t>
Clients can request new virtual streams be created. </t>
<t>
Clients can receive media and contribute to a virtual stream. </t>
<t>
Clients can discover the Participants in a conference and their role (this is
more conference policy than media policy). </t>
<t>
Clients can join a conference as a participant and assume a particular role. </t>
<t>
Conferences, Streams, and Participants can have controls that manipulate the media
received. </t>
<t>
The role of the participant will control what view of the conference they have
one which media streams they can manipulate. </t>
</list>

<section title = "Semantic information in a Conference" >
<t>
The conference has a list of Participants. Each Participant has some Controls
such as Name and Hidden.  Each conference has a list of sidebars.  Each
conference has a list of Virtual Streams.  Each Virtual Stream has some
attributes like name, type, priority and list of contributing participants. </t>
</section>
<section title = "The Protocol" >
<t>
The protocol between the client and the conference server allows the client to
get the semantic information in the conference, find out when it changes, and
make changes to it. It's probably something like XCAP. [TODO add ref] </t>
</section>
<section title = "Templates" >
<t>
Templates define what information is valid semantic information for the
conference. A template provides enough information that the client can
intelligently render a useful GUI to the end user. There is a registry of well
known templates, but a conference server can define new ones. A client can find
all the templates a conference server supports and select one to use when
creating the conference. </t>
<t>
The template is in some ways a schema that describes what information can be
sent in the protocol to manipulate the conference and also provides hints on how
to build a GUI that can control the conference. </t>
<t>
A template for a basic audio conference may indicate that there is one audio
stream named "primary" and each participant in the stream has a single binary
control called "Mute".  There is only one Role that can be used, called
"participant". </t>
<t>
Parameters are variables in the template that are set when the conference is
created. For example, in the audio conference, the maximum number of users is 10
when the conference is instantiated but the template can indicate that the valid
range is from 2 to 128.</t>
</section>
<section title = "Controls" >
<t>
Controls are what describe the parts of the conference that can be modified by
the clients. Conferences can have controls, participants in a conference can
have controls, and streams in a conference can have Controls. </t>
</section>
<section title = "Roles" >
<t>
Participants in a conference can take on different Roles that change what they
can do.  The template defines what Roles are available for the client. The
moderator can change the role of a particular participant. </t>
</section>
</section>
<section title = "Introductory Example" >
<section title = "Simple Audio" >
<t>
The client selects the basic audio template that looks like: </t>
<figure><artwork>       
&lt;template name="basic-audio"&gt;
        &lt;parameter type="integer" name="max-participants" 
                min="2" max="128"/&gt;
        &lt;role name="Participant"&gt;
                &lt;parameter type="integer" name="max-participants" 
                       min="2" max="128"/&gt;
        &lt;/role&gt;
        &lt;stream type="audio" name="primary" priority="1.0"&gt;
                &lt;participant name="*"&gt;
                        &lt;control type="boolean" name="mute"/&gt;
                &lt;/participant&gt;
        &lt;/stream&gt;
&lt;/template&gt;
</artwork></figure>
<t>
The client retrieves this template and uses it to create a conference where it
sets the max-participants to 10. Alice and Bob join this conference and the
conference server tells Bob about the state of the conference media. There is a
single control, called mute, for each participant contributing to the audio
stream. </t>
<t>
After Alice and Bob have joined, the conference server informs the clients that
the current state of the conference is as shown in the xml below. </t>
<figure><artwork>       
&lt;conference type="basic-audio" name="Fluffy Conference"&gt;
        &lt;parameter type="integer" name="max-participants"&gt; 10
     &lt;/parameter&gt;
        &lt;role name="Participant"/&gt;
        &lt;participant name="Alice" role="Participant"/&gt;
        &lt;participant name="Bob" role="Participant"/&gt;
        &lt;stream type="audio" name="primary" 
             url="sip:fluffy22-audio-primary@cs.example.com" 
             priority="1.0"&gt;
                &lt;contributor name="Alice"&gt;
                        &lt;csrc&gt; 60123 &lt;/csrc&gt;
                        &lt;control type="boolean" name="mute" 
                             perm="readonly"&gt; 0 &lt;/control&gt;
                &lt;/contributor&gt;
                &lt;contributor name="Bob"&gt;
                        &lt;csrc&gt; 12345 &lt;/csrc&gt;
                        &lt;control type="boolean" 
                  name="mute" perm="readwrite"&gt; 0 &lt;/control&gt;
                &lt;/contributor&gt;
        &lt;/stream&gt;
&lt;/conference&gt;
</artwork></figure>
<t>
There are two participants, Alice and Bob, who both contribute to the audio
stream and neither is muted. </t>
<t>
Bob's client decides to change the Mute state for its audio stream and sends the
following to the conference server to change the state of the conference. </t>
<figure><artwork>
&lt;conference type="basic-audio" name="Fluffy Conference"&gt;
        &lt;stream type="audio" name="primary"&gt;
                &lt;contributor name="Bob"&gt;
                        &lt;control type="Boolean" name="mute"&gt; 1 
                        &lt;/control&gt;
                &lt;/contributor&gt;
        &lt;/stream&gt;
&lt;/conference&gt;
</artwork></figure>
<t>
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 table 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. </t>
</section>
</section>
<section title = "Names and terminology" >
<section title = "Templates" >
<t>
Templates contain a list of stream types, roles for participants, parameters
that need to be set, and controls for the conference. </t>
</section>
<section title = "Participants" >
<t>
Participants are the logical user entities participating in a conference. Just
to keep it confusing, there is a role called Participant too. </t>
</section>
<section title = "Virtual Streams" >
<t>
The virtual stream is a named logical stream of media. An example is a simple
audio conference with 6 participants and a mixer that mixes the loudest
three. There are several participants that are all contributing a real media
stream and also receiving a real mixed audio stream. Generally
speaking, all the participants are hearing the same thing, and this one thing
is referred to as a single virtual audio stream so that it can be named. In a
simple audio conference it may be named "primary" for example.  In truth, not
all the participants are actually receiving the same real stream for this
virtual stream because the real stream to a particular contributor does not
include the audio contributed by that participant. Likewise, all 6 people are
considered Contributors to the virtual stream even though only 3 of them are
truly contributing at any given time. </t>
<t>
Streams all have a type, a name with one or more URLs, and a priority. The name
is the name of the virtual stream so that it can be selected by clients. The URL
is a URL that can be used to join or connect to this virtual stream. The
priority indicates how important this particular stream is to the conference and
the type indicates the type of media carried in this steam. </t>
<t>
Streams have types.  These correspond to the major MIME types of the media they
send. </t>
</section>
<section title = "Stream Types" >

<section title = "Audio" >
<t>
Some number of the Participants sending media to this stream will be selected by
some speaker selection algorithm, mixed together, and sent to the Participants
listening to this stream. Note that different participants might hear different
things because the mixed audio does not generally include the audio contributed
from the Participant receiving the stream. </t>
</section>
<section title = "Video" >
<t>
Some number of Participants are contributing media to this stream. The mixer
chooses how to select and combine these images for each Participant receiving
the result of this stream. </t>
</section>
<section title = "Text" >
<t>
This is "chat" session where the results of multiple IM conversations are
mixed. All the messages sent to the conference are played out to all the
Participants receiving this stream. </t>
</section>
<section title = "Application" >
<t>
At a minimal level, this consist of a URL that defines the application. Many
systems will simply update an http URL that fetches an HTML page that shows the
current presentation. </t>
</section>

</section>
<section title = "Stream Names" >
<t>
Streams have names that users can select them by and URLs that can be used to
join the stream. These would typically be a SIP, H323 or XMPP URL. A stream may
have multiple types of URLS if the mixer is capable of transcoding from one type
to another. </t>
<t>
There are some well known stream names for each stream type. They are "primary"
and "secondary". Often the names of all the participants will also be stream
names. For text chat, the convention is Primary refers to everyone in the
conference and Secondary refers to the moderators. </t>
<section title = "Primary" >
<t>
This generally has the main media for the conference. For audio, this will
generally be the mix of the participants (including Presenters and Moderators)
that are not muted. For video it will often follow the active speaker or be a
tiled video representation of all the cameras. For text it will be a general
chat session. For applications it will be the main presentation. </t>
</section>
<section title = "Secondary" >
<t>
This is less common. For video it may be a second video view of the main
scene. For example, in a lecture situation the secondary video may display the
view from one wide angle camera that gets the whole presenter and presentation
area, while the primary has a narrow angle camera that tracks the head and
shoulders of the presenter. </t>
</section>
</section>
<section title = "Stream Priority" >
<t>
Streams have a priority from 0 to 1. Zero indicates that a client, by default,
should not display this stream unless the user specifically requests it. A
priority of 1 indicates that, by default, the client should render this stream
and should warn the user if it cannot. Other values only define an ordering, and
clients should attempt to use their resources to display the higher priority
streams before the lower. </t>
</section>
<section title = "Roles" >
<t>
Roles are more part of Conference Policy than Media Policy but are mentioned
here so that the Media Policy will make sense. Arbitrary new roles can be
defined by a template, but the basic set of roles are: </t>
<list>
<t>
Observer: Can only receive media from the conference. May be a hidden
participant.  Has fewer privileges than a general participant. </t>
<t>
Participant: Can receive media from the conference. May be able to
contribute. Often will not be able to Mute other participants. May be a hidden
participant. Is a superset of Observer. </t>
<t>
Presenter: Is generally not muted and can contribute media. Generally has more
privileges than a Participant. Can often control whether a Participant is Muted
or not. Is a superset of Participant. </t>
<t>
Moderator: Can control Roles of other participants and may have other
privileges, like the ability to Mute and join special streams. Generally has
more privileges than a Presenter. Is a superset of Presenter. </t>
<t>
Monitor: Receives all the media that some other particular Participant
receives. </t>
<t>
Coach: Can send media on behalf of some other particular participant. </t>
</list>
</section>
<section title = "Controls" >
<t>
These are input to the conference server that can be manipulated in real time
while the conference is ongoing. </t>
<t>
All controls have a name, a type, and permissions that indicate whether or not
the current client can modify them. </t>
</section>
<section title = "Parameters" >
<t>
These are parameters to the template that are fixed at the point when the
template is instantiated and the conference is created. </t>
</section>
</section>
<section title = "Solution" >
<section title = "Templates" >
<t>
The parameters in the templates customize a generic template for a specific
conference. </t>
<t>
One control parameter is "max-participants". 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. When the client instantiates the
template and creates the conference, it can specify the value that has been
requested. This max-participants value does not mean the conference can never go
over that value - it just means the conference is highly likely to be able to
get at least that big, but there is no guarantee for the client that it will be
able to grow bigger than that. </t>
<t>
Parameter Types: </t>
<list>
<t>
Integer</t>
<t>
Real</t>
<t>
Enumeration</t>
<t>
String</t>
</list>
<t>
Templates need to define all the Roles that a participant can take and the max
number of participants of each role. They also need to define all the types of
streams available and their names. If the name of the stream is "*" in the
template, then the actual conference will have a stream of that type for each
participant that corresponds to that participant's input of that type.  Inside a
stream, the Participants that can contribute can be listed. A name of "*" means
all the participants in the conference. </t>
<t>
A control can be inside the template, participant, stream, or participant in a
stream. The control will apply to the appropriate context. </t>
</section>
<section title = "Conference State" >
<t>
The conference state contains all the participants, all the streams, and the
values of all the controls. The conference contains the current list of
participants and current streams. The conference can also contain sidebars. Each
stream contains the contributors that could contribute media to that stream. A
very common control for each contributor to a stream is "mute". </t>
</section>
<section title = "Conference State Update" >
<t>
The client can attempt to change the state of various controls in the CS by
sending a document that contains just the things it wants to change. </t>
</section>
<section title = "Change Notification" >
<t>
How the client finds out about a change in Conference state. </t>
</section>
<section title = "Transport Protocol" >
<t>
TODO: Need to define how the information is sent between the client and the conference server. XCAP? </t>
</section>
</section>
<section title = "Control Types" >
<t>
Note the XML syntax in this section is not consistent with the rest of the
document. Probably want to use something more like what is shown here. </t>
<section title = "Requirements" >
<t>
The controls need to collect information. This can be classified into several
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. Need the ability to
internationalize any text that is displayed to the user. </t>
<t>
There are controls for: </t>
<list>
<t> Strings</t><t> Multi-line Strings</t><t> Integer</t><t> Real</t><t>
Boolean</t><t> Date</t><t> Time</t><t> Date Time</t><t> URI</t><t> File
Selection</t><t> Select Single</t><t>Select Multiple </t>
</list>
<t>
Controls all have a type that constrains what can be entered in them and
provides a hint for rendering the control. If an unknown control is encountered,
it should be treated as a string type. Controls also have a reference attribute
which is just a name for the program to refer to them by. The &lt;label&gt;
element controls what is displayed to the user and the &lt;value&gt; element
contains the current setting of the control. An optional &lt;description&gt;
element provides some text that can be used as help text for the control. </t>
</section>
<section title = "Strings" >
<t>
This is typically rendered as a text input field.</t>
<figure><artwork>
&lt;control type="string" ref="month" private="true" &gt;
 &lt;label&gt; The Month &lt;/label&gt;
 &lt;value&gt;Jan&lt;/value&gt;
 &lt;description&gt;Enter a month with the letter r&lt;/description&gt;
 &lt;regex&gt;.*[rR].*&lt;/regex&gt;
&lt;/control&gt;
</artwork></figure>
<t>
The "private" attribute indicates that the string should not be displayed as it
is entered. </t>
</section>
<section title = "Integer" >
<t>
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. </t>
<figure><artwork>
        &lt;control type="integer" ref="gain"&gt;
                &lt;label&gt; Volume &lt;/label&gt;
                &lt;value&gt;0&lt;/value&gt;
                &lt;range min="-18" max="6" increment="3"/&gt;
        &lt;/control&gt;
</artwork></figure>
</section>
<section title = "Boolean" >
<t>
This is typically rendered as a toggle button. </t>
</section>
<section title = "Selection" >
<t>
This is typically rendered as a pull down menu or as a radio button box. </t>
<figure><artwork>
        &lt;control type="select1" ref="foo"&gt;
                &lt;label&gt; the thing &lt;/label&gt;
                &lt;value&gt;2&lt;/value&gt;
                &lt;item&gt;
                        &lt;label&gt;one&lt;/label&gt;
                        &lt;value&gt;1&lt;/value&gt;
                &lt;/item&gt;
                &lt;item&gt;
                        &lt;label&gt;two&lt;/label&gt;
                        &lt;value&gt;2&lt;/value&gt;
                &lt;/item&gt;
        &lt;/control&gt;
</artwork></figure>
<t>
The list of items that can be selected is contained in &lt;item&gt;
elements. Each item has a label that is displayed and a value that is returned
when it is selected. </t>
</section>
<section title = "Multiple Selection" >
<t>
This is typically rendered as a combo box or list. </t>
<t>
This is the same as a selection, except that the type is selected and the
initial value is a space-separated list of values. </t>
</section>
<section title = "Restrictions" >
<t>
Range restrictions can be done with </t>
<figure><artwork>
        &lt;range min="-18" max="6" increment="3"/&gt;
</artwork></figure>
<t>
Regular expression restrictions can be done with</t>
<figure><artwork>
        &lt;regex&gt;.*[rR].*&lt;/regex&gt;
</artwork></figure>
</section>
<section title = "Groups of controls" >
<t>
Probably not needed. Just provides a grouping of things so that the User
Interface can provide some hints to display these together. Like a frame or tab
display. </t>
</section>
<section title = "Arrays of controls" >
<t>
Probably not needed. Was getting at the idea that you might want to make an
array of Boolean values indexed by something like the roster. Seems the roster
is the only useful index and can do this a different way. </t>
<t>
Might need this to select what video gets composited into a "Hollywood Squares"
style stream. </t>
</section>
</section>
<section title = "Examples" >

<section title = "Audio Video Presentation" >
<t>
The following is a more complex template with bits of text explaining it: </t>
<figure><artwork>
&lt;template name="audio-video-presentation"&gt;
</artwork></figure>
<t>
Note how the max-participants parameter is defined for each type of role and
for the conference as a whole. </t>
<figure><artwork>
 &lt;parameter type="integer" name="max-participants" 
               min="2" max="2000"/&gt;
 &lt;role name="Participant"&gt;
         &lt;parameter type="integer" name="max-participants" 
                       min="0" max="2000"/&gt;
 &lt;/role&gt;
 &lt;role name="Presenter"&gt;
         &lt;parameter type="integer" name="max-participants" 
                       min="0" max="2000"/&gt;
 &lt;/role&gt;
 &lt;role name="Moderator"&gt;
         &lt;parameter type="integer" name="max-participants" 
                       min="0" max="1"/&gt;
 &lt;/role&gt;
 &lt;stream type="audio" name="primary"&gt;
</artwork></figure>
<t>
This stream has a control for the master gain and for the input gain of each
participant.</t>
<figure><artwork>
 &lt;control type="real" name="master-gain" 
             min="-18" max="+6" note="Gain in DB"/&gt;
         &lt;participant name="*"&gt;
                 &lt;control type="binary" name="mute"/&gt;
                 &lt;control type="real" name="gain" 
                     min="-18" max="+6" note="Gain in DB"/&gt;
                 &lt;control type="binary" 
                     name="force-in-speaker-selection"/&gt;
         &lt;/participant&gt;
 &lt;/stream&gt;
</artwork></figure>
<t>
Note that the parameters in this stream define how the MCU does Hollywood
Squares. The parameters set the maximum number of tiles to display, and then the
priority provides the hint for which tile to display. How the tiles are
positioned is left up to the video composition unit. The client could change the
layout by changing the priorities. There is no way to, say, put the stream
"Alice" in the bottom left hand corner. </t>
<t>
If you want better control of layout than this, use SMIL. </t>
<figure><artwork>
 &lt;stream type="video" name="primary"&gt;
          &lt;parameter type="integer" name="vertical-tiles" 
                        min="1" max="4"/&gt;
         &lt;parameter type="integer" name="horizontal-tiles" 
                       min="1" max="8"/&gt;
         &lt;parameter type="integer" name="number-tiles" 
                       min="1" max="32"/&gt;
         &lt;participant name="*"&gt;
                 &lt;control type="binary" name="mute"/&gt;
                 &lt;!-- The priority is set for each participant 
                         and the top n priority streams get into the 
                         n Hollywood squares. If the MCU support 
                         video selection by active speaker, there is 
                         a virtual participant called "speaker" --&gt;
                 &lt;control type="real" name="priority" 
                             min="0.0" max="1.0"/&gt;
         &lt;/participant&gt;
 &lt;/stream&gt;
 &lt;stream type="video" name="secondary"&gt;
         &lt;participant name="*"&gt;
                 &lt;control type="binary" name="mute"/&gt;
         &lt;/participant&gt;
 &lt;/stream&gt;
</artwork></figure>
<t>
The next set of video streams forms an individual video stream named for each
participant. This allows one user to specifically request the video from a
particular client.  </t>
<figure><artwork>
 &lt;stream type="video" name="*"/&gt;
</artwork></figure>
<t>
The next two streams are from two slide presentations such as PowerPoint
slides. </t>
<figure><artwork>
 &lt;stream type="application" name="primary"&gt;
        &lt;participant name="*"&gt;
                &lt;control type="binary" name="mute"/&gt;
        &lt;/participant&gt;
 &lt;/stream&gt;
 &lt;stream type="application" name="secondary"&gt;
        &lt;participant name="*"&gt;
                &lt;control type="binary" name="mute"/&gt;
        &lt;/participant&gt;
 &lt;/stream&gt;
</artwork></figure>
<t>
Finally an IM chat session is set up for the conference. </t>
<figure><artwork>
 &lt;stream type="text" name="primary"&gt;
        &lt;participant name="*"&gt;
                &lt;control type="binary" name="mute"/&gt;
        &lt;/participant&gt;
 &lt;/stream&gt;
&lt;/template&gt;
</artwork></figure>
</section>
</section>
<section title = "Template Registry" >
<t>
The templates often include the name Basic and Standard. Basic is minimal
stuff. Standard is stuff that occurs in lots of systems that are available today
but does not include the kitchen sink. Audio is audio, Video is video,
Presentation is web or application sharing. Could have style hints for things
like Meeting, Presentation, Q &amp; A session, Lecture. </t>
<t>
[Still need TODO this]. Two templates will be defined here. Basic and
Standard. The templates have parameters that allow them to support, or
not support, Audio, Video, Text, and Presentation. They also have parameters to indicate the
for roles and styles that are allowed. </t>
</section>
<section title = "Comparison to other solutions" >
<t> [TODO] </t>
</section>
<section title = "CPCP vs. MPCP vs. CCP vs. MCP" >
<t>
What is the boundary between conference control, media control, and policy
control for both of them. </t>
</section>
<section title = "IANA" >
</section>
<section title = "Security" >
</section>
<section title = "Acknowledgments" >
<t>
Many thanks to Brian Rosen, Nermeen Ishmail and Rohan Mahy </t>
    
</section>
    
    
</middle>
<back>
<references title= "Normative References" >
      

<reference anchor='RFC2119'>


<reference anchor='I-D.even-xcon-media-policy-requirements'>
<front>
<title>Conferencing media policy requirements</title>

<author initials='R' surname='Even' fullname='Roni Even'>
    <organization />
</author>

<date month='June'  year='2003' />
</front>

<seriesInfo name='Internet-Draft' value='draft-even-xcon-media-policy-requirements-00' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-even-xcon-media-policy-requirements-00.txt' />
</reference>

<front>
<title abbrev='RFC Key Words'>Key words for use in RFCs to Indicate Requirement Levels</title>
<author initials='S.' surname='Bradner' fullname='Scott Bradner'>
<organization>Harvard University</organization>
<address>
<postal>
<street>1350 Mass. Ave.</street>
<street>Cambridge</street>
<street>MA 02138</street></postal>
<phone>- +1 617 495 3864</phone>
<email>sob@harvard.edu</email></address></author>
<date month='March' year='1997' />
<area>General</area>
<keyword>keyword</keyword>
<abstract>
<t>
   In many standards track documents several words are used to signify the
   requirements in the specification.  These words are often capitalized.  This
   document defines these words as they should be interpreted in IETF documents.
   Authors who follow these guidelines should incorporate this phrase near the
   beginning of their document:

<list>
<t>
      The key words &quot;MUST&quot;, &quot;MUST NOT&quot;,
      &quot;REQUIRED&quot;, &quot;SHALL&quot;, &quot;SHALL NOT&quot;,
      &quot;SHOULD&quot;, &quot;SHOULD NOT&quot;, &quot;RECOMMENDED&quot;,
      &quot;MAY&quot;, and &quot;OPTIONAL&quot; in this document are to be
      interpreted as described in RFC 2119.
</t></list></t>
<t>
   Note that the force of these words is modified by the requirement level of
   the document in which they are used.
</t></abstract></front>

<seriesInfo name='BCP' value='14' />
<seriesInfo name='RFC' value='2119' />
<format type='HTML' octets='14486' target='http://xml.resource.org/public/rfc/html/rfc2119.html' />
<format type='XML' octets='5661' target='http://xml.resource.org/public/rfc/xml/rfc2119.xml' />
</reference>

</references>
<references title='Informative References'>

<reference anchor='I-D.mahy-xcon-media-policy-control'>
<front>
<title>Media Policy Manipulation in the Conference Policy Control Protocol</title>

<author initials='R' surname='Mahy' fullname='Rohan Mahy'>
    <organization />
</author>

<author initials='N' surname='Ismail' fullname='Nermeen Ismail'>
    <organization />
</author>

<date month='June' day='25' year='2003' />
</front>

<seriesInfo name='Internet-Draft' value='draft-mahy-xcon-media-policy-control-00' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-mahy-xcon-media-policy-control-00.txt' />
</reference>

<reference anchor='I-D.even-xcon-conference-scenarios'>
<front>
<title>Conferencing Scenarios</title>

<author initials='R' surname='Even' fullname='Roni Even'>
    <organization />
</author>

<date month='June' day='23' year='2003' />
</front>

<seriesInfo name='Internet-Draft' value='draft-even-xcon-conference-scenarios-00' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-even-xcon-conference-scenarios-00.txt' />
</reference>

<reference anchor='I-D.ietf-sipping-conferencing-framework'>
<front>
<title>A Framework for Conferencing with the Session Initiation Protocol</title>

<author initials='J' surname='Rosenberg' fullname='Jonathan Rosenberg'>
    <organization />
</author>

<date month='May' day='1' year='2003' />
</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-sipping-conferencing-framework-00' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-sipping-conferencing-framework-00.txt' />
</reference>

</references>
</back>
</rfc>

