A/V Transport Payloads Working Group | T. Edwards |
Internet-Draft | FOX |
Intended status: Standards Track | June 3, 2015 |
Expires: December 5, 2015 |
RTP Payload for SMPTE ST 291 Ancillary Data
draft-ietf-payload-rtp-ancillary-01
This memo describes an RTP Payload format for SMPTE Ancillary data, as defined by SMPTE ST 291-1. SMPTE Ancillary data is generally used along with professional video formats to carry a range of ancillary data types, including time code, KLV metadata, Closed Captioning, and the Active Format Description (AFD).
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."
This Internet-Draft will expire on December 5, 2015.
Copyright (c) 2015 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.
This memo describes an RTP Payload format for the Society of Motion Picture and Television Engineers (SMPTE) Ancillary data (ANC), as defined by SMPTE ST 291-1 [ST291]. ANC can carry a range of data types, including time code, KLV metadata, Closed Captioning, and the Active Format Description (AFD).
ANC is generally associated with the carriage of metadata within the bit stream multiplex of a Serial Digital Interface (SDI) such as SMPTE ST 259 [ST259], the standard definition (SD) Serial Digital Interface (with ANC data inserted as per SMPTE ST 125 [ST125]), or SMPTE ST 292-1 [ST292], the 1.5 Gb/s Serial Digital Interface for high definition (HD) television applications.
ANC data packet payload definitions for a specific application are specified by a SMPTE Standard, Recommended Practice, Registered Disclosure Document, or by a document generated by another organization, a company, or an individual (an Entity). When a payload format is registered with SMPTE, an application document describing the payload format is required, and the registered ancillary data packet is identified by a registered data identification word.
This RTP payload supports ANC data packets regardless of whether they originate from an SD or HD interface, or if the ANC data packet is from the vertical ancillary space (VANC) or the horizontal ancillary space (HANC), or if the ANC packet is located in the luma (Y) or color-difference (C) channel. Sufficient information is provided to enable the ANC packets at the output of the decoder to be restored to their "original" locations in the serial digital video signal raster (if that is desired). This payload could be used by itself, or used along with a range of RTP video formats. In particular, it has been specifically designed so that it could be used along with RFC 4175 [RFC4175] "RTP Payload Format for Uncompressed Video" or RFC 5371 [RFC5371] "RTP Payload Format for JPEG 2000 Video Streams."
The data model in this document for the ANC data RTP payload is based on the data model of SMPTE ST 2038 [ST2038], which standardizes the carriage of ANC data packets in an MPEG-2 Transport Stream.
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].
The format of an RTP packet containing SMPTE ST 291 Ancillary Data is shown below:
0 1 2 3 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |V=2|P|X| CC |M| PT | sequence number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | timestamp | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | synchronization source (SSRC) identifier | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Extended Sequence Number | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ANC_Count |C| Line_Number | Horizontal_Offset | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | DID | SDID | Data_Count | R | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | User_Data_Words... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Checksum_Word |octet_align| (next ANC data packet)... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 1: SMPTE Ancillary Data RTP Packet Format
RTP packet header fields SHALL be interpreted as per RFC 3550 [RFC3550], with the following specifics:
The ANC RTP payload header fields are defined as:
And for each ANC data packet in the payload, the following header fields MUST be present:
An ANC packet with the header fields Line_Number of 0x7FF and Horizontal_Offset of 0xFFF SHALL be considered to be carried without any specific location within the field or frame.
The fields DID, SDID, Data_Count, User_Data_Words, and Checksum_Word represent the 10-bit words carried in the ANC data packet, as per SMPTE ST 291 [ST291]:
When reconstructing an SDI signal based on this payload, it is important to place ANC packets into the locations indicated by the ANC payload header fields Line_Number and Horizontal_Offset, and also to follow the requirements of SMPTE ST 291-1 [ST291] Section 7 "Ancillary Data Space Formatting (Component or Composite Interface)", which include rules on the placement of initial ANC data into allowed spaces as well as the contiguity of ANC data packet sequences within those spaces in order to assure that the resulting ANC packets in the SDI signal are valid.
This RTP payload format is identified using the video/smpte291 media type, which is registered in accordance with RFC 4855 [RFC4855], and using the template of RFC 4288 [RFC4288].
Note that the Media Type Definition is in the "video" tree due to the expected use of SMPTE ST 291 Ancillary Data with video formats.
Type name: video
Subtype name: smpte291
Required parameters:
Optional parameters:
Encoding considerations: This media type is framed and binary; see Section 4.8 of RFC 4288 [RFC4288].
Security considerations: See Section 5 of [this RFC]
Interoperability considerations: Data items in smpte291 can be very diverse. Receivers might only be capable of interpreting a subset of the possible data items. Some implementations may care about the location of the ANC data packets in the SDI raster, but other implementations may not care.
Published specification: [this RFC]
Applications that use this media type: Devices that stream real-time professional video, especially those that must interoperate with legacy serial digital interfaces (SDI).
Additional Information: none
Person & email address to contact for further information: T. Edwards <thomas.edwards@fox.com>, IETF Payload Working Group <payload@ietf.org>
Intended usage: COMMON
Restrictions on usage: This media type depends on RTP framing, and hence is only defined for transfer via RTP RFC 3550 [RFC3550]. Transport within other framing protocols is not defined at this time.
Author: T. Edwards <thomas.edwards@fox.com>
Change controller: IETF Audio/Video Transport Payloads working group delegated from the IESG.
The mapping of the above defined payload format media type and its parameters SHALL be done according to Section 3 of RFC 4855 [RFC4855].
A sample SDP mapping for ancillary data is as follows:
m=video 30000 RTP/AVP 112 a=rtpmap:112 smpte291/90000 a=fmtp:112 DID_SDID={0x61,0x02};DID_SDID={0x41,0x05}
In this example, a dynamic payload type 112 is used for ancillary data. The 90 kHz RTP timestamp rate is specified in the "a=rtpmap" line after the subtype. The RTP sampling clock is 90 kHz. In the "a=fmtp:" line, DID 0x61 and SDID 0x02 are specified (registered to EIA 608 Closed Caption Data by SMPTE), and also DID 0x41 and SDID 0x05 (registered to AFD/Bar Data).
When offering SMPTE ST 291 Ancillary data over RTP using the Session Description Protocol (SDP) in an Offer/Answer model [RFC3264] or in a declarative manner (e.g., SDP in the Real-Time Streaming Protocol (RTSP) [RFC2326] or the Session Announcement Protocol (SAP) [RFC2974]), the offerer could provide a list of streams available with specific DID & SDIDs, and the answerer could specify which streams with specific DID & SDIDs it would like to accept.
One media type (video/smpte291) has been defined and needs registration in the media types registry. See Section 3.1
RTP packets using the payload format defined in this specification are subject to the security considerations discussed in the RTP specification [RFC3550] and any applicable RTP profile, e.g., AVP [RFC3551].
To avoid potential buffer overflow attacks, receivers should take care to validate that the ANC packets in the RTP payload are of the appropriate length (using the Data_Count field) for the ANC data type specified by DID & SDID. Also the Checksum_Word should be checked against the ANC data packet to ensure that its data has not been damaged in transit.
Some receivers will simply move the ANC data packet bits from the RTP payload into a serial digital interface (SDI). It may still be a good idea for these "re-embedders" to perform the above mentioned validity tests to avoid downstream SDI systems from becoming confused by bad ANC packets, which could be used for a denial of service attack.
"Re-embedders" into SDI should also double check that the Line_Number and Horizontal_Offset leads to the ANC data packet being inserted into a legal area to carry ancillary data in the SDI video bit stream of the output video format.
[BT1120] | ITU-R, "BT.1120-8, Digital Interfaces for HDTV Studio Signals", January 2012. |
[BT1700] | ITU-R, "BT.1700, Characteristics of Composite Video Signals for Conventional Analogue Television Systems", February 2005. |
[RFC2119] | Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. |
[RFC3550] | Schulzrinne, H., Casner, S., Frederick, R. and V. Jacobson, "RTP: A Transport Protocol for Real-Time Applications", STD 64, RFC 3550, July 2003. |
[RFC4288] | Freed, N. and J. Klensin, "Media Type Specifications and Registration Procedures", RFC 4288, December 2005. |
[RFC4855] | Casner, S., "Media Type Registration of RTP Payload Formats", RFC 4855, February 2007. |
[ST291] | SMPTE, "ST 291-1:2011, Ancillary Data Packet and Space Formatting", 2011. |