idnits 2.17.1 draft-ietf-payload-rtp-ancillary-00.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (May 7, 2015) is 3277 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) -- Possible downref: Non-RFC (?) normative reference: ref. 'BT1120' -- Possible downref: Non-RFC (?) normative reference: ref. 'BT1700' ** Obsolete normative reference: RFC 4288 (Obsoleted by RFC 6838) -- Possible downref: Non-RFC (?) normative reference: ref. 'ST291' -- Obsolete informational reference (is this intentional?): RFC 2326 (Obsoleted by RFC 7826) Summary: 1 error (**), 0 flaws (~~), 1 warning (==), 5 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 A/V Transport Payloads Working Group T. Edwards 3 Internet-Draft FOX 4 Intended status: Standards Track May 7, 2015 5 Expires: November 8, 2015 7 RTP Payload for SMPTE ST 291 Ancillary Data 8 draft-ietf-payload-rtp-ancillary-00 10 Abstract 12 This memo describes an RTP Payload format for SMPTE Ancillary data, 13 as defined by SMPTE ST 291-1. SMPTE Ancillary data is generally used 14 along with professional video formats to carry a range of ancillary 15 data types, including time code, KLV metadata, Closed Captioning, and 16 the Active Format Description (AFD). 18 Status of This Memo 20 This Internet-Draft is submitted in full conformance with the 21 provisions of BCP 78 and BCP 79. 23 Internet-Drafts are working documents of the Internet Engineering 24 Task Force (IETF). Note that other groups may also distribute 25 working documents as Internet-Drafts. The list of current Internet- 26 Drafts is at http://datatracker.ietf.org/drafts/current/. 28 Internet-Drafts are draft documents valid for a maximum of six months 29 and may be updated, replaced, or obsoleted by other documents at any 30 time. It is inappropriate to use Internet-Drafts as reference 31 material or to cite them other than as "work in progress." 33 This Internet-Draft will expire on November 8, 2015. 35 Copyright Notice 37 Copyright (c) 2015 IETF Trust and the persons identified as the 38 document authors. All rights reserved. 40 This document is subject to BCP 78 and the IETF Trust's Legal 41 Provisions Relating to IETF Documents 42 (http://trustee.ietf.org/license-info) in effect on the date of 43 publication of this document. Please review these documents 44 carefully, as they describe your rights and restrictions with respect 45 to this document. Code Components extracted from this document must 46 include Simplified BSD License text as described in Section 4.e of 47 the Trust Legal Provisions and are provided without warranty as 48 described in the Simplified BSD License. 50 Table of Contents 52 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 53 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 54 2. RTP Payload Format for SMPTE ST 291 Ancillary Data . . . . . 3 55 2.1. Payload Header Definitions . . . . . . . . . . . . . . . 4 56 3. Payload Format Parameters . . . . . . . . . . . . . . . . . . 6 57 3.1. Media Type Definition . . . . . . . . . . . . . . . . . . 6 58 3.2. Mapping to SDP . . . . . . . . . . . . . . . . . . . . . 8 59 3.3. Offer/Answer Model and Declarative Considerations . . . . 9 60 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 61 5. Security Considerations . . . . . . . . . . . . . . . . . . . 9 62 6. References . . . . . . . . . . . . . . . . . . . . . . . . . 9 63 6.1. Normative References . . . . . . . . . . . . . . . . . . 9 64 6.2. Informative References . . . . . . . . . . . . . . . . . 10 65 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 11 67 1. Introduction 69 This memo describes an RTP Payload format for the Society of Motion 70 Picture and Television Engineers (SMPTE) Ancillary data (ANC), as 71 defined by SMPTE ST 291-1 [ST291]. ANC can carry a range of data 72 types, including time code, KLV metadata, Closed Captioning, and the 73 Active Format Description (AFD). 75 ANC is generally associated with the carriage of metadata within the 76 bit stream multiplex of a Serial Digital Interface (SDI) such as 77 SMPTE ST 259 [ST259], the standard definition (SD) Serial Digital 78 Interface (with ANC data inserted as per SMPTE ST 125 [ST125]), or 79 SMPTE ST 292-1 [ST292], the 1.5 Gb/s Serial Digital Interface for 80 high definition (HD) television applications. 82 ANC data packet payload definitions for a specific application are 83 specified by a SMPTE Standard, Recommended Practice, Registered 84 Disclosure Document, or by a document generated by another 85 organization, a company, or an individual (an Entity). When a 86 payload format is registered with SMPTE, an application document 87 describing the payload format is required, and the registered 88 ancillary data packet is identified by a registered data 89 identification word. 91 This RTP payload supports ANC data packets regardless of whether they 92 originate from an SD or HD interface, or if the ANC data packet is 93 from the vertical ancillary space (VANC) or the horizontal ancillary 94 space (HANC), or if the ANC packet is located in the luma (Y) or 95 color-difference (C) channel. Sufficient information is provided to 96 enable the ANC packets at the output of the decoder to be restored to 97 their "original" locations in the serial digital video signal raster 98 (if that is desired). This payload could be used by itself, or used 99 along with a range of RTP video formats. In particular, it has been 100 specifically designed so that it could be used along with RFC 4175 101 [RFC4175] "RTP Payload Format for Uncompressed Video" or RFC 5371 102 [RFC5371] "RTP Payload Format for JPEG 2000 Video Streams." 104 The data model in this document for the ANC data RTP payload is based 105 on the data model of SMPTE ST 2038 [ST2038], which standardizes the 106 carriage of ANC data packets in an MPEG-2 Transport Stream. 108 1.1. Requirements Language 110 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 111 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 112 document are to be interpreted as described in RFC 2119 [RFC2119]. 114 2. RTP Payload Format for SMPTE ST 291 Ancillary Data 116 The format of an RTP packet containing SMPTE ST 291 Ancillary Data is 117 shown below: 119 0 1 2 3 120 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 121 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 122 |V=2|P|X| CC |M| PT | sequence number | 123 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 124 | timestamp | 125 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 126 | synchronization source (SSRC) identifier | 127 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 128 | Extended Sequence Number | Length | 129 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 130 | ANC_Count |C| Line_Number | Horizontal_Offset | 131 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 132 | DID | SDID | Data_Count | R | 133 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 134 | User_Data_Words... 135 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 136 | Checksum_Word |octet_align| (next ANC data packet)... 137 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 139 Figure 1: SMPTE Ancillary Data RTP Packet Format 141 RTP packet header fields SHALL be interpreted as per RFC 3550 142 [RFC3550], with the following specifics: 144 Timestamp: 32 bits 145 The timestamp field is interpreted in a similar fashion to 146 RFC 4175 [RFC4175]: 148 For progressive scan video, the timestamp SHALL denote the 149 sampling instant of the frame to which the ancillary data in 150 the RTP packet belongs. Packets MUST NOT include ANC data 151 from multiple frames, and all packets with ANC data belonging 152 to the same frame MUST have the same timestamp. 154 For interlaced video, the timestamp SHALL denote the sampling 155 instant of the field to which the ancillary data in the RTP 156 packet belongs. Packets MUST NOT include ANC data from 157 multiple fields, and all packets belonging to the same field 158 MUST have the same timestamp. 160 A 90-kHz timestamp SHOULD be used in both cases. If the 161 sampling instant does not correspond to an integer value of 162 the clock, the value SHALL be truncated to the next lowest 163 integer, with no ambiguity. 165 Marker bit (M): 1 bit 166 The marker bit set to "1" SHALL indicate the last RTP packet 167 containing ANC data for a frame (for progressive scan video) 168 or the last RTP packet containing ANC data for a field (for 169 interlaced video). 171 2.1. Payload Header Definitions 173 The ANC RTP payload header fields are defined as: 175 Extended Sequence Number: 16 bits 176 The high order bits of the extended 32-bit sequence number, 177 in network byte order. This is the same as the Extended 178 Sequence Number field in RFC 4175 [RFC4175]. 180 Length: 16 bits 181 Number of octets of the ANC RTP payload, beginning with the 182 "C" bit of the first ANC packet data. 184 ANC_Count: 8 bits 185 This field is the count of the total number of ANC data 186 packets carried in the RTP payload. A single ANC RTP packet 187 payload SHALL NOT carry more than 255 ANC data packets. 189 And for each ANC data packet in the payload, the following header 190 fields MUST be present: 192 C: 1 bit 193 For HD signals, this flag, when set to "1", indicates that 194 the ANC data corresponds to the color-difference channel (C). 195 When set to "0", this flag indicates that the ANC data 196 corresponds to the luma (Y) channel. For SD signals, this 197 flag SHALL be set to "0". 199 Line_Number: 11 bits 200 This field contains the line number (as defined in ITU-R 201 BT.1700 [BT1700] for SD video or ITU-R BT.1120 [BT1120] for 202 HD video) that corresponds to the location of the ANC data 203 packet. The lines that are available to convey ANC data are 204 as defined in the applicable sample structure specification 205 (e.g., SMPTE 274M [ST274], SMPTE ST 296 [ST296], ITU-R BT.656 206 [BT656]) and may be further restricted per SMPTE RP 168 207 [RP168]. A value of 0x7FF (all bits in the field are '1') 208 SHALL indicate that the ANC data is carried without any 209 specific location within the frame. 211 Horizontal_Offset: 12 bits 212 This field defines the location of the ANC packet relative to 213 the start of active video (SAV). 0 means that the Ancillary 214 Data Flag (ADF) of the ANC packet begins immediately 215 following SAV. For HD, this shall be in units of luma sample 216 numbers as specified by the defining document of the 217 particular image (e.g., SMPTE 274M [ST274] for 1920 x 1080 218 active images, or SMPTE ST 296 [ST296] for 1280 x 720 219 progressive active images). For SD, this is in units of 220 (27MHz) multiplexed word numbers, as specified in SMPTE ST 221 125 [ST125]. It should be noted that HANC space in the 222 digital blanking area will generally have higher luma sample 223 numbers than any samples in the active digital line. 225 The fields DID, SDID, Data_Count, User_Data_Words, and Checksum_Word 226 represent the 10-bit words carried in the ANC data packet, as per 227 SMPTE ST 291 [ST291]: 229 DID: 10 bits 230 Data Identification Word 232 SDID: 10 bits 233 Secondary Data Identification Word. Used only for a "Type 2" 234 ANC data packet. Note that in a "Type 1" ANC data packet, 235 this word will actually carry the Data Block Number (DBN). 237 Data_Count: 10 bits 238 The lower 8 bits of Data_Count, corresponding to bits b7 239 (MSB) through b0 (LSB) of the 10-bit Data_Count word, contain 240 the actual count of 10-bit words in User_Data_Words. Bit b8 241 is the even parity for bits b7 through b0, and bit b9 is the 242 inverse (logical NOT) of bit b8. 244 R: 2 reserved bits 245 R is a field of two reserved bits that MUST be set to zero. 247 User_Data_Words: integer number of 10 bit words 248 User_Data_Words (UDW) are used to convey information of a 249 type as identified by the DID word or the DID and SDID words. 250 The number of 10-bit words in the UDW is defined by the 251 Data_Count field. 253 Checksum_Word: 10 bits 254 The Checksum_Word can be used to determine the validity of 255 the ANC data packet from the DID word through the UDW. The 256 lower 8 bits of Checksum_Word, corresponding to bits b8 (MSB) 257 through b0 (LSB) of the 10-bit data count word, contain the 258 actual checksum value. Bit b9 is the inverse (logical NOT) 259 of bit b8. The checksum value is equal to the nine least 260 significant bits of the sum of the nine least significant 261 bits of the DID word, the SDID word, the Data_Count word, and 262 all User_Data_Words in the ANC data packet. The checksum is 263 initialized to zero before calculation, and any end carry 264 resulting from the checksum calculation is ignored. 266 octet_align: 0-7 bits as needed to complete octet 267 Octet align contains enough "0" bits as needed to complete 268 the last octet of an ANC packet's data in the RTP payload. 269 This ensures that the next ANC packet's data in the RTP 270 payload begins octet-aligned despite ANC packets being made 271 up of 10-bit words. If an ANC data packet in the RTP payload 272 ends aligned with an octet, there is no need to add any octet 273 alignment bits. 275 3. Payload Format Parameters 277 This RTP payload format is identified using the video/smpte291 media 278 type, which is registered in accordance with RFC 4855 [RFC4855], and 279 using the template of RFC 4288 [RFC4288]. 281 Note that the Media Type Definition is in the "video" tree due to the 282 expected use of SMPTE ST 291 Ancillary Data with video formats. 284 3.1. Media Type Definition 286 Type name: video 288 Subtype name: smpte291 289 Required parameters: 291 Rate: RTP timestamp clock rate. 293 Optional parameters: 295 DID_SDID: Data identification and Secondary data identification 296 words. 298 The presence of the DID_SDID parameters signals that all ancillary 299 data packets of this stream are of a particular type or types, 300 i.e., labeled with a particular DIDs and SDIDs. The DID_SDID 301 parameter consists of the DID and SDID values in that order 302 separated by a comma, with the DID/SDID pair preceded by a '{' and 303 followed by a '}'. 305 DID and SDID values should be specified in hexadecimal with a "0x" 306 prefix (such as "0x61"). For example, EIA 608 Closed Caption data 307 would be signalled with the parameter DID_SDID={0x61,0x02}. If 308 DID_SDID is not specified, then the ancillary data stream may 309 potentially contain ancillary data packets of any type. Multiple 310 DID_SDID parameters may be specified (separated by semicolons) to 311 signal the presence of multiple types of ANC data in the stream. 313 DID and SDID values of SMPTE Registered ANC packet types can be 314 found on the SMPTE Registry for Data Identification Word 315 Assignments at: 317 http://www.smpte-ra.org/S291/S291_reg.html 319 DID and SDID values can be registered with SMPTE as per SMPTE ST 320 291-1 [ST291]. 322 Encoding considerations: This media type is framed and binary; see 323 Section 4.8 of RFC 4288 [RFC4288]. 325 Security considerations: See Section 5 of [this RFC] 327 Interoperability considerations: Data items in smpte291 can be very 328 diverse. Receivers might only be capable of interpreting a subset of 329 the possible data items. Some implementations may care about the 330 location of the ANC data packets in the SDI raster, but other 331 implementations may not care. 333 Published specification: [this RFC] 334 Applications that use this media type: Devices that stream real-time 335 professional video, especially those that must interoperate with 336 legacy serial digital interfaces (SDI). 338 Additional Information: none 340 Person & email address to contact for further information: T. 341 Edwards , IETF Payload Working Group 342 344 Intended usage: COMMON 346 Restrictions on usage: This media type depends on RTP framing, and 347 hence is only defined for transfer via RTP RFC 3550 [RFC3550]. 348 Transport within other framing protocols is not defined at this time. 350 Author: T. Edwards 352 Change controller: IETF Audio/Video Transport Payloads working group 353 delegated from the IESG. 355 3.2. Mapping to SDP 357 The mapping of the above defined payload format media type and its 358 parameters SHALL be done according to Section 3 of RFC 4855 359 [RFC4855]. 361 o The type name ("video") goes in SDP "m=" as the media name. 363 o The subtype name ("smpte291") goes in SDP "a=rtpmap" as the 364 encoding name. 366 o The optional DID_SDID parameters go in the SDP "a=fmtp" attribute 367 as a semicolon-separated list of parameter=value pairs. 369 A sample SDP mapping for ancillary data is as follows: 371 m=video 30000 RTP/AVP 112 372 a=rtpmap:112 smpte291/90000 373 a=fmtp:112 DID_SDID={0x61,0x02};DID_SDID={0x41,0x05} 375 In this example, a dynamic payload type 112 is used for ancillary 376 data. The 90 kHz RTP timestamp rate is specified in the "a=rtpmap" 377 line after the subtype. The RTP sampling clock is 90 kHz. In the 378 "a=fmtp:" line, DID 0x61 and SDID 0x02 are specified (which are 379 registered to EIA 608 Closed Caption Data by SMPTE), and also DID 380 0x41 SDID 0x05 (which are registered to AFD and Bar Data). 382 3.3. Offer/Answer Model and Declarative Considerations 384 When offering SMPTE ST 291 Ancillary data over RTP using the Session 385 Description Protocol (SDP) in an Offer/Answer model [RFC3264] or in a 386 declarative manner (e.g., SDP in the Real-Time Streaming Protocol 387 (RTSP) [RFC2326] or the Session Announcement Protocol (SAP) 388 [RFC2974]), the offerer could provide a list of streams available 389 with specific DID & SDIDs, and the answerer could specify which 390 streams with specific DID & SDIDs it would like to accept. 392 4. IANA Considerations 394 One media type (video/smpte291) has been defined and needs 395 registration in the media types registry. See Section 3.1 397 5. Security Considerations 399 RTP packets using the payload format defined in this specification 400 are subject to the security considerations discussed in the RTP 401 specification [RFC3550] and any applicable RTP profile, e.g., AVP 402 [RFC3551]. 404 To avoid potential buffer overflow attacks, receivers should take 405 care to validate that the ANC packets in the RTP payload are of the 406 appropriate length (using the Data_Count field) for the ANC data type 407 specified by DID & SDID. Also the Checksum_Word should be checked 408 against the ANC data packet to ensure that its data has not been 409 damaged in transit. 411 Some receivers will simply move the ANC data packet bits from the RTP 412 payload into a serial digital interface (SDI). It may still be a 413 good idea for these "re-embedders" to perform the above mentioned 414 validity tests to avoid downstream SDI systems from becoming confused 415 by bad ANC packets, which could be used for a denial of service 416 attack. 418 "Re-embedders" into SDI should also double check that the Line_Number 419 and Horizontal_Offset leads to the ANC data packet being inserted 420 into a legal area to carry ancillary data in the SDI video bit stream 421 of the output video format. 423 6. References 425 6.1. Normative References 427 [BT1120] ITU-R, "BT.1120-8, Digital Interfaces for HDTV Studio 428 Signals", January 2012. 430 [BT1700] ITU-R, "BT.1700, Characteristics of Composite Video 431 Signals for Conventional Analogue Television Systems", 432 February 2005. 434 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 435 Requirement Levels", BCP 14, RFC 2119, March 1997. 437 [RFC3550] Schulzrinne, H., Casner, S., Frederick, R., and V. 438 Jacobson, "RTP: A Transport Protocol for Real-Time 439 Applications", STD 64, RFC 3550, July 2003. 441 [RFC4288] Freed, N. and J. Klensin, "Media Type Specifications and 442 Registration Procedures", RFC 4288, December 2005. 444 [RFC4855] Casner, S., "Media Type Registration of RTP Payload 445 Formats", RFC 4855, February 2007. 447 [ST291] SMPTE, "ST 291-1:2011, Ancillary Data Packet and Space 448 Formatting", 2011. 450 6.2. Informative References 452 [BT656] ITU-R, "BT.656-5, Interfaces for Digital Component Video 453 Signals in 525-Line and 625-Line Television Systems 454 Operating at the 4:2:2 Level of Recommendation ITU-R 455 BT.601", December 2007. 457 [RFC2326] Schulzrinne, H., Rao, A., and R. Lanphier, "Real Time 458 Streaming Protocol (RTSP)", RFC 2326, April 1998. 460 [RFC2974] Handley, M., Perkins, C., and E. Whelan, "Session 461 Announcement Protocol", RFC 2974, October 2000. 463 [RFC3264] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model 464 with Session Description Protocol (SDP)", RFC 3264, June 465 2002. 467 [RFC3551] Schulzrinne, H. and S. Casner, "RTP Profile for Audio and 468 Video Conferences with Minimal Control", STD 65, RFC 3551, 469 July 2003. 471 [RFC4175] Gharai, L. and C. Perkins, "RTP Payload Format for 472 Uncompressed Video", RFC 4175, September 2005. 474 [RFC5371] Futemma, S., Itakura, E., and A. Leung, "RTP Payload 475 Format for JPEG 2000 Video Streams", RFC 5371, October 476 2008. 478 [RP168] SMPTE, "RP 168:2009, Definition of Vertical Interval 479 Switching Point for Synchronous Video Switching", 2009. 481 [ST125] SMPTE, "ST 125:2013, SDTV Component Video Signal Coding 482 4:4:4 and 4:2:2 for 13.5 MHz and 18 MHz Systems", 2013. 484 [ST2038] SMPTE, "ST 2038:2008, Carriage of Ancillary Data Packets 485 in an MPEG-2 Transport Stream", 2008. 487 [ST259] SMPTE, "ST 259:2008, SDTV Digital Signal/Data - Serial 488 Digital Interface", 2008. 490 [ST274] SMPTE, "ST 274:2008, 1920 x 1080 Image Sample Structure, 491 Digital Representation and Digital Timing Reference 492 Sequences for Multiple Picture Rates", 2008. 494 [ST292] SMPTE, "ST 292-1:2012, 1.5 Gb/s Signal/Data Serial 495 Interface", 2012. 497 [ST296] SMPTE, "ST 296:2012, 1280 x 720 Progressive Image 4:2:2 498 and 4:4:4 Sample Structure - Analog and Digital 499 Representation and Analog Interface", 2012. 501 Author's Address 503 Thomas G. Edwards 504 FOX 505 10201 W. Pico Blvd. 506 Los Angeles, CA 90035 507 USA 509 Phone: +1 310 369 6696 510 Email: thomas.edwards@fox.com