draft-ietf-mmusic-image-attributes-04.txt   draft-ietf-mmusic-image-attributes-05.txt 
Network Working Group I. Johansson Network Working Group I. Johansson
Internet-Draft Ericsson AB Internet-Draft Ericsson AB
Intended status: Standards Track K. Jung Intended status: Standards Track K. Jung
Expires: August 21, 2010 Samsung Electronics Co., Ltd. Expires: December 5, 2010 Samsung Electronics Co., Ltd.
Feb 17, 2010 June 3, 2010
Negotiation of Generic Image Attributes in SDP Negotiation of Generic Image Attributes in SDP
draft-ietf-mmusic-image-attributes-04 draft-ietf-mmusic-image-attributes-05
Abstract Abstract
This document proposes a new generic session setup attribute to make This document proposes a new generic session set up attribute to make
it possible to negotiate different image attributes such as image it possible to negotiate different image attributes such as image
size. A possible use case is to make it possible for a low-end hand- size. A possible use case is to make it possible for a low-end hand-
held terminal to display video without the need to rescale the image, held terminal to display video without the need to rescale the image,
something that may consume large amounts of memory and processing something that may consume large amounts of memory and processing
power. The draft also helps to maintain an optimal bitrate for video power. The draft also helps to maintain an optimal bitrate for video
as only the image size that is desired by the receiver is as only the image size that is desired by the receiver is
transmitted. transmitted.
Requirements Language
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 [RFC2119].
Status of this Memo Status of this Memo
This Internet-Draft is submitted to IETF in full conformance with the This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79. provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that Task Force (IETF). Note that other groups may also distribute
other groups may also distribute working documents as Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts. Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at This Internet-Draft will expire on December 5, 2010.
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 August 21, 2010.
Copyright Notice Copyright Notice
Copyright (c) 2010 IETF Trust and the persons identified as the Copyright (c) 2010 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1. Requirements . . . . . . . . . . . . . . . . . . . . . . . 4
2. Conventions, Definitions and Acronyms . . . . . . . . . . . . 5 2. Conventions, Definitions and Acronyms . . . . . . . . . . . . 5
3. Defintion of Attribute . . . . . . . . . . . . . . . . . . . . 5 3. Specification of the 'imageattr' SDP Attribute . . . . . . . . 5
3.1. Requirements . . . . . . . . . . . . . . . . . . . . . . . 6 3.1. Attribute syntax . . . . . . . . . . . . . . . . . . . . . 5
3.2. Attribute syntax . . . . . . . . . . . . . . . . . . . . . 6 3.1.1. Overall view of syntax . . . . . . . . . . . . . . . . 5
3.2.1. Overall view of syntax . . . . . . . . . . . . . . . . 6 3.2. Considerations . . . . . . . . . . . . . . . . . . . . . . 10
3.3. Considerations . . . . . . . . . . . . . . . . . . . . . . 11 3.2.1. No imageattr in 1st offer . . . . . . . . . . . . . . 10
3.3.1. No imageattr in 1st offer . . . . . . . . . . . . . . 11 3.2.2. Asymmetry . . . . . . . . . . . . . . . . . . . . . . 11
3.3.2. Asymmetry . . . . . . . . . . . . . . . . . . . . . . 11 3.2.3. sendonly and recvonly . . . . . . . . . . . . . . . . 11
3.3.3. sendonly and recvonly . . . . . . . . . . . . . . . . 12 3.2.4. Sample aspect ratio . . . . . . . . . . . . . . . . . 11
3.3.4. Sample aspect ratio . . . . . . . . . . . . . . . . . 12 3.2.5. SDPCapNeg support . . . . . . . . . . . . . . . . . . 12
3.3.5. SDPCapNeg support . . . . . . . . . . . . . . . . . . 12 3.2.6. Interaction with codec parameters . . . . . . . . . . 12
3.3.6. Interaction with codec parameters . . . . . . . . . . 13 3.2.7. Change of display in middle of session . . . . . . . . 14
3.3.7. Change of display in middle of session . . . . . . . . 15 3.2.8. Use with layered codecs . . . . . . . . . . . . . . . 14
3.3.8. Use with layered codecs . . . . . . . . . . . . . . . 15 3.2.9. Addition of parameters . . . . . . . . . . . . . . . . 14
3.3.9. Addition of parameters . . . . . . . . . . . . . . . . 15 4. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4. Syntax description and examples . . . . . . . . . . . . . . . 15 4.1. A High-Level Example . . . . . . . . . . . . . . . . . . . 15
4.1. Description . . . . . . . . . . . . . . . . . . . . . . . 15 4.2. Detailed Examples . . . . . . . . . . . . . . . . . . . . 16
4.2. Examples . . . . . . . . . . . . . . . . . . . . . . . . . 17 4.2.1. Example 1 . . . . . . . . . . . . . . . . . . . . . . 16
4.2.1. Example 1 . . . . . . . . . . . . . . . . . . . . . . 17 4.2.2. Example 2 . . . . . . . . . . . . . . . . . . . . . . 17
4.2.2. Example 2 . . . . . . . . . . . . . . . . . . . . . . 18 4.2.3. Example 3 . . . . . . . . . . . . . . . . . . . . . . 17
4.2.3. Example 3 . . . . . . . . . . . . . . . . . . . . . . 18 4.2.4. Example 4 . . . . . . . . . . . . . . . . . . . . . . 18
4.2.4. Example 4 . . . . . . . . . . . . . . . . . . . . . . 19 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 19
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 20 6. Security Considerations . . . . . . . . . . . . . . . . . . . 19
6. Security Considerations . . . . . . . . . . . . . . . . . . . 20 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 20
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 21 8. Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
8. Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 21
9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 22 9.1. Normative References . . . . . . . . . . . . . . . . . . . 21
9.1. Informative References . . . . . . . . . . . . . . . . . . 22 9.2. Informative References . . . . . . . . . . . . . . . . . . 22
9.2. Normative References . . . . . . . . . . . . . . . . . . . 23 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 22
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 23
1. Introduction 1. Introduction
This document proposes a new attribute to make it possible to This document proposes a new attribute to make it possible to
negotiate different image attributes such as image size. The term negotiate different image attributes such as image size. The term
image size is defined here as it may differ from the physical screen image size is defined here as it may differ from the physical screen
size of for instance a hand-held terminal. As an example it may be size of for instance a hand-held terminal. As an example it may be
beneficial to display a video image on a part of the physical screen beneficial to display a video image on a part of the physical screen
and leave space on the screen for other features such as menus and and leave space on the screen for other features such as menus and
other info. other info.
There are a number of benefits with a possibility to negotiate the There are a number of benefits with a possibility to negotiate the
image size: image size:
o Less image distortion: Rescaling of images introduces additional o Less image distortion: Rescaling of images introduces additional
distortion, something that can be avoided (at least on the distortion, something that can be avoided (at least on the
receiver side) if the image size can be negotiated. receiver side) if the image size can be negotiated.
o Reduced complexity: Image rescaling can be quite computation o Reduced receiver complexity: Image rescaling can be quite
intensive. For low end devices this can be a problem. computation intensive. For low end devices this can be a problem.
o Optimal quality for the given bitrate: The sender does not need to o Optimal quality for the given bitrate: The sender does not need to
encode an entire CIF (352x288) image if only an image size of encode an entire CIF (352x288) image if only an image size of
288x256 is displayed on the receiver screen. This alternatively 288x256 is displayed on the receiver screen. This alternatively
gives a saving in bitrate. gives a saving in bitrate.
o Memory requirement: The receiver device will know the size of the o Memory requirement: The receiver device will know the size of the
image and can then allocate memory accordingly. image and can then allocate memory accordingly.
o Optimal aspect ratio: The indication of the supported image sizes o Optimal aspect ratio: The indication of the supported image sizes
and aspect ratio allows the receiver to select the most and aspect ratio allows the receiver to select the most
appropriate combination based on its rescaling capabilities and appropriate combination based on its rescaling capabilities and
the desired rendering. For example, if a sender proposes three the desired rendering. For example, if a sender proposes three
resolutions in its SDP offer, 100x200, 200x100 and 100x100 with resolutions in its SDP offer, 100x200, 200x100 and 100x100 with
sar=1.0 (1:1) etc. then the receiver can select the option that sar=1.0 (1:1) etc. then the receiver can select the option that
fits the receiver screen best. fits the receiver screen best.
In cases where rescaling is not implemented (for example, rescaling In cases where rescaling is not implemented (for example, rescaling
is not mandatory to implement in H.264), the indication of the image is not mandatory to implement in H.264 [H.264]), the indication of
attributes may still provide an optimal use of bandwidth because the the image attributes may still provide an optimal use of bandwidth
attribute will anyway give the encoder a better indication about what because the attribute will anyway give the encoder a better
image size is preferred and will thus help to avoid wasting bandwidth indication about what image size is preferred and will thus help to
by encoding with an unnecessarily large resolution. avoid wasting bandwidth by encoding with an unnecessarily large
resolution.
For implementers that are considering rescaling issues, it is worth For implementers that are considering rescaling issues, it is worth
notice note that there are several benefits to doing it on the sender notice that there are several benefits to do it on the sender side:
side:
o Rescaling on the sender/encoder side is likely to be easier to do o Rescaling on the sender/encoder side is likely to be easier to do
as the camera related software/hardware already contains the as the camera related software/hardware already contains the
necessary functionality for zooming/cropping/trimming/sharpening necessary functionality for zooming/cropping/trimming/sharpening
the video signal. Moreover, rescaling is generally done in RGB or the video signal. Moreover, rescaling is generally done in RGB or
YUV domain and should not depend on the codecs used. YUV domain and should not depend on the codecs used.
o The encoder may be able to encode in a number of formats but may o The encoder may be able to encode in a number of formats but may
not know which format to choose as it, without the image not know which format to choose as, without the image attribute,
attribute, does not know the receivers performance or preference. it does not know the receiver's performance or preference.
o The quality drop due to digital domain rescaling using o The quality drop due to digital domain rescaling using
interpolation is likely to be lower if it is done before the video interpolation is likely to be lower if it is done before the video
encoding rather than after the decoding esp. when low bitrate encoding rather than after the decoding especially when low
video coding is used. bitrate video coding is used.
o If low-complexity rescaling operations such as cropping only must o If low-complexity rescaling operations such as simple cropping
be performed after all, the benefit with having this functionality must be performed, the benefit with having this functionality on
on the sender side is that it is then possible to present a the sender side is that it is then possible to present a miniature
miniature "what you send" image on the display to help the user to "what you send" image on the display to help the user to target
target the camera correctly. the camera correctly.
Several of the existing standards ([H.263], [H.264] and [MPEG-4]) Several of the existing standards ([H.263], [H.264] and [MPEG-4])
have support for different resolutions at different framerates. The have support for different resolutions at different framerates. The
purpose of this document is to provide for a generic mechanism and is purpose of this document is to provide for a generic mechanism and is
targeted mainly at the negotiation of the image size but to make it targeted mainly at the negotiation of the image size but to make it
more general the attribute is named "imageattr". more general the attribute is named 'imageattr'.
The draft is limited to unicast scenarios in general and more This document is limited to unicast scenarios in general and more
specific point-to-point communication. The attribute may be used in specific point-to-point communication. The attribute may be used in
centralized conferencing scenarios as well but due to the abundance centralized conferencing scenarios as well but due to the abundance
of configuration options it may then be difficult to come up with a of configuration options it may then be difficult to come up with a
configuration that fits all parties. configuration that fits all parties.
2. Conventions, Definitions and Acronyms 1.1. Requirements
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.
3. Defintion of Attribute
This section defines the SDP image attribute "imageattr" that can be
used in an SDP Offer/Answer exchange to indicate various image
attribute parameters. In this document, we define the following
image attribute parameters: image resolution, sample aspect ratio
(sar), allowed range in picture aspect ratio and the preference of a
given parameter set over another. The attribute is however
extensible and guidelines for defining extensions are provided in
Section 3.3.9.
3.1. Requirements
The image attribute MUST meet the following requirements: The design of the image attribute is based on the following
requirements which are listed only for informational purposes:
REQ-1: Support the indication of one or more set(s) of image REQ-1: Support the indication of one or more set(s) of image
attributes that the SDP endpoint wish to receive or send. An attributes that the SDP endpoint wish to receive or send. Each
image attribute set MUST include a specific image size. image attribute set must include a specific image size.
REQ-2: Support setup/negotiation of image attributes, meaning that REQ-2: Support set up/negotiation of image attributes, meaning that
each side in the Offer/Answer SHOULD be able to negotiate the each side in the Offer/Answer should be able to negotiate the
image attributes if prefers to send and receive. image attributes it prefers to send and receive.
REQ-3: Interoperate with codec specific parameters such as sprop- REQ-3: Interoperate with codec specific parameters such as sprop-
parameter-sets in H.264 or config in MPEG4. parameter-sets in [H.264] or config in [MPEG-4].
REQ-4: Make the attribute generic with as little codec specific REQ-4: Make the attribute generic with as few codec specific
details/tricks as possible in order to be codec agnostic. details/tricks as possible in order to be codec agnostic.
Besides the above mentioned requirements, the requirement below MAY Besides the above mentioned requirements, the requirement below may
be applicable. be applicable.
OPT-1: The image attribute SHOULD support the description of image- OPT-1: The image attribute should support the description of image-
related attributes for various types of media, including video, related attributes for various types of media, including video,
pictures, images, etc. pictures, images, etc.
3.2. Attribute syntax 2. Conventions, Definitions and Acronyms
In this section the syntax of the image attribute is described. The The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
image attribute is a media attribute. The section is split up in two "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
parts, the first gives an overall view of the syntax while the second document are to be interpreted as described in [RFC2119].
describes how the syntax is used.
3.2.1. Overall view of syntax 3. Specification of the 'imageattr' SDP Attribute
The syntax for the image attribute is in ABNF [RFC4234]: This section defines the SDP image attribute 'imageattr', which can
be used in an SDP Offer/Answer exchange to indicate various image
attribute parameters. In this document, we define the following
image attribute parameters: image resolution, sample aspect ratio
(sar), allowed range in picture aspect ratio (par) and the preference
of a given parameter set over another (q). The attribute is
extensible and guidelines for defining additional parameters are
provided in Section 3.2.9.
3.1. Attribute syntax
In this section the syntax of the 'imageattr' attribute is described.
The 'imageattr' attribute is a media-level attribute. The section is
split up in two parts, the first gives an overall view of the syntax
while the second describes how the syntax is used.
3.1.1. Overall view of syntax
The syntax for the image attribute is in ABNF [RFC5234]:
---- ----
image-attr = "imageattr:" PT 1*2( 1*WSP ( "send" / "recv" ) image-attr = "imageattr:" PT 1*2( 1*WSP ( "send" / "recv" )
1*WSP attr-list ) 1*WSP attr-list )
PT = 1*DIGIT / "*" PT = 1*DIGIT / "*"
attr-list = ( set *(1*WSP set) ) / "*" attr-list = ( set *(1*WSP set) ) / "*"
----
----
set= "[" "x=" xyrange "," "y=" xyrange [ ",=" key-value ] "]"
; x is the horizontal image size range (pixel count)
; y is the vertical image size range (pixel count)
key-value = ( "sar=" srange )
/ ( "par=" prange )
/ ( "q=" qvalue )
; Key-value MAY be extended with other keyword parameters.
; At most one instance each of sar, par, or q in a set.
;
; sar (sample aspect ratio) is the sample aspect ratio
; associated with the set (optional and MAY be ignored)
; par (picture aspect ratio) is the allowed ratio
; between the display's x and y physical size (optional)
; q (optional with range [0.0..1.0], default value 0.5)
is the preference for the given set,
a higher value means a higher preference
; see below for a definition of set. ----
onetonine = "1" / "2" / "3" / "4" / "5" / "6" / "7" / "8" / "9"
; Digit between 1 and 9
xyvalue = onetonine *5DIGIT
; Digit between 1 and 9 which is
; followed by 0 to 5 other digits
step = xyvalue
xyrange = ( "[" xyvalue ":" [ step ":" ] xyvalue "]" )
; Range between a lower and an upper value
; with an optional step, default step = 1
; The rightmost occurence of xyvalue MUST have a
; higher value than the leftmost occurence.
/ ( "[" xyvalue 1*( "," xyvalue ) "]" )
; Discrete values separated by ','
/ ( xyvalue )
; A single value
spvalue = ( "0" "." onetonine *3DIGIT )
; Values between 0.1000 and 0.9999
/ ( onetonine "." 1*4DIGIT )
; Values between 1.0000 and 9.9999
srange = ( "[" spvalue 1*( "," spvalue ) "]" )
; Discrete values separated by ','.
; Each occurrence of spvalue MUST be
; greater than the previous occurrence.
/ ( "[" spvalue "-" spvalue "]" )
; Range between a lower and an upper level (inclusive).
; The second occurence of spvalue MUST have a higher
; value than the first
/ ( spvalue )
; A single value
prange = ( "[" spvalue "-" spvalue "]" )
; Range between a lower and an upper level (inclusive).
; The second occurence of spvalue MUST have a higher
; value than the first
qvalue = ( "0" "." 1*2DIGIT )
/ ( "1" "." 1*2("0") )
; Values between 0.00 and 1.00
---- ----
o The attribute typically contains a "send" and a "recv" keyword. o The attribute typically contains a "send" and a "recv" keyword.
These are interpreted from the senders perspective i.e the sender These specify the preferences for the media once the session is
of the SDP (either offerer or answerer) specifies the preferences set up, in the send and receive direction respectively from the
in its send and receive direction for the media once the session point of view of the sender of the session description.
is setup.
o Maximum one occurrence of the "send" keyword and corresponding o The "send" keyword and corresponding attribute list (attr-list)
attribute list (attr-list) is allowed per image attribute. MUST NOT occur more than once per image attribute.
o Maximum one occurrence of the "recv" keyword and corresponding o The "recv" keyword and corresponding attribute list (attr-list)
attr-list is allowed per image attribute. MUST NOT occur more than once per image attribute.
o PT is the payload type number, it can be set to * to indicate that o PT is the payload type number, it MAY be set to * to indicate that
the attribute applies to all payload types in the media the attribute applies to all payload types in the media
description. description.
o For sendonly or recvonly streams one of the directions MAY be o For sendrecv streams both of the send and recv directions SHOULD
omitted. See Section 3.3.3, moreover the order of the send and BE present.
recv directions is not important.
The syntax for the set is given by:
----
set= "[" "x=" range "," "y=" range [ ",sar=" range ]
[ ",par=" range ] [ ",q=" value ] "]"
x is the horizontal image size range
y is the vertical image size range
sar (sample aspect ratio) is the sample aspect ratio associated
with the set (optional and MAY be ignored)
par (picture aspect ratio) is the allowed ratios between the
displays x and y physical size (optional)
q (optional with range [0.0..1.0], default value 0.5)
is the preference for the given set, a higher value means
a higher preference
range is expressed in a few different formats o For inactive streams it is RECOMMENDED that both of the send and
1) range= value recv directions are present.
a single value
2) range= "[" value1 ":" [ step ":" ] value2 "]"
values between value1 and value2 inclusive,
if step is omitted a stepsize of 1 is implied
3) range= "[" value 1*( "," value ) "]"
any value from the list of values
4) range= "[" value1 "-" value2 "]"
any real value between value1 and value2 inclusive
value is a positive integer or real value o For sendonly or recvonly streams one of the directions MAY be
step is a positive integer or real value omitted. See Section 3.2.3.
If step is left out in the syntax a stepsize of 1 is implied
Real values are only applicable for the
sar, par and q parameters
Note the use of brackets [..] if more than one value
is specified.
----
3.2.1.1. Parameter rules 3.1.1.1. Parameter rules
For the parameters the following rules apply. For the parameters the following rules apply.
Payload type number: The image attribute is bound to a specific Payload type number (PT): The image attribute is bound to a specific
media by means of the payload type number. A wild card (*) can be codec by means of the payload type number. A wild card (*) can be
specified for the payload type number to indicate that it applies specified for the payload type number to indicate that it applies
to all payload types in the media description. Several image to all payload types in the media description. Several image
attributes can be defined for instance for different video codec attributes can be defined for instance for different video codec
alternatives conditioned that the payload type number differs. alternatives conditioned that the payload type number differs.
Preference: The preference for each set is 0.5 by default, setting Preference (q): The preference for each set is 0.5 by default,
the optional q parameter to another value makes it possible to set setting the optional q parameter to another value makes it
different preferences for the sets. A higher value gives a higher possible to set different preferences for the sets. A higher
preference for the given set. value gives a higher preference for the given set.
sar: The sar parameter specifies the sample aspect ratio associated sar: The sar parameter specifies the sample aspect ratio associated
to the given range of x and y values. The sar parameter is to the given range of x and y values. The sar parameter is
defined as dx/dy where dx and dy is the physical size of the defined as dx/dy where dx and dy is the physical size of the
pixels. Square pixels gives a sar=1.0. The parameter sar MAY be pixels. Square pixels gives a sar=1.0. The parameter sar MAY be
expressed as a range. expressed as a range or as a single value.
If this parameter is not present a default sar value of 1.0 is If this parameter is not present a default sar value of 1.0 is
assumed. assumed.
The interpretation of sar differs between the send and the receive The interpretation of sar differs between the send and the receive
directions. directions.
* In the send direction it defines a specific sample aspect * In the send direction it defines a specific sample aspect ratio
ration associated to a given x and y image size (range). associated to a given x and y image size (range).
* In the recv direction sar expresses that the receiver of the * In the recv direction sar expresses that the receiver of the
given media prefers to receive a given x and y resolution with given medium prefers to receive a given x and y resolution with
a given sample aspect ratio. a given sample aspect ratio.
See Section 3.3.4 for a more detailed discussion. See Section 3.2.4 for a more detailed discussion.
The sar parameter will likely not solve all the issues that are The sar parameter will likely not solve all the issues that are
related to different sample aspect ratios but it can help to solve related to different sample aspect ratios but it can help to solve
them and reduce aspect ratio distortion. them and reduce aspect ratio distortion.
The response MUST NOT include the sar parameter if there is no The response MUST NOT include a sar parameter if there is no
acceptable value given. acceptable value given. The reason to this is that if the
response includes a sar parameter it is interpreted as "sar
parameter accepted" while removal of the sar parameter is treated
as "sar parameter not accepted", for this reason it is safer to
remove an unacceptable sar parameter altogether.
par: The par (width/height = x/y ratio) parameter indicates a range par: The par (width/height = x/y ratio) parameter indicates a range
of allowed ratios between x and y physical size (picture aspect of allowed ratios between x and y physical size (picture aspect
ratio). This is used to limit the number of x and y image size ratio). This is used to limit the number of x and y image size
combinations, par is given as combinations, par is given as
---- ----
par=[ratio_min-ratio_max] par=[ratio_min-ratio_max]
---- ----
Where ratio_min and ratio_max are the min and max allowed picture Where ratio_min and ratio_max are the min and max allowed picture
aspect ratios. aspect ratios.
If sar and the display sample aspect ration is the same (or close) If sar and the sample aspect ratio that the receiver actually uses
the relation between the x and y pixel resolution and the physical in the display are the same (or close), the relation between the x
size of the image is straightforward. If however sar differs from and y pixel resolution and the physical size of the image is
the sample aspect ratio of the receiver display this must be taken straightforward. If however sar differs from the sample aspect
into consideration when the x and y pixel resolution alternatives ratio of the receiver display this must be taken into
are sorted out. consideration when the x and y pixel resolution alternatives are
sorted out.
3.2.1.2. Offer/answer rules 3.1.1.2. Offer/answer rules
The following rules apply for the offer/answer exchange. In accordance with [RFC3264], offer answer exchange of the image
attribute is as follows.
o Offerer sending the offer: o Offerer sending the offer:
* The offerer MUST be able to support the image attributes that * The offerer must be able to support the image attributes that
it offers. The exception is if the offerer has expressed a it offers. The exception is if the offerer has expressed a
wild card (*) in the attribute list. wild card (*) in the attribute list.
* It is RECOMMENDED that a high end device which sees no reason * It is recommended that a high end device which sees no reason
to use the image attribute, anyway includes the attribute with to use the image attribute, anyway includes the attribute with
wild cards (*) in the attribute lists for the send and recv wild cards (*) in the attribute lists for the send and recv
directions. An example of this looks like: directions. An example of this looks like:
---- ----
a=imageattr:97 send * recv * a=imageattr:97 send * recv *
---- ----
This gives the answerer the possibility to express its This gives the answerer the possibility to express its
preferences. preferences.
o Answerer receiving the offer and sending the answer: o Answerer receiving the offer and sending the answer:
* The answerer MAY choose to keep the image attribute but is not * The answerer may choose to keep the image attribute but is not
required to do so. required to do so.
* The answerer MAY, for its receive and send direction, include * The answerer may, for its receive and send direction, include
one or more entries that it can support from the set of entries one or more entries that it can support from the set of entries
proposed in the offer. proposed in the offer.
* The answerer MAY also, for its receive and send direction, * The answerer may also, for its receive and send direction,
replace the entries with a complete new set of entries replace the entries with a complete new set of entries
different from the original proposed by the offerer. different from the original proposed by the offerer. The
implementor of this feature should however be aware that this
may cause extra offer/answer exchanges.
* The answerer MAY also remove its send direction completely if * The answerer may also remove its send direction completely if
it is deemed that it cannot support any of the proposed it is deemed that it cannot support any of the proposed
entries. entries.
* The answerer SHOULD NOT on its own include an image attribute * The answerer should not on its own include an image attribute
in the answer. in the answer.
o Offerer receiving the answer: o Offerer receiving the answer:
* If the image attribute is not included in the SDP answer the * If the image attribute is not included in the SDP answer the
offerer MUST resort of other methods to determine the offerer SHOULD resort to other methods to determine the
appropriate image size. appropriate image size.
* If the image attribute is included in the SDP answer but none * If the image attribute is included in the SDP answer but none
of the entities are useful or acceptable, the offerer MUST of the entries are usablel or acceptable, the offerer SHOULD
resort to other methods to determine the appropriate image resort to other methods to determine the appropriate image
size. It this case the offerer MUST also issue a new offer/ size. In this case the offerer must also issue a new offer/
answer without the image attribute to avoid misunderstandings answer without the image attribute to avoid misunderstandings
between offerer and answerer. between offerer and answerer.
3.3. Considerations 3.2. Considerations
3.3.1. No imageattr in 1st offer 3.2.1. No imageattr in 1st offer
A high end device (Alice) may not see any need for the image When the initial offer does not contain the 'imageattr' attribute,
attribute as it most likely has the processing capacity to rescale the answerer MUST NOT then include 'imageattr' in the answer. The
incoming video and may therefore not include the attribute in the reasons for this are:
offer as it otherwise does not see any use for it. The answerer
(Bob) SHOULD NOT include imageattr in the answer. The reasons to
this are:
o The offerer of the initial SDP is anyway not likely to understand o The offerer of the initial SDP is not likely to understand the
the image attribute image attribute if it did not include it in the offer, bearing in
mind that Section 3.1.1 recommends that the offerer provide the
attribute with wildcarded parameters if it has no preference.
o Inclusion of the image attribute in the answer may come in o Inclusion of the image attribute in the answer may come in
conflict with the rules in Section 3.2.1.2 esp. the rules that conflict with the rules in Section 3.1.1.2 esp. the rules that
apply to "offerer receiving the answer". apply to "offerer receiving the answer".
For the above reasons it is RECOMMENDED that a high end device which For the above reasons it is RECOMMENDED that a high end device which
sees no reason to use the image attribute, anyway includes the sees no reason to use the image attribute, anyway includes the
attribute with wild cards (*) in the attribute lists for the send and attribute with wild cards (*) in the attribute lists for the send and
recv directions. recv directions.
3.3.2. Asymmetry 3.2.2. Asymmetry
While the image attribute supports asymmetry there are some While the image attribute supports asymmetry there are some
limitations to this. One important limitation is that the codec limitations to this. One important limitation is that the codec
being used can only support up to a given maximum resolution for a being used can only support up to a given maximum resolution for a
given profile level. given profile level.
As an example H.264 with profile level 1.2 does not support higher As an example H.264 [H.264] with profile level 1.2 does not support
resolution than 352x288 (CIF). The offer/answer rules essentially higher resolution than 352x288 (CIF). The offer/answer rules imply
gives that the same profile level must be used in both directions. that the same profile level must be used in both directions. This
This means that in an asymmetric scenario where Alice wants an image means that in an asymmetric scenario where Alice wants an image size
size of 580x360 and Bob wants 150x120, profile level 2.2 is needed in of 580x360 and Bob wants 150x120, profile level 2.2 is needed in both
both directions even though profile level 1 would have been directions even though profile level 1 would have been sufficient in
sufficient in one direction. one direction.
Currently, the only solution to this problem is to specify two Currently, the only solution to this problem is to specify two
unidirectional media descriptions. Note however that the asymmetry unidirectional media descriptions. Note however that the asymmetry
issue for the H.264 codec is solved to some extent in [RFC3984bis]. issue for the H.264 codec is solved by means of the level-asymmetry-
allowed parameter in [RFC3984bis].
3.3.3. sendonly and recvonly 3.2.3. sendonly and recvonly
If the directional attributes a=sendonly or a=recvonly are given for If the directional attributes a=sendonly or a=recvonly are given for
a media, there is of course no need to specify the image attribute a medium, there is of course no need to specify the image attribute
for both directions. Therefore one of the directions in the for both directions. Therefore one of the directions in the
attribute MAY be omitted. However it may be good to do the image attribute may be omitted. However it may be good to do the image
attribute negotiation in both directions in case the session is attribute negotiation in both directions in case the session is
updated for media in both directions at a later stage. updated for media in both directions at a later stage.
3.3.4. Sample aspect ratio 3.2.4. Sample aspect ratio
The sar parameter in relation to the x and y pixel resolution The relationship between the sar parameter and the x and y pixel
deserves some extra discussion. Consider the offer from Alice to Bob resolution deserves some extra discussion. Consider the offer from
(we set the recv direction aside for the moment): Alice to Bob (we set the recv direction aside for the moment):
---- ----
a=imageattr:97 send [x=720,y=576,sar=1.1] a=imageattr:97 send [x=720,y=576,sar=1.1]
---- ----
If the receiver display has square pixels the 720x576 image would If the receiver display has square pixels the 720x576 image would
need to be rescaled to for example 792x576 or 720x524 to ensure a need to be rescaled to for example 792x576 or 720x524 to ensure a
correct image aspect ratio. This in practice means that rescaling correct image aspect ratio. This in practice means that rescaling
would need to be performed on the receiver side, something that is would need to be performed on the receiver side, something that is
contrary to the spirit of this draft. contrary to the spirit of this draft.
To avoid this problem Alice MAY specify a range of values for the sar To avoid this problem Alice may specify a range of values for the sar
parameter like: parameter like:
---- ----
a=imageattr:97 send [x=720,y=576,sar=[0.91,1.0,1.09,1.45]] a=imageattr:97 send [x=720,y=576,sar=[0.91,1.0,1.09,1.45]]
---- ----
Meaning that Alice can encode with any of the mentioned sample aspect Meaning that Alice can encode with any of the mentioned sample aspect
ratios, leaving to Bob to decide which one he prefers. ratios, leaving to Bob to decide which one he prefers.
3.3.5. SDPCapNeg support 3.2.5. SDPCapNeg support
The image attribute can be used within the SDP Capability Negotiation The image attribute can be used within the SDP Capability Negotiation
[SDPCapNeg] framework and its use is then specified using the [SDPCapNeg] framework and its use is then specified using the
"a=acap" parameter. An example is "a=acap" parameter. An example is
---- ----
a=acap:1 imageattr:97 send [x=720,y=576,sar=[0.91,1.0,1.09,1.45]] a=acap:1 imageattr:97 send [x=720,y=576,sar=[0.91,1.0,1.09,1.45]]
---- ----
For use with SDP Media Capability Negotiation extension For use with SDP Media Capability Negotiation extension
[SDPMedCapNeg], where it is no longer possible to specify payload [SDPMedCapNeg], where it is no longer possible to specify payload
skipping to change at page 13, line 4 skipping to change at page 12, line 28
[SDPCapNeg] framework and its use is then specified using the [SDPCapNeg] framework and its use is then specified using the
"a=acap" parameter. An example is "a=acap" parameter. An example is
---- ----
a=acap:1 imageattr:97 send [x=720,y=576,sar=[0.91,1.0,1.09,1.45]] a=acap:1 imageattr:97 send [x=720,y=576,sar=[0.91,1.0,1.09,1.45]]
---- ----
For use with SDP Media Capability Negotiation extension For use with SDP Media Capability Negotiation extension
[SDPMedCapNeg], where it is no longer possible to specify payload [SDPMedCapNeg], where it is no longer possible to specify payload
type numbers, it is possible to use the parameter substitution rule, type numbers, it is possible to use the parameter substitution rule,
an example of this is. an example of this is.
---- ----
... ...
a=mcap:1 video H264/90000 a=mcap:1 video H264/90000
a=acap:1 imageattr:%1% send [x=720,y=576,sar=[0.91,1.0,1.09,1.45]] a=acap:1 imageattr:%1% send [x=720,y=576,sar=[0.91,1.0,1.09,1.45]]
... ...
---- ----
Where %1% maps to media capability number 1. Where %1% maps to media capability number 1.
3.3.6. Interaction with codec parameters 3.2.6. Interaction with codec parameters
As most codecs specifies some kind of indication of for example the As the SDP for most codecs already specifies some kind of indication
image size already at session setup, some measures must be taken to of, for example, the image size, at session set up, measures must be
avoid that the image attribute conflicts with this already existing taken to avoid conflicts between the image attribute and this already
information. existing information.
The following subsections describes the most well known codecs and The following subsections describe the most well known codecs and how
how they define image-size related information. they define image-size related information.
3.3.6.1. H.263 3.2.6.1. H.263
The payload format for H.263 is described in [RFC4629]. The payload format for H.263 [H.263] is described in [RFC4629].
H.263 defines (on the fmtp line) a list of image sizes and their H.263 defines (on the fmtp line) a list of image sizes and their
maximum frame rates (profiles) that the offerer can receive. The maximum frame rates (profiles) that the offerer can receive. The
answerer is not allowed to modify this list and must reject a payload answerer is not allowed to modify this list and must reject a payload
type that contains an unsupported profile. The CUSTOM profile may be type that contains an unsupported profile. The CUSTOM profile may be
used for image size negotiation but support for asymmetry requires used for image size negotiation but support for asymmetry requires
the specification of two unidirectional media descriptions using the the specification of two unidirectional media descriptions using the
sendonly/recvonly attributes. sendonly/recvonly attributes.
3.3.6.2. H.264 3.2.6.2. H.264
The payload format for H.264 is described in [RFC3984] and updated in The payload format for H.264 [H.264] is described in [RFC3984] and
[RFC3984bis]. updated in [RFC3984bis].
H.264 defines image size related information in the fmtp line by H.264 defines image size related information in the fmtp line by
means of sprop-parameter-sets. According to the specification means of sprop-parameter-sets. According to the specification
several sprop-parameter-sets may be defined for one payload type. several sprop-parameter-sets may be defined for one payload type.
The sprop-parameter-sets describe the image size (+ more) that the The sprop-parameter-sets describe the image size (+ more) that the
offerer sends in the stream and need not be complete. This means offerer sends in the stream and need not be complete. This means
that this does not represent any negotiation. Moreover an answer is that this does not represent any negotiation. Moreover an answer is
not allowed to change the sprop-parameter-sets. not allowed to change the sprop-parameter-sets.
This configuration may be changed later inband if for instance image This configuration may be changed later inband if for instance image
sizes need to be changed or added. sizes need to be changed or added.
3.3.6.3. MPEG-4 3.2.6.3. MPEG-4
The payload format for MPEG-4 is described in [RFC3016]. The payload format for MPEG-4 [MPEG-4] is described in [RFC3016].
MPEG-4 defines a config parameter on the fmtp line which is a MPEG-4 defines a config parameter on the fmtp line which is a
hexadecimal representation of the MPEG-4 visual configuration hexadecimal representation of the MPEG-4 visual configuration
information. This configuration does not represent any negotiation information. This configuration does not represent any negotiation
and the answer is not allowed to change the parameter. and the answer is not allowed to change the parameter.
Currently it is not possible to change the configuration using inband It is not possible to change the configuration using inband
signaling. signaling.
3.3.6.4. Possible solutions 3.2.6.4. Possible solutions
The subsections above clearly indicate that this kind of information The subsections above clearly indicate that this kind of information
must be aligned well with the image attribute to avoid conflicts. must be aligned well with the image attribute to avoid conflicts.
There are a number of possible solutions: There are a number of possible solutions:
o Ignore payload format parameters: This may not work well in the o Ignore payload format parameters: This may not work well in the
presence of bad channel conditions especially in the beginning of presence of bad channel conditions especially in the beginning of
a session. Moreover this is not a good option for MPEG-4. a session. Moreover this is not a good option for MPEG-4.
o 2nd session-wide offer/answer round: In the 2nd offer/answer the o 2nd session-wide offer/answer round: In the 2nd offer/answer the
codec payload format specific parameters are defined based on the codec payload format specific parameters are defined based on the
outcome of the imageattr negotiation. The drawback with this is outcome of the 'imageattr' negotiation. The drawback with this is
that setup of the entire session (including audio) may be delayed that set up of the entire session (including audio) may be delayed
considerably, especially as the imageattr negotiation can already considerably, especially as the 'imageattr' negotiation can
itself cost up to two offer/answer rounds. Also the conflict already itself cost up to two offer/answer rounds. Also the
between the imageattr negotiation and the payload format specific conflict between the 'imageattr' negotiation and the payload
parameters is still present after the first offer/anser round and format specific parameters is still present after the first offer/
a fuzzy/buggy implementation may start media before the second anser round and a fuzzy/buggy implementation may start media
offer/answer is completed with unwanted results. before the second offer/answer is completed with unwanted results.
o 2nd session-wide offer/answer round only for video: This is o 2nd session-wide offer/answer round only for video: This is
similar to the alternative above with the exception that setup similar to the alternative above with the exception that set up
time for audio is not increased, moreover the port number for time for audio is not increased, moreover the port number for
video is set to 0 during the 1st offer answer round to avoid that video is set to 0 during the 1st offer answer round to avoid that
media flows. media flows.
This has the effect that video will blend in some time after the This has the effect that video will blend in some time after the
audio is started (up to 2 seconds delay). This alternative is audio is started (up to 2 seconds delay). This alternative is
likely the most clean-cut and failsafe alternative. The drawback likely the most clean-cut and failsafe alternative. The drawback
is, as the port number in the first offer is always zero, the is, as the port number in the first offer is always zero, the
media startup will always be delayed even though it would in fact media startup will always be delayed even though it would in fact
have been possible to start media already after the first offer/ have been possible to start media already after the first offer/
answer round. answer round.
3.3.7. Change of display in middle of session 3.2.7. Change of display in middle of session
A very likely scenario is that a user switches to another phone A very likely scenario is that a user switches to another phone
during a video telephony call or plugs the cellphone into an external during a video telephony call or plugs a cellphone into an external
monitor. In both cases it is very likely that a renegotiation is monitor. In both cases it is very likely that a renegotiation is
initiated using the SIP-REFER or SIP-UPDATE methods. It is initiated using the SIP-REFER or SIP-UPDATE methods. It is
RECOMMENDED to negotiate the image size during this renegotiation. RECOMMENDED to negotiate the image size during this renegotiation.
3.3.8. Use with layered codecs 3.2.8. Use with layered codecs
As the image attribute is a media line attribute, its use with As the image attribute is a media level attribute, its use with
layered codecs cause some concern. If the layers are transported in layered codecs cause some concern. If the layers are transported in
different RTP streams the layers are specified on different media different RTP streams the layers are specified on different media
descriptions and the relation is specified using the grouping descriptions and the relation is specified using the grouping
framework [GROUPING] and the depend attribute [RFC5583]. As it is framework [RFC3388] and the depend attribute [RFC5583]. As it is not
not possible to specify only one image attribute for several media possible to specify only one image attribute for several media
descriptions the solution is either to specify the same image descriptions the solution is either to specify the same image
attribute for each media description, or to only specify the image attribute for each media description, or to only specify the image
attribute for the base layer. attribute for the base layer.
3.3.9. Addition of parameters 3.2.9. Addition of parameters
The image attribute opens up for the addition of parameters in the The image attribute allows for the addition of parameters in the
future. To make backwards adaptation possible; an entity that future. To make backwards adaptation possible; an entity that
process the attribute MUST remove parameters that are not recognized processes the attribute MUST remove parameters that are not
before returning the attribute in the SDP answer. Addition of future recognized before returning the attribute in the SDP answer.
parameters that are not understood by the receiving endpoint may lead Addition of future parameters that are not understood by the
to ambiguities if mutual dependencies between parameters exist, receiving endpoint may lead to ambiguities if mutual dependencies
therefore addition of parameters must be done with great care. between parameters exist, therefore addition of parameters must be
done with great care.
4. Syntax description and examples 4. Examples
This section gives some more information on how to use the attribute This section gives some more information on how to use the attribute
both in terms of a syntax description and a few detailed examples. by means of a high-level example and a few detailed examples.
4.1. Description 4.1. A High-Level Example
In the description of the syntax we here assume that Alice wish to Assume that Alice wishes to set up a session with Bob and that Alice
setup a session with Bob and that Alice takes the first initiative. takes the first initiative. The syntactical white-space delimiters
The syntactical white-space delimiters (1*WSP) and double-quotes are (1*WSP) and double-quotes are removed to make reading easier.
removed to make reading easier.
In the offer Alice provides with information for both the send and In the offer Alice provides information for both the send and receive
receive (recv) directions using syntax version 1. For the send (recv) directions. For the send direction Alice provides a list that
direction Alice provides with a list that the answerer can select the answerer can select from. For the receive direction Alice may
from. For the receive direction Alice may either specify a desired either specify a desired image size range right away or a * to
image size range right away or a * to instruct Bob to fill with a instruct Bob to reply with a list of image sizes that Bob can support
list of image size that Bob can support to send. Using the overall for sending. Using the overall high level syntax the image attribute
high level syntax the image attribute may then look like may then look like
---- ----
a=imageattr:PT send attr-list recv attr-list a=imageattr:PT send attr-list recv attr-list
---- ----
or or
---- ----
a=imageattr:PT send attr-list recv * a=imageattr:PT send attr-list recv *
---- ----
In the first alternative the recv direction may be a full list of In the first alternative the recv direction may be a full list of
desired image size formats. It may however (and most likely) just be desired image size formats. It may however (and most likely) just be
a list with one alternative for the preferred x and y resolution. a list with one alternative for the preferred x and y resolution.
If Bob supports an x and y resolution in the given x and y range the If Bob supports an x and y resolution in at least one of the X and Y
answer from Bob will look like: ranges given in the send attr-list and in the recv attr-list of the
offer, the answer from Bob will look like:
---- ----
a=imageattr:PT send attr-list recv attr-list a=imageattr:PT send attr-list recv attr-list
---- ----
And the offer answer negotiation is done. Worth notice here is that And the offer answer negotiation is done. Worth notice here is that
the attr-list will likely be pruned in the answer. While it may the attr-list will likely be pruned in the answer. While it may
contain many different alternatives in the offer it may in the end contain many different alternatives in the offer it may in the end
contain just one or two alternatives in the end. contain just one or two alternatives.
If Bob does not support any x and y resolution in the given x and y
range in attr-list or a * was given for the recv direction then he
MUST either:
o Remove the corresponding part completely in which case the answer
from bob would look like:
----
a=imageattr:PT recv attr-list
----
Again it is worth notice that the attr-list for each direction is
likely pruned depending on preferred and supported options.
If the 1st offer (from Alice) already defines a desired image size
for the recv direction the answerer can do one of the following:
1. Accept the image size and return it in the answer.
2. Replace with a list of options in the answer.
3. Remove the corresponding part completely. This may happen if it
is deemed that it is unlikely that the list of options is
supported. The answer will then lack a description for the send
direction and will look like:
If Bob does not support any x and y resolution in any of of the X and
Y ranges given in the send attr-list or in the recv attr-list, the
corresponding part is removed completely. In this case the answer
from Bob would look like:
---- ----
a=imageattr:PT recv attr-list a=imageattr:PT recv attr-list
---- ----
In the above example none of the offered alternatives in the recv
attr-list was supported. Again it is worth notice that the attr-list
for each direction is likely pruned depending on preferred and
supported options.
A few examples to highlight the syntax, here is assumed where needed 4.2. Detailed Examples
that Alice initiates a session with Bob
4.2. Examples
This section gives a few detailed examples This section gives a few detailed examples, it is assumed where
needed that Alice initiates a session with Bob
4.2.1. Example 1 4.2.1. Example 1
Two image resolution alternatives are offered with 800x640 with Two image resolution alternatives are offered with 800x640 with
sar=1.1 having the highest preference sar=1.1 having the highest preference
It is also indicated that Alice wish to display video with a It is also indicated that Alice wish to display video with a
resolution of 330x250 on her display resolution of 330x250 on her display
---- ----
a=imageattr:97 send [x=800,y=640,sar=1.1,q=0.6] [x=480,y=320] \ a=imageattr:97 send [x=800,y=640,sar=1.1,q=0.6] [x=480,y=320] \
recv [x=330,y=250] recv [x=330,y=250]
---- ----
In case Bob accepts the "recv [x=330,y=250]" the answer may look like In case Bob accepts the "recv [x=330,y=250]" the answer may look like
---- ----
a=imageattr:97 recv [x=800,y=640,sar=1.1] \ a=imageattr:97 recv [x=800,y=640,sar=1.1] \
send [x=330,y=250] send [x=330,y=250]
---- ----
Indicating that the receiver (Bob) wish the encoder (on Alice's side) Indicating that the receiver (Bob) wish the encoder (on Alice's side)
to compensate for a sample aspect ratio of 1.1 (11:10) and desires an to compensate for a sample aspect ratio of 1.1 (11:10) and desires an
image size on its screen of 800x640. image size on its screen of 800x640.
There is however a possibility that "recv [x=330,y=250]" is not There is however a possibility that "recv [x=330,y=250]" is not
supported. If the case, Bob may completely remove this part or supported. If the case, Bob may completely remove this part or
replace it with a list of supported image sizes. replace it with a list of supported image sizes.
---- ----
a=imageattr:97 recv [x=800,y=640,sar=1.1] \ a=imageattr:97 recv [x=800,y=640,sar=1.1] \
send [x=[320:16:640],y=[240:16:480],par=[1.2-1.3]] send [x=[320:16:640],y=[240:16:480],par=[1.2-1.3]]
---- ----
Alice can then select a valid image size which is closest to the one Alice can then select a valid image size which is closest to the one
that was originally desired (336x256) and performs a second offer/ that was originally desired (336x256) and performs a second offer/
answer answer
---- ----
a=imageattr:97 send [x=800,y=640,sar=1.1] \ a=imageattr:97 send [x=800,y=640,sar=1.1] \
recv [x=336,y=256] recv [x=336,y=256]
---- ----
Bob replies with (actually not necessary): Bob replies with:
---- ----
a=imageattr:97 recv [x=800,y=640,sar=1.1] \ a=imageattr:97 recv [x=800,y=640,sar=1.1] \
send [x=336,y=256] send [x=336,y=256]
---- ----
4.2.2. Example 2 4.2.2. Example 2
Two image resolution sets are offered with the first having a higher Two image resolution sets are offered with the first having a higher
preference (q=0.6). preference (q=0.6).
---- ----
a=imageattr:97 \ a=imageattr:97 \
send [x=[480:16:800],y=[320:16:640],par=[1.2-1.3],q=0.6] \ send [x=[480:16:800],y=[320:16:640],par=[1.2-1.3],q=0.6] \
[x=[176:8:208],y=[144:8:176],par=[1.2-1.3]] \ [x=[176:8:208],y=[144:8:176],par=[1.2-1.3]] \
recv * recv *
---- ----
The x-axis resolution can take the values 480 to 800 in 16 pixels The x-axis resolution can take the values 480 to 800 in 16 pixels
steps and 176 to 208 in 8 pixels steps. The par parameter limits the steps and 176 to 208 in 8 pixels steps. The par parameter limits the
set of possible x and y screen resolution combinations such that set of possible x and y screen resolution combinations such that
800x640 (ratio=1.25) is a valid combination while 720x608 800x640 (ratio=1.25) is a valid combination while 720x608
(ratio=1.18) or 800x608 (ratio=1.31) are invalid combinations. (ratio=1.18) or 800x608 (ratio=1.31) are invalid combinations.
For the recv direction (Bob->Alice) Bob is requested to provide with For the recv direction (Bob->Alice) Bob is requested to provide with
a list of supported image sizes a list of supported image sizes
4.2.3. Example 3 4.2.3. Example 3
In this example is defined a complete SDP offer for the video media In this example a complete SDP offer is defined.
part
---- ----
m=video 49154 RTP/AVP 99 m=video 49154 RTP/AVP 99
a=rtpmap:99 H264/90000 a=rtpmap:99 H264/90000
a=fmtp:99 packetization-mode=0;profile-level-id=42e011; \ a=fmtp:99 packetization-mode=0;profile-level-id=42e011; \
sprop-parameter-sets=Z0LgC5ZUCg/I,aM4BrFSAa sprop-parameter-sets=Z0LgC5ZUCg/I,aM4BrFSAa
a=imageattr:99 \ a=imageattr:99 \
send [x=176,y=144] [x=224,y=176] [x=272,y=224] [x=320,y=240] \ send [x=176,y=144] [x=224,y=176] [x=272,y=224] [x=320,y=240] \
recv [x=176,y=144] [x=224,y=176] [x=272,y=224,q=0.6] [x=320,y=240] recv [x=176,y=144] [x=224,y=176] [x=272,y=224,q=0.6] [x=320,y=240]
---- ----
In the send direction, sprop-parameter-sets is defined for a In the send direction, sprop-parameter-sets is defined for a
resolution of 320x240 which is the largest image size offered in the resolution of 320x240 which is the largest image size offered in the
send direction. This means that if 320x240 is selected, no send direction. This means that if 320x240 is selected, no
additional offer/answer is necessary. In the receive direction four additional offer/answer is necessary. In the receive direction four
alternative image sizes are offered with 272x224 being the preferred alternative image sizes are offered with 272x224 being the preferred
choice. choice.
The answer may look like: The answer may look like:
----
---- m=video 49154 RTP/AVP 99
m=video 49154 RTP/AVPF 99 a=rtpmap:99 H264/90000
a=rtpmap:99 H264/90000 a=fmtp:99 packetization-mode=0;profile-level-id=42e011; \
a=fmtp:99 packetization-mode=0;profile-level-id=42e011; \ sprop-parameter-sets=Z0LgC5ZUCg/I,aM4BrFSAa
sprop-parameter-sets=Z0LgC5ZUCg/I,aM4BrFSAa a=imageattr:99 send [x=320,y=240] recv [x=320,y=240]
a=imageattr:99 send [x=320,y=240] recv [x=320,y=240] ----
----
Indicating (in this example) that the image size is 320x240 in both Indicating (in this example) that the image size is 320x240 in both
directions. Although the offerer preferred 272x224 for the receive directions. Although the offerer preferred 272x224 for the receive
direction, the answerer might not be able to offer 272x224 or not direction, the answerer might not be able to offer 272x224 or not
allow encoding and decoding of video of different image sizes allow encoding and decoding of video of different image sizes
simultaneously. The answerer sets new sprop-parameter-sets, simultaneously. The answerer sets new sprop-parameter-sets,
constructed for both send and receive directions at the restricted constructed for both send and receive directions at the restricted
conditions and image size of 320x240. conditions and image size of 320x240.
4.2.4. Example 4 4.2.4. Example 4
This example illustrates in more detail how compensation for This example illustrates in more detail how compensation for
different sample aspect ratios can be negotiated with the image different sample aspect ratios can be negotiated with the image
attribute. attribute.
We setup a session between Alice and Bob, Alice is the offerer of the We set up a session between Alice and Bob, Alice is the offerer of
session. The offer (from Alice) contains the image attribute below: the session. The offer (from Alice) contains the image attribute
below:
---- ----
a=imageattr:97 \ a=imageattr:97 \
send [sar=[1.0-1.3],x=400:16:800],y=[320:16:640],par=[1.2-1.3]] \ send [sar=[1.0-1.3],x=400:16:800],y=[320:16:640],par=[1.2-1.3]] \
recv [sar=1.1,x=800,y=600] recv [sar=1.1,x=800,y=600]
---- ----
First we consider the recv direction: The offerer (Alice) explicitly First we consider the recv direction: The offerer (Alice) explicitly
states that she wish to receive the screen resolution 800x600, states that she wish to receive the screen resolution 800x600,
however she also indicates that the screen on her display does not however she also indicates that the screen on her display does not
use square pixels, the sar value=1.1 means that Bob must (preferably) use square pixels, the sar value=1.1 means that Bob must (preferably)
compensate for this. So.. If Bob's video camera produces square compensate for this.
pixels, and wish to satisfy Alice's sar requirement, the image So.. If Bob's video camera produces square pixels, and wish to
processing algorithm must rescale a 880x600 pixel image (880=800*1.1) satisfy Alice's sar requirement, the image processing algorithm must
to 800x600 pixels (could be done other ways). rescale a 880x600 pixel image (880=800*1.1) to 800x600 pixels (could
be done other ways).
... and now the send direction: Alice indicates that she can (in the ... and now the send direction: Alice indicates that she can (in the
image processing algorithms) rescale the image for sample aspect image processing algorithms) rescale the image for sample aspect
ratios in the range 1.0 to 1.3. She can also provide with a number ratios in the range 1.0 to 1.3. She can also provide with a number
of different image sizes (in pixels) ranging from 400x320 to 800x640. of different image sizes (in pixels) ranging from 400x320 to 800x640.
Bob inspects the offered sar and image sizes and responds with the Bob inspects the offered sar and image sizes and responds with the
modified image attribute modified image attribute
---- ----
a=imageattr:97 \ a=imageattr:97 \
recv [sar=1.15,x=464,y=384] \ recv [sar=1.15,x=464,y=384] \
send [sar=1.1,x=800,y=600] send [sar=1.1,x=800,y=600]
---- ----
Alice will, in order to satisfy Bob's request, need to rescale the Alice will, in order to satisfy Bob's request, need to rescale the
image from her video camera from 534x384 (534=464*1.15) to 464x384. image from her video camera from 534x384 (534=464*1.15) to 464x384.
Neither part is required to rescale like this (sar MAY be ignored), Neither part is required to rescale like this (sar may be ignored),
the consequence will of course be a distorted image. the consequence will of course be a distorted image.
5. IANA Considerations 5. IANA Considerations
Following the guidelines in [RFC4566], the IANA is requested to Following the guidelines in [RFC4566], the IANA is requested to
register one new SDP attribute: register one new SDP attribute:
Attribute name: imageattr Attribute name: imageattr
Long form name: Image attribute Long form name: Image attribute
skipping to change at page 20, line 35 skipping to change at page 19, line 38
Type of attribute: Media-level Type of attribute: Media-level
Subject to charset: No Subject to charset: No
Purpose: This attribute defines the ability to negotiate Purpose: This attribute defines the ability to negotiate
various image attributes such as image sizes. various image attributes such as image sizes.
The attribute contains a number of parameters The attribute contains a number of parameters
which can be modified in and offer/answer which can be modified in and offer/answer
exchange. exchange.
Appropriate values: See Section 3.2.1 of RFCXXXX Appropriate values: See Section 3.1.1 of RFCXXXX
Contact name: Authors of RFCXXXX Contact name: Authors of RFCXXXX
Note to RFC Editor: please replace "RFCXXXX" above with the RFC Note to RFC Editor: please replace "RFCXXXX" above with the RFC
number of this document, and remove this note. number of this document, and remove this note.
6. Security Considerations 6. Security Considerations
This draft does not add any additional security issues other than This draft does not add any additional security issues other than
those already existing with currently specified offer/answer those already existing with currently specified offer/answer
skipping to change at page 21, line 16 skipping to change at page 20, line 16
The authors would like to thank the people who has contributed with The authors would like to thank the people who has contributed with
objections and suggestions to this draft and provided with valuable objections and suggestions to this draft and provided with valuable
guidance in the amazing video-coding world. Special thanks go to guidance in the amazing video-coding world. Special thanks go to
Clinton Priddle, Roni Even, Randell Jesup, and Dan Wing. Clinton Priddle, Roni Even, Randell Jesup, and Dan Wing.
8. Changes 8. Changes
The main changes are: The main changes are:
From WG -04 to WG -05
* Review based on WGLC comments
* ABNF improved
* Change use of RFC2119 keywords (MUST, SHOULD, MAY) to lowercase
in some sections
* Clarification on the directions send and recv in sendrecv,
inactive modes
* Clarification around sar parameter added
From WG -03 to WG -04 From WG -03 to WG -04
* Rearrangement of text * Rearrangement of text
* Clarification of offer/answer rules * Clarification of offer/answer rules
* Cleaned IANA section * Cleaned IANA section
From WG -02 to WG -03 From WG -02 to WG -03
skipping to change at page 22, line 4 skipping to change at page 21, line 19
* Cleanup of syntax, ABNF form * Cleanup of syntax, ABNF form
* Additional example * Additional example
From -01 to -02 From -01 to -02
* Cleanup of the sar and par parameters to make them match the * Cleanup of the sar and par parameters to make them match the
established conventions established conventions
* Requirement specification added * Requirement specification added
* New bidirectional syntax * New bidirectional syntax
* Interoperability considerations with well known video codecs * Interoperability considerations with well known video codecs
discussed discussed
9. References 9. References
9.1. Informative References 9.1. Normative References
[GROUPING] [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
IETF, "The SDP Grouping Framework, http://tools.ietf.org/ Requirement Levels", BCP 14, RFC 2119, March 1997.
html/draft-ietf-mmusic-rfc3388bis-03".
[RFC3264] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model
with Session Description Protocol (SDP)", RFC 3264,
June 2002.
[RFC3388] Camarillo, G., Eriksson, G., Holler, J., and H.
Schulzrinne, "Grouping of Media Lines in the Session
Description Protocol (SDP)", RFC 3388, December 2002.
[RFC4566] Handley, M., Jacobson, V., and C. Perkins, "SDP: Session
Description Protocol", RFC 4566, July 2006.
[RFC5234] Crocker, D. and P. Overell, "Augmented BNF for Syntax
Specifications: ABNF", STD 68, RFC 5234, January 2008.
[RFC5583] Schierl, T. and S. Wenger, "Signaling Media Decoding
Dependency in the Session Description Protocol (SDP)",
RFC 5583, July 2009.
9.2. Informative References
[H.263] ITU-T, "ITU-T Recommendation H.263 (2005): "Video coding
for low bit rate communication"".
[H.264] ITU-T, "ITU-T Recommendation H.264, [H.264] ITU-T, "ITU-T Recommendation H.264,
http://www.itu.int/rec/T-REC-H.264-200711-I/en". http://www.itu.int/rec/T-REC-H.264-200711-I/en".
[MPEG-4] ISO/IEC, "ISO/IEC 14496-2:2004: "Information technology -
Coding of audio-visual objects - Part 2: Visual"".
[RFC3016] Kikuchi, Y., Nomura, T., Fukunaga, S., Matsui, Y., and H. [RFC3016] Kikuchi, Y., Nomura, T., Fukunaga, S., Matsui, Y., and H.
Kimata, "RTP Payload Format for MPEG-4 Audio/Visual Kimata, "RTP Payload Format for MPEG-4 Audio/Visual
Streams", RFC 3016, November 2000. Streams", RFC 3016, November 2000.
[RFC3264] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model
with Session Description Protocol (SDP)", RFC 3264,
June 2002.
[RFC3984] Wenger, S., Hannuksela, M., Stockhammer, T., Westerlund, [RFC3984] Wenger, S., Hannuksela, M., Stockhammer, T., Westerlund,
M., and D. Singer, "RTP Payload Format for H.264 Video", M., and D. Singer, "RTP Payload Format for H.264 Video",
RFC 3984, February 2005. RFC 3984, February 2005.
[RFC3984bis] [RFC3984bis]
IETF, "RTP Payload Format for H.264 Video, http:// IETF, "RTP Payload Format for H.264 Video, http://
tools.ietf.org/wg/avt/draft-ietf-avt-rtp-rfc3984bis/". tools.ietf.org/wg/avt/draft-ietf-avt-rtp-rfc3984bis/".
[RFC4234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax
Specifications: ABNF", RFC 4234, October 2005.
[RFC4566] Handley, M., Jacobson, V., and C. Perkins, "SDP: Session
Description Protocol", RFC 4566, July 2006.
[RFC4587] Even, R., "RTP Payload Format for H.261 Video Streams", [RFC4587] Even, R., "RTP Payload Format for H.261 Video Streams",
RFC 4587, August 2006. RFC 4587, August 2006.
[RFC4629] Ott, H., Bormann, C., Sullivan, G., Wenger, S., and R. [RFC4629] Ott, H., Bormann, C., Sullivan, G., Wenger, S., and R.
Even, "RTP Payload Format for ITU-T Rec", RFC 4629, Even, "RTP Payload Format for ITU-T Rec", RFC 4629,
January 2007. January 2007.
[RFC5583] Schierl, T. and S. Wenger, "Signaling Media Decoding
Dependency in the Session Description Protocol (SDP)",
RFC 5583, July 2009.
[S4-080144]
3GPP, "Signaling of Image Size: Combining Flexibility and
Low Cost, http://www.3gpp.org/ftp/tsg_sa/WG4_CODEC/
TSGS4_48/Docs/S4-080144.zip".
[SDPCapNeg] [SDPCapNeg]
IETF, "SDP Capability Negotiation, http://tools.ietf.org/ IETF, "SDP Capability Negotiation, http://tools.ietf.org/
wg/mmusic/draft-ietf-mmusic-sdp-capability-negotiation". wg/mmusic/draft-ietf-mmusic-sdp-capability-negotiation".
[SDPMedCapNeg] [SDPMedCapNeg]
IETF, "SDP media capabilities Negotiation, http:// IETF, "SDP media capabilities Negotiation, http://
tools.ietf.org/wg/mmusic/ tools.ietf.org/wg/mmusic/
draft-ietf-mmusic-sdp-media-capabilities". draft-ietf-mmusic-sdp-media-capabilities".
9.2. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
Authors' Addresses Authors' Addresses
Ingemar Johansson Ingemar Johansson
Ericsson AB Ericsson AB
Laboratoriegrand 11 Laboratoriegrand 11
SE-971 28 Luleae SE-971 28 Luleae
SWEDEN SWEDEN
Phone: +46 73 0783289 Phone: +46 73 0783289
Email: ingemar.s.johansson@ericsson.com Email: ingemar.s.johansson@ericsson.com
 End of changes. 131 change blocks. 
379 lines changed or deleted 397 lines changed or added

This html diff was produced by rfcdiff 1.38. The latest version is available from http://tools.ietf.org/tools/rfcdiff/