video-anc: Replace GST_VIDEO_CAPTION_TYPE_CEA608_IN_CEA708_RAW with CEA608_S334_1A

CEA608_IN_CEA708_RAW is the same format as CEA708_RAW. It's only
difference is that it must contain only CEA608 and a format like this
does not exist in practice. In practice every element that handles raw
cc_data triplets must check each triplet for their actual content and
handle them accordingly.

For CC-only streams a parser could signal the existence of CEA608 and/or
CEA708 inside the caps but for metas this can only potentially be
signalled via the ALLOCATION query for negotiation purposes.

A separate format for this is not very useful and instead it should be a
format qualifier.

CEA608_S334_1A is the format defined by SMPTE S334-1 Annex A and which
is used for transferring CEA608 over SDI instead of CEA708 CDP packets.
This commit is contained in:
Sebastian Dröge 2018-12-10 15:55:49 +02:00 committed by Sebastian Dröge
parent 3ce6bf65c7
commit 1eb3a20617
2 changed files with 15 additions and 11 deletions

View file

@ -946,7 +946,7 @@ gst_buffer_add_video_caption_meta (GstBuffer * buffer,
switch (caption_type) {
case GST_VIDEO_CAPTION_TYPE_CEA608_RAW:
case GST_VIDEO_CAPTION_TYPE_CEA608_IN_CEA708_RAW:
case GST_VIDEO_CAPTION_TYPE_CEA608_S334_1A:
case GST_VIDEO_CAPTION_TYPE_CEA708_RAW:
case GST_VIDEO_CAPTION_TYPE_CEA708_CDP:
break;

View file

@ -104,16 +104,20 @@ typedef enum {
* this format is not recommended since is does not specify to
* which field the caption comes from and therefore assumes
* it comes from the first field (and that there is no information
* on the second field). Use @@GST_VIDEO_CAPTION_TYPE_CEA608_IN_CEA708_RAW
* if you wish to store CEA-608 from two fields.
* @GST_VIDEO_CAPTION_TYPE_CEA608_IN_CEA708_RAW: CEA-608 as cc_data byte triplets.
* The first byte of each triplet shall specify the field as in CEA-708
* (i.e: 0xFC for the first field or 0xFD for the second field.). The 2nd
* and 3rd byte of each triplet are the cc1 and cc2 bytes. Use this if
* there is *only* CEA-608 caption. If there is also CEA-708 caption,
* use @GST_VIDEO_CAPTION_TYPE_CEA708_RAW.
* on the second field). Use @GST_VIDEO_CAPTION_TYPE_CEA708_RAW
* if you wish to store CEA-608 from two fields and prefix each byte pair
* with 0xFC for the first field and 0xFD for the second field.
* @GST_VIDEO_CAPTION_TYPE_CEA608_S334_1A: CEA-608 as byte triplets as defined
* in SMPTE S334-1 Annex A. The second and third byte of the byte triplet
* is the raw CEA608 data, the first byte is a bitfield: The top/7th bit is
* 0 for the second field, 1 for the first field, bit 6 and 5 are 0 and
* bits 4 to 0 are a 5 bit unsigned integer that represents the line
* offset relative to the base-line of the original image format (line 9
* for 525-line field 1, line 272 for 525-line field 2, line 5 for
* 625-line field 1 and line 318 for 625-line field 2).
* @GST_VIDEO_CAPTION_TYPE_CEA708_RAW: CEA-708 as cc_data byte triplets. They
* can also contain 608-in-708.
* can also contain 608-in-708 and the first byte of each triplet has to
* be inspected for detecting the type.
* @GST_VIDEO_CAPTION_TYPE_CEA708_CDP: CEA-708 (and optionally CEA-608) in
* a CDP (Caption Distribution Packet) defined by SMPTE S-334-2.
* Contains the whole CDP (starting with 0x9669).
@ -125,7 +129,7 @@ typedef enum {
typedef enum {
GST_VIDEO_CAPTION_TYPE_UNKNOWN = 0,
GST_VIDEO_CAPTION_TYPE_CEA608_RAW = 1,
GST_VIDEO_CAPTION_TYPE_CEA608_IN_CEA708_RAW = 2,
GST_VIDEO_CAPTION_TYPE_CEA608_S334_1A = 2,
GST_VIDEO_CAPTION_TYPE_CEA708_RAW = 3,
GST_VIDEO_CAPTION_TYPE_CEA708_CDP = 4
} GstVideoCaptionType;