1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
|
Internet Engineering Task Force (IETF) I. Johansson
Request for Comments: 6236 Ericsson AB
Category: Standards Track K. Jung
ISSN: 2070-1721 Samsung Electronics Co., Ltd.
May 2011
Negotiation of Generic Image Attributes in
the Session Description Protocol (SDP)
Abstract
This document proposes a new generic session setup attribute to make
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-
held terminal to display video without the need to rescale the image,
something that may consume large amounts of memory and processing
power. The document also helps to maintain an optimal bitrate for
video as only the image size that is desired by the receiver is
transmitted.
Status of This Memo
This is an Internet Standards Track document.
This document is a product of the Internet Engineering Task Force
(IETF). It represents the consensus of the IETF community. It has
received public review and has been approved for publication by the
Internet Engineering Steering Group (IESG). Further information on
Internet Standards is available in Section 2 of RFC 5741.
Information about the current status of this document, any errata,
and how to provide feedback on it may be obtained at
http://www.rfc-editor.org/info/rfc6236.
Johansson & Jung Standards Track [Page 1]
^L
RFC 6236 Image Attributes in SDP May 2011
Copyright Notice
Copyright (c) 2011 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1. Requirements . . . . . . . . . . . . . . . . . . . . . . . 4
2. Conventions Used in This Document . . . . . . . . . . . . . . 5
3. Specification of the 'imageattr' SDP Attribute . . . . . . . . 5
3.1. Attribute Syntax . . . . . . . . . . . . . . . . . . . . . 5
3.1.1. Overall View of Syntax . . . . . . . . . . . . . . . . 5
3.2. Considerations . . . . . . . . . . . . . . . . . . . . . . 11
3.2.1. No imageattr in First Offer . . . . . . . . . . . . . 11
3.2.2. Different Payload Type Numbers in Offer and Answer . . 11
3.2.3. Asymmetry . . . . . . . . . . . . . . . . . . . . . . 12
3.2.4. sendonly and recvonly . . . . . . . . . . . . . . . . 12
3.2.5. Sample Aspect Ratio . . . . . . . . . . . . . . . . . 13
3.2.6. SDPCapNeg Support . . . . . . . . . . . . . . . . . . 13
3.2.7. Interaction with Codec Parameters . . . . . . . . . . 14
3.2.8. Change of Display in Middle of Session . . . . . . . . 16
3.2.9. Use with Layered Codecs . . . . . . . . . . . . . . . 16
3.2.10. Addition of Parameters . . . . . . . . . . . . . . . . 16
4. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.1. A High-Level Example . . . . . . . . . . . . . . . . . . . 16
4.2. Detailed Examples . . . . . . . . . . . . . . . . . . . . 17
4.2.1. Example 1 . . . . . . . . . . . . . . . . . . . . . . 17
4.2.2. Example 2 . . . . . . . . . . . . . . . . . . . . . . 18
4.2.3. Example 3 . . . . . . . . . . . . . . . . . . . . . . 19
4.2.4. Example 4 . . . . . . . . . . . . . . . . . . . . . . 20
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 20
6. Security Considerations . . . . . . . . . . . . . . . . . . . 21
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 21
8. References . . . . . . . . . . . . . . . . . . . . . . . . . . 22
8.1. Normative References . . . . . . . . . . . . . . . . . . . 22
8.2. Informative References . . . . . . . . . . . . . . . . . . 22
Johansson & Jung Standards Track [Page 2]
^L
RFC 6236 Image Attributes in SDP May 2011
1. Introduction
This document proposes a new SDP attribute to make it possible to
negotiate different image attributes, such as image size. The term
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 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 other info.
Allowing negotiation of the image size provides a number of benefits:
o Less image distortion: Rescaling of images introduces additional
distortion, something that can be avoided (at least on the
receiver side) if the image size can be negotiated.
o Reduced receiver complexity: Image rescaling can be quite
computation intensive. For low-end devices, this can be a
problem.
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
288x256 is displayed on the receiver screen.
o Memory requirement: The receiver device will know the size of the
image and can then allocate memory accordingly.
o Optimal aspect ratio: The indication of the supported image sizes
and aspect ratio allows the receiver to select the most
appropriate combination based on its rescaling capabilities and
the desired rendering. For example, if a sender proposes three
resolutions in its SDP offer (100x200, 200x100, and 100x100) with
sar=1.0 (1:1) etc., then the receiver can select the option that
fits the receiver screen best.
In cases where rescaling is not implemented (for example, rescaling
is not mandatory to implement in H.264 [H.264]), the indication of
the image attributes may still provide an optimal use of bandwidth
because the attribute will give the encoder a better indication about
what image size is preferred anyway and will thus help to avoid
wasting bandwidth by encoding with an unnecessarily large resolution.
For implementers that are considering rescaling issues, it is worth
noting that there are several benefits to doing it on the sender
side:
o Rescaling on the sender/encoder side is likely to be easier to do
as the camera-related software/hardware already contains the
Johansson & Jung Standards Track [Page 3]
^L
RFC 6236 Image Attributes in SDP May 2011
necessary functionality for zooming/cropping/trimming/sharpening
the video signal. Moreover, rescaling is generally done in RGB or
YUV domains and should not depend on the codecs used.
o The encoder may be able to encode in a number of formats but may
not know which format to choose as, without the image attribute,
it does not know the receiver's performance or preference.
o The quality drop due to digital domain rescaling using
interpolation is likely to be lower if it is done before the video
encoding rather than after the decoding especially when low
bitrate video coding is used.
o If low-complexity rescaling operations such as simple cropping
must be performed, the benefit with having this functionality on
the sender side is that it is then possible to present a miniature
"what you send" image on the display to help the user to frame the
image correctly.
Several of the existing standards ([H.263], [H.264], and [MPEG-4])
have support for different resolutions at different framerates. The
purpose of this document is to provide for a generic mechanism, which
is targeted mainly at the negotiation of the image size. However, to
make it more general, the attribute is named 'imageattr'.
This document is limited to point-to-point unicast communication
scenarios. The attribute may be used in centralized conferencing
scenarios as well but due to the abundance of configuration options,
it may then be difficult to come up with a configuration that fits
all parties.
1.1. 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
attributes that the SDP endpoint wishes to receive or send. Each
image attribute set must include a specific image size.
REQ-2: Support setup/negotiation of image attributes, meaning that
each side in the Offer/Answer should be able to negotiate the
image attributes it prefers to send and receive.
REQ-3: Interoperate with codec-specific parameters such as sprop-
parameter-sets in [H.264] or config in [MPEG-4].
Johansson & Jung Standards Track [Page 4]
^L
RFC 6236 Image Attributes in SDP May 2011
REQ-4: Make the attribute generic with as few codec specific
details/tricks as possible in order to be codec agnostic.
Besides the above mentioned requirements, the requirement below may
be applicable.
OPT-1: The image attribute should support the description of image-
related attributes for various types of media, including video,
pictures, images, etc.
2. Conventions Used in This Document
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 [RFC2119].
3. Specification of the 'imageattr' SDP Attribute
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.10.
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, and 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" )
1*WSP attr-list )
PT = 1*DIGIT / "*"
attr-list = ( set *(1*WSP set) ) / "*"
; WSP and DIGIT defined in [RFC5234]
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)
Johansson & Jung Standards Track [Page 5]
^L
RFC 6236 Image Attributes in SDP May 2011
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
; is allowed in a set.
;
; sar (sample aspect ratio) is the sample aspect ratio
; associated with the set (optional, MAY be ignored)
; par (picture aspect ratio) is the allowed
; ratio between the display's x and y physical
; size (optional)
; q (optional, range [0.0..1.0], default value 0.5)
; is the preference for the given set,
; a higher value means a higher preference
onetonine = "1" / "2" / "3" / "4" / "5" / "6" / "7" / "8" / "9"
; Digit between 1 and 9
xyvalue = onetonine *5DIGIT
; Digit between 1 and 9 that 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 occurrence of xyvalue MUST have a
; higher value than the leftmost occurrence.
/ ( "[" 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 occurrence of spvalue MUST have a higher
; value than the first
/ ( spvalue )
; A single value
Johansson & Jung Standards Track [Page 6]
^L
RFC 6236 Image Attributes in SDP May 2011
prange = ( "[" spvalue "-" spvalue "]" )
; Range between a lower and an upper level (inclusive)
; The second occurrence 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.
These specify the preferences for the media once the session is
set up, in the send and receive direction respectively from the
point of view of the sender of the session description. One of
the keywords ("send" or "recv") MAY be omitted; see Section 3.2.4
and Section 3.2.2 for a description of cases when this may be
appropriate.
o The "send" keyword and corresponding attribute list (attr-list)
MUST NOT occur more than once per image attribute.
o The "recv" keyword and corresponding attribute list (attr-list)
MUST NOT occur more than once per image attribute.
o PT is the payload type number; it MAY be set to "*" (wild card) to
indicate that the attribute applies to all payload types in the
media description.
o For sendrecv streams, both of the send and recv directions SHOULD
be present in the SDP.
o For inactive streams it is RECOMMENDED that both of the send and
recv directions are present in the SDP.
3.1.1.1. Parameter Rules
The following rules apply for the parameters.
Payload type number (PT): The image attribute is bound to a specific
codec by means of the payload type number. A wild card (*) can be
specified for the payload type number to indicate that it applies
to all payload types in the media description. Several image
attributes can be defined, for instance for different video codec
alternatives. This however requires that the payload type numbers
differ. Note that the attribute is associated to the codec(s),
for instance an SDP offer may specify payload type number 101
while the answer may specify 102, this may make it troublesome to
Johansson & Jung Standards Track [Page 7]
^L
RFC 6236 Image Attributes in SDP May 2011
specify a payload type number with the 'imageattr' attribute. See
Section 3.2.2 for a discussion and recommendation how this is
solved.
Preference (q): The preference for each set is 0.5 by default;
setting the optional q parameter to another value makes it
possible to set different preferences for the sets. A higher
value gives a higher preference for the given set.
sar: The sar (storage aspect ratio) parameter specifies the sample
aspect ratio associated to the given range of x and y values. The
sar parameter is defined as dx/dy where dx and dy are the physical
size of the pixels. Square pixels gives a sar=1.0. The parameter
sar MAY be expressed as a range or as a single value.
If this parameter is not present, a default sar value of 1.0 is
assumed.
The interpretation of sar differs between the send and the receive
directions.
* In the send direction, sar defines a specific sample aspect
ratio associated to a given x and y image size (range).
* In the recv direction, sar expresses that the receiver of the
given medium prefers to receive a given x and y resolution with
a given sample aspect ratio.
See Section 3.2.5 for a more detailed discussion.
The sar parameter will likely not solve all the issues that are
related to different sample aspect ratios, but it can help to
solve them and reduce aspect ratio distortion.
The response MUST NOT include a sar parameter if there is no
acceptable value given. The reason for 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
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
combinations; par is given as
par=[ratio_min-ratio_max]
Johansson & Jung Standards Track [Page 8]
^L
RFC 6236 Image Attributes in SDP May 2011
where ratio_min and ratio_max are the min and max allowed picture
aspect ratios.
If sar and the sample aspect ratio that the receiver actually uses in
the display are the same (or close), the relation between the x and y
pixel resolution and the physical size of the image is
straightforward. If however sar differs from the sample aspect ratio
of the receiver display, this must be taken into consideration when
the x and y pixel resolution alternatives are sorted out. See
Section 4.2.4 for an example of this.
3.1.1.2. Offer/Answer Rules
In accordance with [RFC3264], offer/answer exchange of the image
attribute is as follows.
o Offerer sending the offer:
* The offerer must be able to support the image attributes that
it offers, unless the offerer has expressed a wild card (*) in
the attribute list.
* It is recommended that a device that sees no reason to use the
image attribute includes the attribute with wild cards (*) in
the attribute lists anyway for the send and recv directions.
An example of this looks like:
a=imageattr:97 send * recv *
This gives the answerer the possibility of expressing its
preferences. The use of wild cards introduces a risk that the
message size can increase in an uncontrolled way. To reduce this
risk, these wild cards SHOULD only be replaced by an as small set as
possible.
o Answerer receiving the offer and sending the answer:
* The answerer may choose to keep the image attribute but is not
required to do so.
* The answerer may, for its receive and send direction, include
one or more entries that it can support from the set of entries
proposed in the offer.
* The answerer may also, for its receive and send direction,
replace the entries with a complete new set of entries
different from the original proposed by the offerer. The
Johansson & Jung Standards Track [Page 9]
^L
RFC 6236 Image Attributes in SDP May 2011
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
it is deemed that it cannot support any of the proposed
entries.
* The answerer should not include an image attribute in the
answer if it was not present in the offer.
o Offerer receiving the answer:
* If the image attribute is not included in the SDP answer the
offerer SHOULD continue to process the answer as if this
mechanism had not been offered.
* If the image attribute is included in the SDP answer but none
of the entries are usable or acceptable, the offerer MUST
resort to other methods to determine the appropriate image
size. In this case, the offerer must also issue a new offer/
answer without the image attribute to avoid misunderstandings
between the offerer and answerer. This will avoid the risk of
infinite negotiations.
3.2. Considerations
3.2.1. No imageattr in First Offer
When the initial offer does not contain the 'imageattr' attribute,
the rules in Section 3.1.1.2 require the attribute to be absent in
the answer. The reasons for this are:
o The offerer of the initial SDP is not likely to understand the
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 wild carded parameters if it has no preference.
o Inclusion of the image attribute in the answer may come in
conflict with the rules in Section 3.1.1.2, especially the rules
that apply to "offerer receiving the answer".
For the above reasons, it is RECOMMENDED that a device that sees no
reason to use the image attribute includes the attribute with wild
cards (*) in the attribute lists anyway for the send and recv
directions.
Johansson & Jung Standards Track [Page 10]
^L
RFC 6236 Image Attributes in SDP May 2011
3.2.2. Different Payload Type Numbers in Offer and Answer
In some cases, the answer may specify a different media payload type
number than the offer. As an example, the offer SDP may have the
m-line
m=video 49154 RTP/AVP 99
while the answer SDP may have the m-line
m=video 49154 RTP/AVP 100
If the image attribute in the offer specifies payload type number 99,
this attribute will then have no meaning in the answerers receive
direction as the m-line specifies media payload type number 100.
There are a few ways to solve this.
1. Use a wild card "*" as the payload type number in the image
attribute in the offer SDP. The answer SDP also uses the wild
card. The drawback with this approach is that this attribute
then applies to all payload type numbers in the media
description.
2. Specify a wild card "*" as the payload type number in the image
attribute in the answer SDP. The offer SDP may contain a defined
payload type number in the image attribute but the answer SDP
replaces this with a wild card. The drawback here is similar to
what is listed above.
3. The image attribute is split in two parts in the SDP answer. For
example the offer SDP (only the parts of interest in this
discussion) looks like:
m=video 49154 RTP/AVP 99
a=imageattr:99 send ... recv ...
The answer SDP looks like:
m=video 49154 RTP/AVP 100
a=imageattr:99 send ...
a=imageattr:100 recv ...
This alternative does not pose any drawbacks. Moreover, it allows
specification of different image attributes if more than one payload
type is specified in the offer SDP.
Johansson & Jung Standards Track [Page 11]
^L
RFC 6236 Image Attributes in SDP May 2011
Of the alternatives listed above, the last one MUST be used as it is
the most safe. The other alternatives MUST NOT be used.
3.2.3. Asymmetry
While the image attribute supports asymmetry, there are some
limitations. One important limitation is that the codec being used
can only support up to a given maximum resolution for a given profile
level.
As an example, H.264 [H.264] with profile level 1.2 does not support
higher resolution than 352x288 (CIF). The offer/answer rules imply
that the same profile level must be used in both directions. This
means that in an asymmetric scenario where Alice wants an image size
of 580x360 and Bob wants 150x120, profile level 2.2 is needed in both
directions even though profile level 1 would have been sufficient in
one direction.
Currently, the only solution to this problem is to specify two
unidirectional media descriptions. Note however that the asymmetry
issue for the H.264 codec is solved by means of the level-asymmetry-
allowed parameter in [RFC6184].
3.2.4. sendonly and recvonly
If the directional attributes a=sendonly or a=recvonly are given for
a medium, there is of course no need to specify the image attribute
for both directions. Therefore, one of the directions in the
attribute may be omitted. However, it may be good to do the image
attribute negotiation in both directions in case the session is
updated for media in both directions at a later stage.
3.2.5. Sample Aspect Ratio
The relationship between the sar parameter and the x and y pixel
resolution deserves some extra discussion. Consider the offer from
Alice to Bob (we set the recv direction aside for the moment):
a=imageattr:97 send [x=720,y=576,sar=1.1]
If the receiver display has square pixels, the 720x576 image would
need to be rescaled to for example 792x576 or 720x524 to ensure a
correct image aspect ratio. This in practice means that rescaling
would need to be performed on the receiver side, something that is
contrary to the spirit of this document.
Johansson & Jung Standards Track [Page 12]
^L
RFC 6236 Image Attributes in SDP May 2011
To avoid this problem Alice may specify a range of values for the sar
parameter like:
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
ratios, leaving Bob to decide which one he prefers.
3.2.6. SDPCapNeg Support
The image attribute can be used within the SDP Capability Negotiation
[RFC5939] framework and its use is then specified using the "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]]
For use with SDP Media Capability Negotiation extension
[SDPMedCapNeg], where it is no longer possible to specify payload
type numbers, it is possible to use the parameter substitution rule,
an example of this is
...
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]]
...
where %1% maps to media capability number 1.
It is also possible to use the a=mscap attribute like in the example
below.
...
a=mcap:1 video H264/90000
a=mscap:1 imageattr send [x=720,y=576,sar=[0.91,1.0,1.09,1.45]]
...
3.2.7. Interaction with Codec Parameters
As the SDP for most codecs already specifies some kind of indication
of, for example, the image size, at session setup, measures must be
taken to avoid conflicts between the image attribute and this already
existing information.
The following subsections describe the most well known codecs and how
they define image-size related information. Section 3.2.7.4 outlines
a few possible solutions, but this document does not make a
recommendation for any of them.
Johansson & Jung Standards Track [Page 13]
^L
RFC 6236 Image Attributes in SDP May 2011
3.2.7.1. H.263
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
maximum frame rates (profiles) that the offerer can receive. The
answerer is not allowed to modify this list and must reject a payload
type that contains an unsupported profile. The CUSTOM profile may be
used for image size negotiation but support for asymmetry requires
the specification of two unidirectional media descriptions using the
sendonly/recvonly attributes.
3.2.7.2. H.264
The payload format for H.264 [H.264] is described in [RFC6184].
H.264 defines information related to image size in the fmtp line by
means of sprop-parameter-sets. According to the specification,
several sprop-parameter-sets may be defined for one payload type.
The sprop-parameter-sets describe the image size (+ more) that the
offerer sends in the stream and need not be complete. This means
that sprop-parameter-sets does not represent any negotiation and the
answer is not allowed to change the sprop-parameter-sets.
This configuration may be changed later inband if for instance image
sizes need to be changed or added.
3.2.7.3. MPEG-4
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
hexadecimal representation of the MPEG-4 visual configuration
information. This configuration does not represent any negotiation
and the answer is not allowed to change the parameter.
It is not possible to change the configuration using inband
signaling.
3.2.7.4. Possible Solutions
The subsections above clearly indicate that this kind of information
must be aligned well with the image attribute to avoid conflicts.
There are a number of possible solutions, listed below without any
preference:
Johansson & Jung Standards Track [Page 14]
^L
RFC 6236 Image Attributes in SDP May 2011
o Ignore payload format parameters: This may not work well in the
presence of bad channel conditions especially in the beginning of
a session. Moreover, this is not a good option for MPEG-4.
o Second session-wide offer/answer round: In the second offer/
answer, the parameters specific to codec payload format are
defined based on the outcome of the 'imageattr' negotiation. The
drawback with this is that setup of the entire session (including
audio) may be delayed considerably, especially as the 'imageattr'
negotiation can already itself cost up to two offer/answer rounds.
Also, the conflict between the 'imageattr' negotiation and the
parameters specific to payload format is still present after the
first offer/answer round and a fuzzy/buggy implementation may
start media before the second offer/answer is completed with
unwanted results.
o Second session-wide offer/answer round only for video: This is
similar to the alternative above with the exception that setup
time for audio is not increased; moreover, the port number for
video is set to 0 during the first offer answer round to avoid the
flow of media.
This has the effect that video will blend in some time after the
audio is started (up to 2 seconds delay). This alternative is
likely the most clean-cut and failsafe. The drawback 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 have been
possible to start media after the first offer/answer round.
Note that according to [RFC3264], a port number of zero means that
the whole media line is rejected, meaning that a new offer for the
same port number should be treated as a completely new stream and
not as an update. The safest way to solve this problem is to use
preconditions; this is however outside the scope of this document.
3.2.8. Change of Display in Middle of Session
A very likely scenario is that a user switches to another phone
during a video telephony call or plugs a cellphone into an external
monitor. In both cases, it is very likely that a renegotiation is
initiated using the SIP-REFER [RFC3515] or SIP-UPDATE [RFC3311]
methods. It is RECOMMENDED to negotiate the image size during this
renegotiation.
Johansson & Jung Standards Track [Page 15]
^L
RFC 6236 Image Attributes in SDP May 2011
3.2.9. Use with Layered Codecs
As the image attribute is a media-level attribute, its use with
layered codecs causes some concern. If the layers are transported in
different RTP streams, the layers are specified on different media
descriptions, and the relation is specified using the grouping
framework [RFC5888] and the depend attribute [RFC5583]. As it is not
possible to specify only one image attribute for several media
descriptions the solution is either to specify the same image
attribute for each media description, or to only specify the image
attribute for the base layer.
3.2.10. Addition of Parameters
The image attribute allows for the addition of parameters in the
future. To make backwards adaptation possible, an entity that
processes the attribute MUST ignore any unknown parameters in the
offer and MUST NOT include them in the answer it generates. Addition
of future parameters that are not understood by the receiving
endpoint may lead to ambiguities if mutual dependencies between
parameters exist; therefore, addition of parameters must be done with
great care.
4. Examples
This section gives some more information on how to use the attribute
by means of a high-level example and a few detailed examples.
4.1. A High-Level Example
Assume that Alice wishes to set up a session with Bob and that Alice
takes the first initiative. The syntactical white-space delimiters
(1*WSP) and double-quotes are removed to make reading easier.
In the offer, Alice provides information for both the send and
receive (recv) directions. For the send direction, Alice provides a
list that the answerer can select from. For the receive direction,
Alice may either specify a desired image size range right away or a *
to instruct Bob to reply with a list of image sizes that Bob can
support for sending. Using the overall high level syntax the image
attribute may then look like
a=imageattr:PT send attr-list recv attr-list
or
a=imageattr:PT send attr-list recv *
Johansson & Jung Standards Track [Page 16]
^L
RFC 6236 Image Attributes in SDP May 2011
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
a list with one alternative for the preferred x and y resolution.
If Bob supports an x and y resolution in at least one of the X and Y
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
and the offer/answer negotiation is done. Note that 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 just
one or two alternatives.
If Bob does not support any x and y resolution in one of the provided
send or recv ranges given in the send attr-list or in the recv attr-
list, the corresponding part is removed completely. For instance, if
Bob doesn't support any of the offered alternatives in the recv attr-
list in the offer, the answer from Bob would look like:
a=imageattr:PT recv attr-list
4.2. 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
Two image resolution alternatives are offered with 800x640 with
sar=1.1 having the highest preference.
It is also indicated that Alice wishes to display video with a
resolution of 330x250 on her display.
a=imageattr:97 send [x=800,y=640,sar=1.1,q=0.6] [x=480,y=320] \
recv [x=330,y=250]
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] \
send [x=330,y=250]
indicating that the receiver (Bob) wishes the encoder (on Alice's
side) to compensate for a sample aspect ratio of 1.1 (11:10) and
desires an image size on its screen of 800x640.
Johansson & Jung Standards Track [Page 17]
^L
RFC 6236 Image Attributes in SDP May 2011
There is however a possibility that "recv [x=330,y=250]" is not
supported. If the case, Bob may completely remove this part or
replace it with a list of supported image sizes.
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]]
Alice can then select a valid image size that is closest to the one
that was originally desired (336x256) and performs a second offer/
answer.
a=imageattr:97 send [x=800,y=640,sar=1.1] \
recv [x=336,y=256]
Bob replies with:
a=imageattr:97 recv [x=800,y=640,sar=1.1] \
send [x=336,y=256]
4.2.2. Example 2
Two image resolution sets are offered with the first having a higher
preference (q=0.6).
a=imageattr:97 \
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]] \
recv *
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
set of possible x and y screen resolution combinations such that
800x640 (ratio=1.25) is a valid combination while 720x608
(ratio=1.18) or 800x608 (ratio=1.31) are invalid combinations.
For the recv direction (Bob->Alice), Bob is requested to provide a
list of supported image sizes.
Johansson & Jung Standards Track [Page 18]
^L
RFC 6236 Image Attributes in SDP May 2011
4.2.3. Example 3
In this example, more of the SDP offer is shown. A complicating
factor is that the answerer changes the media payload type number in
the offer/answer exchange.
m=video 49154 RTP/AVP 99
a=rtpmap:99 H264/90000
a=fmtp:99 packetization-mode=0;profile-level-id=42e011; \
sprop-parameter-sets=Z0LgC5ZUCg/I,aM4BrFSAa
a=imageattr:99 \
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]
In the send direction, sprop-parameter-sets is defined for a
resolution of 320x240, which is the largest image size offered in the
send direction. This means that if 320x240 is selected, no
additional offer/answer is necessary. In the receive direction, four
alternative image sizes are offered with 272x224 being the preferred
choice.
The answer may look like:
m=video 49154 RTP/AVP 100
a=rtpmap:100 H264/90000
a=fmtp:100 packetization-mode=0;profile-level-id=42e011; \
sprop-parameter-sets=Z0LgC5ZUCg/I,aM4BrFSAa
a=imageattr:99 send [x=320,y=240]
a=imageattr:100 recv [x=320,y=240]
indicating (in this example) that the image size is 320x240 in both
directions. Although the offerer preferred 272x224 for the receive
direction, the answerer might not be able to offer 272x224 or not
allow encoding and decoding of video of different image sizes
simultaneously. The answerer sets new sprop-parameter-sets,
constructed for both send and receive directions at the restricted
conditions and image size of 320x240.
Note also that, because the payload type number is changed by the
answerer, the image attribute is also split in two parts according to
the recommendation in Section 3.2.2.
Johansson & Jung Standards Track [Page 19]
^L
RFC 6236 Image Attributes in SDP May 2011
4.2.4. Example 4
This example illustrates in more detail how compensation for
different sample aspect ratios can be negotiated with the image
attribute.
We set up a session between Alice and Bob; Alice is the offerer of
the session. The offer (from Alice) contains the image attribute
below:
a=imageattr:97 \
send [x=400:16:800],y=[320:16:640],sar=[1.0-1.3],par=[1.2-1.3]] \
recv [x=800,y=600,sar=1.1]
First we consider the recv direction: The offerer (Alice) explicitly
states that she wishes to receive the screen resolution 800x600.
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)
compensate for this.
So, if Bob's video camera produces square pixels, and if Bob wishes
to satisfy Alice's sar requirement, the image processing algorithm
must 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
image processing algorithms) rescale the image for sample aspect
ratios in the range 1.0 to 1.3. She can also provide a number of
different image sizes (in pixels) ranging from 400x320 to 800x640.
Bob inspects the offered sar and image sizes and responds with the
modified image attribute.
a=imageattr:97 \
recv [x=464,y=384,sar=1.15] \
send [x=800,y=600,sar=1.1]
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.
5. IANA Considerations
Following the guidelines in [RFC4566], the IANA is requested to
register one new SDP attribute:
Attribute name: imageattr
Long form name: Image attribute
Johansson & Jung Standards Track [Page 20]
^L
RFC 6236 Image Attributes in SDP May 2011
Type of attribute: Media-level
Subject to charset: No
Purpose: This attribute defines the ability to negotiate
various image attributes such as image sizes.
The attribute contains a number of parameters
which can be modified in an offer/answer
exchange.
Appropriate values: See Section 3.1.1 of RFC 6236
Contact name: Authors of RFC 6236
6. Security Considerations
The image attribute and especially the parameters that denote the
image size can take on values that may cause memory or CPU exhaustion
problems. This may happen either as a consequence of a mistake by
the sender of the SDP or as a result of an attack issued by a
malicious SDP sender. This issue is similar to the case where the
a=fmtp line(s) may take on extreme values for the same reasons
outlined above.
A receiver of the SDP containing the image attribute MUST ensure that
the parameters have values that are reasonable and that the device
can handle the implications in terms of memory and CPU usage.
Failure to do a sanity check on the parameters may result in memory
or CPU exhaustion.
In principle, for some SDPs containing the image attribute and for
some deployments, it could be the case that simply checking the
parameters is not sufficient to detect all potential Denial-of-
Service (DoS) problems. Implementers ought to consider whether there
are any potential DoS attacks that would not be detected by simply
checking parameters.
7. Acknowledgements
The authors would like to thank the people who have contributed with
objections and suggestions to this document and provided valuable
guidance in the amazing video-coding world. Special thanks to
Clinton Priddle, Roni Even, Randell Jesup, and Dan Wing. Thanks also
to Robert Sparks and Paul Kyzivat for the help with the last fixes to
get the attribute to work well with the offer/answer model.
Johansson & Jung Standards Track [Page 21]
^L
RFC 6236 Image Attributes in SDP May 2011
8. References
8.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC3264] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer
Model with Session Description Protocol (SDP)",
RFC 3264, June 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.
[RFC5888] Camarillo, G. and H. Schulzrinne, "The Session
Description Protocol (SDP) Grouping Framework",
RFC 5888, June 2010.
8.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: "Advanced video
coding for generic audiovisual services",
<http://www.itu.int/rec/T-REC-H.264-200711-S/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. Kimata, "RTP Payload Format for MPEG-4 Audio/
Visual Streams", RFC 3016, November 2000.
[RFC3311] Rosenberg, J., "The Session Initiation Protocol (SIP)
UPDATE Method", RFC 3311, October 2002.
[RFC3515] Sparks, R., "The Session Initiation Protocol (SIP)
Refer Method", RFC 3515, April 2003.
Johansson & Jung Standards Track [Page 22]
^L
RFC 6236 Image Attributes in SDP May 2011
[RFC4629] Ott, H., Bormann, C., Sullivan, G., Wenger, S., and
R. Even, "RTP Payload Format for ITU-T Rec",
RFC 4629, January 2007.
[RFC5939] Andreasen, F., "Session Description Protocol (SDP)
Capability Negotiation", RFC 5939, September 2010.
[RFC6184] Wang, Y., Even, R., Kristensen, T., and R. Jesup,
"RTP Payload Format for H.264 Video", RFC 6184,
May 2011.
[SDPMedCapNeg] Gilman, R., Even, R., and F. Andreasen, "SDP Media
Mapabilities Negotiation", Work in Progress,
February 2011.
Authors' Addresses
Ingemar Johansson
Ericsson AB
Laboratoriegrand 11
SE-971 28 Luleae
SWEDEN
Phone: +46 73 0783289
EMail: ingemar.s.johansson@ericsson.com
Kyunghun Jung
Samsung Electronics Co., Ltd.
Dong Suwon P.O. Box 105
416, Maetan-3Dong, Yeongtong-gu
Suwon-city, Gyeonggi-do
Korea 442-600
Phone: +82 10 9909 4743
EMail: kyunghun.jung@samsung.com
Johansson & Jung Standards Track [Page 23]
^L
|