Internet DRAFT - draft-edwards-rtp-ancillary

draft-edwards-rtp-ancillary







A/V Transport Payloads Workgroup                              T. Edwards
Internet-Draft                                                       FOX
Intended status: Informational                          January 13, 2015
Expires: July 17, 2015


              RTP Payload for SMPTE ST 291 Ancillary Data
                     draft-edwards-rtp-ancillary-00

Abstract

   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).

Status of This Memo

   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 July 17, 2015.

Copyright Notice

   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.



Edwards                   Expires July 17, 2015                 [Page 1]

Internet-Draft       RTP Payload for Ancillary Data         January 2015


Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
     1.1.  Requirements Language . . . . . . . . . . . . . . . . . .   3
   2.  RTP Payload Format for SMPTE ST 291 Ancillary Data  . . . . .   3
     2.1.  Payload Header Definitions  . . . . . . . . . . . . . . .   4
   3.  Payload Format Parameters . . . . . . . . . . . . . . . . . .   6
     3.1.  Media Type Definition . . . . . . . . . . . . . . . . . .   6
     3.2.  Mapping to SDP  . . . . . . . . . . . . . . . . . . . . .   8
     3.3.  Offer/Answer Model and Declarative Considerations . . . .   8
   4.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .   8
   5.  Security Considerations . . . . . . . . . . . . . . . . . . .   9
   6.  References  . . . . . . . . . . . . . . . . . . . . . . . . .   9
     6.1.  Normative References  . . . . . . . . . . . . . . . . . .   9
     6.2.  Informative References  . . . . . . . . . . . . . . . . .  10
   Author's Address  . . . . . . . . . . . . . . . . . . . . . . . .  11

1.  Introduction

   This memo describes an RTP Payload format for 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, or 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



Edwards                   Expires July 17, 2015                 [Page 2]

Internet-Draft       RTP Payload for Ancillary Data         January 2015


   (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.

1.1.  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].

2.  RTP Payload Format for SMPTE ST 291 Ancillary Data

   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:

   Timestamp: 32 bits



Edwards                   Expires July 17, 2015                 [Page 3]

Internet-Draft       RTP Payload for Ancillary Data         January 2015


           The timestamp field is interpreted in a similar fashion to
           RFC 4175 [RFC4175]:

           For progressive scan video, the timestamp SHALL denote the
           sampling instant of the frame to which the ancillary data in
           the RTP packet belongs.  Packets MUST NOT include ANC data
           from multiple frames, and all packets with ANC data belonging
           to the same frame MUST have the same timestamp.

           For interlaced video, the timestamp SHALL denote the sampling
           instant of the field to which the ancillary data in the RTP
           packet belongs.  Packets MUST NOT include ANC data from
           multiple fields, and all packets belonging to the same field
           MUST have the same timestamp.

           A 90-kHz timestamp SHOULD be used in both cases.  If the
           sampling instant does not correspond to an integer value of
           the clock, the value SHALL be truncated to the next lowest
           integer, with no ambiguity.

   Marker bit (M): 1 bit
           The marker bit set to "1" SHALL indicate the last RTP packet
           containing ANC data for a frame (for progressive scan video)
           or the last RTP packet containing ANC data for a field (for
           interlaced video).

2.1.  Payload Header Definitions

   The ANC RTP payload header fields are defined as:

   Extended Sequence Number: 16 bits
           The high order bits of the extended 32-bit sequence number,
           in network byte order.  This is the same as the Extended
           Sequence Number field in RFC 4175 [RFC4175].

   Length: 16 bits
           Number of octets of the ANC RTP payload, beginning with the
           "C" bit of the first ANC packet data.

   ANC_Count: 8 bits
           This field is the count of the total number of ANC data
           packets carried in the RTP payload.  A single ANC RTP packet
           payload SHALL NOT carry more than 255 ANC data packets.

   And for each ANC data packet in the payload, the following header
   fields MUST be present:

   C: 1 bit



Edwards                   Expires July 17, 2015                 [Page 4]

Internet-Draft       RTP Payload for Ancillary Data         January 2015


           For HD signals, this flag, when set to "1", indicates that
           the ANC data corresponds to the color-difference channel (C).
           When set to "0", this flag indicates that the ANC data
           corresponds to the luma (Y) channel.  For SD signals, this
           flag SHALL be set to "0".

   Line_Number: 11 bits
           This field contains the line number (as defined in ITU-R
           BT.1700 [BT1700] for SD video or ITU-R BT.1120 [BT1120] for
           HD video) that corresponds to the location of the ANC data
           packet.  The lines that are available to convey ANC data are
           as defined in the applicable sample structure specification
           (e.g., SMPTE 274M [ST274], SMPTE ST 296 [ST296], ITU-R BT.656
           [BT656]) and may be further restricted per SMPTE RP 168
           [RP168].

   Horizontal_Offset: 12 bits
           This field defines the location of the ANC packet relative to
           the start of active video (SAV). 0 means that the Ancillary
           Data Flag (ADF) of the ANC packet begins immediately
           following SAV.  For HD, this shall be in units of luma sample
           numbers as specified by the defining document of the
           particular image (e.g., SMPTE 274M [ST274] for 1920 x 1080
           active images, or SMPTE ST 296 [ST296] for 1280 x 720
           progressive active images).  For SD, this is in units of
           (27MHz) multiplexed word numbers, as specified in SMPTE ST
           125 [ST125].  It should be noted that HANC space in the
           digital blanking area will generally have higher luma sample
           numbers than any samples in the active digital line.

   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]:

   DID: 10 bits
           Data Identification Word

   SDID: 10 bits
           Secondary Data Identification Word.  Used only for a "Type 2"
           ANC data packet.  Note that in a "Type 1" ANC data packet,
           this word will actually carry the Data Block Number (DBN).

   Data_Count: 10 bits
           The lower 8 bits of Data_Count, corresponding to bits b7
           (MSB) through b0 (LSB) of the 10-bit Data_Count word, contain
           the actual count of 10-bit words in User_Data_Words.  Bit b8
           is the even parity for bits b7 through b0, and bit b9 is the
           inverse (logical NOT) of bit b8.



Edwards                   Expires July 17, 2015                 [Page 5]

Internet-Draft       RTP Payload for Ancillary Data         January 2015


   User_Data_Words: integer number of 10 bit words
           User_Data_Words (UDW) are used to convey information of a
           type as identified by the DID word or the DID and SDID words.
           The number of 10-bit words in the UDW is defined by the
           Data_Count field.

   Checksum_Word: 10 bits
           The Checksum_Word can be used to determine the validity of
           the ANC data packet from the DID word through the UDW.  The
           lower 8 bits of Checksum_Word, corresponding to bits b8 (MSB)
           through b0 (LSB) of the 10-bit data count word, contain the
           actual checksum value.  Bit b9 is the inverse (logical NOT)
           of bit b8.  The checksum value is equal to the nine least
           significant bits of the sum of the nine least significant
           bits of the DID word, the SDID word, the Data_Count word, and
           all User_Data_Words in the ANC data packet.  The checksum is
           initialized to zero before calculation, and any end carry
           resulting from the checksum calculation is ignored.

   octet_align: 0-7 bits as needed to complete octet
           Octet align contains enough "0" bits as needed to complete
           the last octet of an ANC packet's data in the RTP payload.
           This ensures that the next ANC packet's data in the RTP
           payload begins octet-aligned despite ANC packets being made
           up of 10-bit words.  If an ANC data packet in the RTP payload
           ends aligned with an octet, there is no need to add any octet
           alignment bits.

3.  Payload Format Parameters

   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.

3.1.  Media Type Definition

   Type name: video

   Subtype name: smpte291

   Required parameters:

      Rate: RTP timestamp clock rate.

   Optional parameters:



Edwards                   Expires July 17, 2015                 [Page 6]

Internet-Draft       RTP Payload for Ancillary Data         January 2015


      DID: Data identification word

      SDID: Secondary data identification word

      The presence of the DID and SDID parameters signal that all
      ancillary data packets of this stream are of a particular type,
      i.e., labeled with a particular DID and SDID.  DID and SDID values
      are registered with SMPTE as per SMPTE ST 291-1 [ST291].  DID and
      SDID values should be specified in hexadecimal with a "0x" prefix
      (such as "0x61").  For example, EIA 608 Closed Caption data would
      be DID=0x61 and SDID=0x02.  If DID and SDID are not specified,
      then the ancillary data stream may potentially contain ancillary
      data packets of any type.

      DID and SDID values can be found on the SMPTE Registry for Data
      Identification Word Assignments for Registered DIDs at:

      http://www.smpte-ra.org/S291/S291_reg.html

   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.




Edwards                   Expires July 17, 2015                 [Page 7]

Internet-Draft       RTP Payload for Ancillary Data         January 2015


   Author: T.  Edwards <thomas.edwards@fox.com>

   Change controller: IETF Payload working group delegated from the
   IESG.

3.2.  Mapping to SDP

   The mapping of the above defined payload format media type and its
   parameters SHALL be done according to Section 3 of RFC 4855
   [RFC4855].

   o  The type name ("video") goes in SDP "m=" as the media name.

   o  The subtype name ("smpte291") goes in SDP "a=rtpmap" as the
      encoding name.

   o  The optional DID and SDID parameters go in the SDP "a=fmtp"
      attribute as a semicolon-separated list of parameter=value pairs.

   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=0x61; SDID=0x02;

   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 (which are
   registered to EIA 608 Closed Caption Data by SMPTE).

3.3.  Offer/Answer Model and Declarative Considerations

   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.

4.  IANA Considerations

   One media type (video/smpte291) has been defined and needs
   registration in the media types registry.  See Section 3.1






Edwards                   Expires July 17, 2015                 [Page 8]

Internet-Draft       RTP Payload for Ancillary Data         January 2015


5.  Security Considerations

   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.

6.  References

6.1.  Normative References

   [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.





Edwards                   Expires July 17, 2015                 [Page 9]

Internet-Draft       RTP Payload for Ancillary Data         January 2015


   [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.

6.2.  Informative References

   [BT656]    ITU-R, "BT.656-5, Interfaces for Digital Component Video
              Signals in 525-Line and 625-Line Television Systems
              Operating at the 4:2:2 Level of Recommendation ITU-R
              BT.601", December 2007.

   [RFC2326]  Schulzrinne, H., Rao, A., and R. Lanphier, "Real Time
              Streaming Protocol (RTSP)", RFC 2326, April 1998.

   [RFC2974]  Handley, M., Perkins, C., and E. Whelan, "Session
              Announcement Protocol", RFC 2974, October 2000.

   [RFC3264]  Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model
              with Session Description Protocol (SDP)", RFC 3264, June
              2002.

   [RFC3551]  Schulzrinne, H. and S. Casner, "RTP Profile for Audio and
              Video Conferences with Minimal Control", STD 65, RFC 3551,
              July 2003.

   [RFC4175]  Gharai, L. and C. Perkins, "RTP Payload Format for
              Uncompressed Video", RFC 4175, September 2005.

   [RFC5371]  Futemma, S., Itakura, E., and A. Leung, "RTP Payload
              Format for JPEG 2000 Video Streams", RFC 5371, October
              2008.

   [RP168]    SMPTE, "RP 168:2009, Definition of Vertical Interval
              Switching Point for Synchronous Video Switching", 2009.

   [ST125]    SMPTE, "ST 125:2013, SDTV Component Video Signal Coding
              4:4:4 and 4:2:2 for 13.5 MHz and 18 MHz Systems", 2013.

   [ST2038]   SMPTE, "ST 2038:2008, Carriage of Ancillary Data Packets
              in an MPEG-2 Transport Stream", 2008.

   [ST259]    SMPTE, "ST 259:2008, SDTV Digital Signal/Data - Serial
              Digital Interface", 2008.






Edwards                   Expires July 17, 2015                [Page 10]

Internet-Draft       RTP Payload for Ancillary Data         January 2015


   [ST274]    SMPTE, "ST 274:2008, 1920 x 1080 Image Sample Structure,
              Digital Representation and Digital Timing Reference
              Sequences for Multiple Picture Rates", 2008.

   [ST292]    SMPTE, "ST 292-1:2012, 1.5 Gb/s Signal/Data Serial
              Interface", 2012.

   [ST296]    SMPTE, "ST 296:2012, 1280 x 720 Progressive Image 4:2:2
              and 4:4:4 Sample Structure - Analog and Digital
              Representation and Analog Interface", 2012.

Author's Address

   Thomas G. Edwards
   FOX
   10201 W. Pico Blvd.
   Los Angeles, CA  90035
   USA

   Phone: +1 310 369 6696
   Email: thomas.edwards@fox.com






























Edwards                   Expires July 17, 2015                [Page 11]