<?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>
  <author initials="B." surname="Rosen" fullname="Brian Rosen">
    <organization>Marconi</organization>
    <address>
      <postal>
        <street>2000 Marconi Drive</street>
        <city>Warrendale</city>
        <region>PA</region>
        <code>15086</code>
        <country>USA</country>
      </postal>
      <phone>+1 724 742 6826</phone>
      <email>brian.rosen@marconi.com</email>
    </address>
  </author>
  <date month="February" day="8" 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 work 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
user's software manipulating the conference and the centralized
conference mixer. 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 allow one template to describe variations of similar flow models. </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: </t>
<list>
<t>
A conference consists of several participants and multiple streams of media flowing between the participant and the mixer. </t>
<t>
Sidebars are mini conferences that are just like conferences except that a sidebar cannot itself contain sidebars. </t>
<t>
Clients can discover the template chosen for use in a conference, and the
Values of the parameters set for the conference</t>
<t>
Clients can discover the available streams in a conference. </t>
<t>
Clients can send media on a participant stream and receive media and receive media on a mixer 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 sent and
received. </t>
<t>
The role of the participant will control what view of the conference they have
and 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 a set of Controls
That he can manipulate.  Each conference has a list of sidebars.  Each
conference has a list of Streams.  Each Stream has 
attributes such as 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 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. </t>
<t>
A template for a very basic audio conference, for example, may indicate that there is one audio
stream for each participant, and one output mixer stream named "primary". Each participant in the stream has a single binary
control called "Mute".  There is only one Role that can be used, called
"participant". </t>
</section>
<section title="Parameters">
<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 participants might be a parameter.  If the value was set to 10
when the conference is instantiated, then up to 10 participant streams can be
accepted into the mixer.  The template can indicate the valid
range for max number of participants, perhaps from 2 to 128.</t>
</section>
<section title = "Controls" >
<t>
Controls are variables participants may manipulate to control the media streams
of the conference. Conferences can have controls, participants in a conference can
have controls, and streams in a conference can have controls. Controls have a name, and a value.  Controls are defined in the template.</t>
</section>
<section title = "Roles" >
<t>
Participants in a conference can take on different Roles that change what
ccontrols they may manipulate.  The template defines what Roles are available for the client. The
moderator (which itself is a role) 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;stream type="audio" dir="in" name="input" priority="1.0"&gt;
          &lt;/stream&gt;
          &lt;stream type="audio" dir="out" name="mix" priority="1.0"&gt;
              &lt;control type="boolean" name="mute"/&gt;
          &lt;/stream&gt;
      &lt;/role&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
only one role "participamt".  Each participant contributes one input stream.
There is also an output stream per participant.  There is a single control, called mute, for each participant. </t>
<t>
After Alice and Bob have joined, the conference server informs Bob that
the current state of the conference is as shown in the xml below. </t>
<figure><artwork>       
&lt;conference type="basic-audio" name="Weekly 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;stream type="audio" dir="in" name="input[Alice]" 
             url="sip:alice22-audio-primary@cs.example.com" 
             priority="1.0"/&gt;
        &lt;stream type="audio" dir="out" name="mix[Alice]" 
             url="sip:alice22-audio-primary@cs.example.com" 
             priority="1.0"&gt;
                &lt;control type="boolean" name="mute" 
                     perm="readonly"&gt; 0 &lt;/control&gt;
            &lt;/stream&gt;
        &lt;/participant&gt;
        &lt;participant name="Bob" role="Participant"&gt;
        &lt;stream type="audio" dir="in" name="input[Bob]" 
             url="sip:bob5-audio-primary@cs.example.com" 
             priority="1.0"/&gt;
        &lt;stream type="audio" dir="out" name="mix[Bob]" 
             url="sip:bob5-audio-primary@cs.example.com" 
             priority="1.0"&gt;
                &lt;control type="boolean" name="mute" 
                     perm="readwrite"&gt; 0 &lt;/control&gt;
            &lt;/stream&gt;
        &lt;/participant&gt;
&lt;/conference&gt;
</artwork></figure>
<t>
There are two participants, Alice and Bob, who both contribute input streams
and receive Mix streams 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="Weekly Conference"&gt;
        &lt;stream type="audio" dir = "out" name="mix[Bob]"&gt;
                 &lt;control type="Boolean" name="mute"&gt; 1 
                 &lt;/control&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, 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. </t>
</section>
<section title = "Streams" >
<t>
The stream is a named stream of media. An example is a simple
audio conference with 6 participants and a mixer that mixes the loudest
three. Each participant contributes an input stream.  There is a single
logical output stream, but every participant gets a "custom" version of this
stream, because, in normal mixers, each participants can hear all inputs except his own.  This is commonly referred to as "mix-minus".  If the output steam also has a control (mute), the output streams for each participant may also vary depending on the state of the control. </t>
<t>
Streams all have a type, a name, a direction (in or out), one or more URLs, and a priority. The URL
is the source or sink of the 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 URLs" >
<t>
Streams have URLs that specify the source or sink of the stream. These would typically be a SIP, H323 or XMPP URL. </t>
</section>
<section title = "Stream Priority" >
<t>
Streams have a priority from 0 to 1. Zero indicates that a client, by default,
should not play/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 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 a 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, as is "Floor-Holder", but templates do not intrinsically define or require
such roles. </t>
</section>
<section title = "Controls" >
<t>
Controls manipulate the state of the conference while it is instantiated.  All
controls have a name, a type, and permissions that indicate whether or not the
current client can modify them. 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 a stream, in which case
all contributors of that stream (dir="in") have an instance of the control, or
all sinks of the Stream (dir="out") have an instance of the control.  Finally,
there can be global controls, which are available to all participants.</t>
</section>
<section title = "Parameters" >
<t>
Parameters are variables that modify the function of the template.  They are fixed when the conference is instantiated.  Parameters allow a single template definition to describe a range of possible mixer capabilities. </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 typical template 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. The value typically represents the limits the mixer is capable of.
Resource availability may limit the actual value that can be achieved. </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>


