Loading...
Searching...
No Matches
smpte_436m.h File Reference
`#include <stdint.h>`

Go to the source code of this file.

## Data Structures

struct | AVSmpte436mAncIterator
| Iterator over the ANC packets in a single AV_CODEC_ID_SMPTE_436M_ANC AVPacket's data. More...
struct | AVSmpte291mAnc8bit
| An ANC packet with an 8-bit payload. More...
struct | AVSmpte436mCodedAnc
| An encoded ANC packet within a single AV_CODEC_ID_SMPTE_436M_ANC AVPacket's data. More...

## Macros

#define | AV_SMPTE_291M_ANC_PAYLOAD_CAPACITY 0xFF
| the payload capacity of AVSmpte291mAnc8bit (and of AVSmpte291mAnc10bit when that gets added)
#define | AV_SMPTE_436M_CODED_ANC_SAMPLE_CAPACITY (AV_SMPTE_291M_ANC_PAYLOAD_CAPACITY + 4) /* 4 for did, sdid_or_dbn, data_count, and checksum */
| max number of samples that can be stored in the payload of AVSmpte436mCodedAnc
#define | AV_SMPTE_436M_CODED_ANC_PAYLOAD_CAPACITY (((AV_SMPTE_436M_CODED_ANC_SAMPLE_CAPACITY + 2) / 3) * 4)
| max number of bytes that can be stored in the payload of AVSmpte436mCodedAnc
#define | AV_SMPTE_291M_ANC_DID_CTA_708 0x61
| AVSmpte291mAnc8bit::did when carrying CTA-708 data (for AV_CODEC_ID_EIA_608).
#define | AV_SMPTE_291M_ANC_SDID_CTA_708 0x1
| AVSmpte291mAnc8bit::sdid_or_dbn when carrying CTA-708 data (for AV_CODEC_ID_EIA_608).

## Enumerations

enum

AVSmpte436mWrappingType {
AV_SMPTE_436M_WRAPPING_TYPE_VANC_FRAME = 1 , AV_SMPTE_436M_WRAPPING_TYPE_VANC_FIELD_1 = 2 , AV_SMPTE_436M_WRAPPING_TYPE_VANC_FIELD_2 = 3 , AV_SMPTE_436M_WRAPPING_TYPE_VANC_PROGRESSIVE_FRAME = 4 ,
AV_SMPTE_436M_WRAPPING_TYPE_HANC_FRAME = 0x11 , AV_SMPTE_436M_WRAPPING_TYPE_HANC_FIELD_1 = 0x12 , AV_SMPTE_436M_WRAPPING_TYPE_HANC_FIELD_2 = 0x13 , AV_SMPTE_436M_WRAPPING_TYPE_HANC_PROGRESSIVE_FRAME = 0x14 ,
AV_SMPTE_436M_WRAPPING_TYPE_MAX = 0xFF
}

| Wrapping Type from Table 7 (page 13) of: https://pub.smpte.org/latest/st436/s436m-2006.pdf. More...

enum

AVSmpte436mPayloadSampleCoding {
AV_SMPTE_436M_PAYLOAD_SAMPLE_CODING_1BIT_LUMA = 1 , AV_SMPTE_436M_PAYLOAD_SAMPLE_CODING_1BIT_COLOR_DIFF = 2 , AV_SMPTE_436M_PAYLOAD_SAMPLE_CODING_1BIT_LUMA_AND_COLOR_DIFF = 3 , AV_SMPTE_436M_PAYLOAD_SAMPLE_CODING_8BIT_LUMA = 4 ,
AV_SMPTE_436M_PAYLOAD_SAMPLE_CODING_8BIT_COLOR_DIFF = 5 , AV_SMPTE_436M_PAYLOAD_SAMPLE_CODING_8BIT_LUMA_AND_COLOR_DIFF = 6 , AV_SMPTE_436M_PAYLOAD_SAMPLE_CODING_10BIT_LUMA = 7 , AV_SMPTE_436M_PAYLOAD_SAMPLE_CODING_10BIT_COLOR_DIFF = 8 ,
AV_SMPTE_436M_PAYLOAD_SAMPLE_CODING_10BIT_LUMA_AND_COLOR_DIFF = 9 , AV_SMPTE_436M_PAYLOAD_SAMPLE_CODING_8BIT_LUMA_WITH_PARITY_ERROR = 10 , AV_SMPTE_436M_PAYLOAD_SAMPLE_CODING_8BIT_COLOR_DIFF_WITH_PARITY_ERROR = 11 , AV_SMPTE_436M_PAYLOAD_SAMPLE_CODING_8BIT_LUMA_AND_COLOR_DIFF_WITH_PARITY_ERROR = 12 ,
AV_SMPTE_436M_PAYLOAD_SAMPLE_CODING_MAX = 0xFF
}

| Payload Sample Coding from Table 4 (page 10) and Table 7 (page 13) of: https://pub.smpte.org/latest/st436/s436m-2006.pdf. More...

## Functions

int | av_smpte_436m_coded_anc_validate (const AVSmpte436mCodedAnc *anc)
| Validate a AVSmpte436mCodedAnc structure.
int | av_smpte_436m_anc_encode (uint8_t *out, int size, int anc_packet_count, const AVSmpte436mCodedAnc *anc_packets)
| Encode ANC packets into a single AV_CODEC_ID_SMPTE_436M_ANC AVPacket's data.
int | av_smpte_436m_anc_append (struct AVPacket *pkt, int anc_packet_count, const AVSmpte436mCodedAnc *anc_packets)
| Append more ANC packets to a single AV_CODEC_ID_SMPTE_436M_ANC AVPacket's data.
int | av_smpte_436m_anc_iter_init (AVSmpte436mAncIterator *iter, const uint8_t *buf, int buf_size)
| Set up iteration over the ANC packets in a single AV_CODEC_ID_SMPTE_436M_ANC AVPacket's data.
int | av_smpte_436m_anc_iter_next (AVSmpte436mAncIterator *iter, AVSmpte436mCodedAnc *anc)
| Get the next ANC packet from the iterator, advancing the iterator.
int | av_smpte_436m_coded_anc_payload_size (AVSmpte436mPayloadSampleCoding sample_coding, uint16_t sample_count)
| Get the minimum number of bytes needed to store a AVSmpte436mCodedAnc payload.
int | av_smpte_291m_anc_8bit_decode (AVSmpte291mAnc8bit *out, AVSmpte436mPayloadSampleCoding sample_coding, uint16_t sample_count, const uint8_t *payload, void *log_ctx)
| Decode a AVSmpte436mCodedAnc payload into AVSmpte291mAnc8bit.
void | av_smpte_291m_anc_8bit_fill_checksum (AVSmpte291mAnc8bit *anc)
| Fill in the correct checksum for a AVSmpte291mAnc8bit.
int | av_smpte_291m_anc_8bit_get_sample_count (const AVSmpte291mAnc8bit *anc, AVSmpte436mPayloadSampleCoding sample_coding, void *log_ctx)
| Compute the sample count needed to encode a AVSmpte291mAnc8bit into a AVSmpte436mCodedAnc payload.
int | av_smpte_291m_anc_8bit_encode (AVSmpte436mCodedAnc *out, uint16_t line_number, AVSmpte436mWrappingType wrapping_type, AVSmpte436mPayloadSampleCoding sample_coding, const AVSmpte291mAnc8bit *payload, void *log_ctx)
| Encode a AVSmpte291mAnc8bit into a AVSmpte436mCodedAnc.
int | av_smpte_291m_anc_8bit_extract_cta_708 (const AVSmpte291mAnc8bit *anc, uint8_t *cc_data, void *log_ctx)
| Try to decode an ANC packet into EIA-608/CTA-708 data (AV_CODEC_ID_EIA_608).

## Macro Definition Documentation

## AV_SMPTE_291M_ANC_PAYLOAD_CAPACITY

#define AV_SMPTE_291M_ANC_PAYLOAD_CAPACITY 0xFF

the payload capacity of AVSmpte291mAnc8bit (and of AVSmpte291mAnc10bit when that gets added)

Definition at line 89 of file smpte_436m.h.

## AV_SMPTE_436M_CODED_ANC_SAMPLE_CAPACITY

#define AV_SMPTE_436M_CODED_ANC_SAMPLE_CAPACITY (AV_SMPTE_291M_ANC_PAYLOAD_CAPACITY + 4) /* 4 for did, sdid_or_dbn, data_count, and checksum */

max number of samples that can be stored in the payload of AVSmpte436mCodedAnc

Definition at line 107 of file smpte_436m.h.

## AV_SMPTE_436M_CODED_ANC_PAYLOAD_CAPACITY

#define AV_SMPTE_436M_CODED_ANC_PAYLOAD_CAPACITY (((AV_SMPTE_436M_CODED_ANC_SAMPLE_CAPACITY + 2) / 3) * 4)

max number of bytes that can be stored in the payload of AVSmpte436mCodedAnc

Definition at line 110 of file smpte_436m.h.

## AV_SMPTE_291M_ANC_DID_CTA_708

#define AV_SMPTE_291M_ANC_DID_CTA_708 0x61

AVSmpte291mAnc8bit::did when carrying CTA-708 data (for AV_CODEC_ID_EIA_608).

Definition at line 237 of file smpte_436m.h.

## AV_SMPTE_291M_ANC_SDID_CTA_708

#define AV_SMPTE_291M_ANC_SDID_CTA_708 0x1

AVSmpte291mAnc8bit::sdid_or_dbn when carrying CTA-708 data (for AV_CODEC_ID_EIA_608).

Definition at line 240 of file smpte_436m.h.

## Enumeration Type Documentation

## AVSmpte436mWrappingType

enum AVSmpte436mWrappingType

Wrapping Type from Table 7 (page 13) of: https://pub.smpte.org/latest/st436/s436m-2006.pdf.

Enumerator
AV_SMPTE_436M_WRAPPING_TYPE_VANC_FRAME |
AV_SMPTE_436M_WRAPPING_TYPE_VANC_FIELD_1 |
AV_SMPTE_436M_WRAPPING_TYPE_VANC_FIELD_2 |
AV_SMPTE_436M_WRAPPING_TYPE_VANC_PROGRESSIVE_FRAME |
AV_SMPTE_436M_WRAPPING_TYPE_HANC_FRAME |
AV_SMPTE_436M_WRAPPING_TYPE_HANC_FIELD_1 |
AV_SMPTE_436M_WRAPPING_TYPE_HANC_FIELD_2 |
AV_SMPTE_436M_WRAPPING_TYPE_HANC_PROGRESSIVE_FRAME |
AV_SMPTE_436M_WRAPPING_TYPE_MAX | not a real wrapping type, just here to guarantee the enum is big enough

Definition at line 40 of file smpte_436m.h.

## AVSmpte436mPayloadSampleCoding

enum AVSmpte436mPayloadSampleCoding

Payload Sample Coding from Table 4 (page 10) and Table 7 (page 13) of: https://pub.smpte.org/latest/st436/s436m-2006.pdf.

Enumerator
AV_SMPTE_436M_PAYLOAD_SAMPLE_CODING_1BIT_LUMA | only used for VBI
AV_SMPTE_436M_PAYLOAD_SAMPLE_CODING_1BIT_COLOR_DIFF | only used for VBI
AV_SMPTE_436M_PAYLOAD_SAMPLE_CODING_1BIT_LUMA_AND_COLOR_DIFF | only used for VBI
AV_SMPTE_436M_PAYLOAD_SAMPLE_CODING_8BIT_LUMA | used for VBI and ANC
AV_SMPTE_436M_PAYLOAD_SAMPLE_CODING_8BIT_COLOR_DIFF | used for VBI and ANC
AV_SMPTE_436M_PAYLOAD_SAMPLE_CODING_8BIT_LUMA_AND_COLOR_DIFF | used for VBI and ANC
AV_SMPTE_436M_PAYLOAD_SAMPLE_CODING_10BIT_LUMA | used for VBI and ANC
AV_SMPTE_436M_PAYLOAD_SAMPLE_CODING_10BIT_COLOR_DIFF | used for VBI and ANC
AV_SMPTE_436M_PAYLOAD_SAMPLE_CODING_10BIT_LUMA_AND_COLOR_DIFF | used for VBI and ANC
AV_SMPTE_436M_PAYLOAD_SAMPLE_CODING_8BIT_LUMA_WITH_PARITY_ERROR | only used for ANC
AV_SMPTE_436M_PAYLOAD_SAMPLE_CODING_8BIT_COLOR_DIFF_WITH_PARITY_ERROR | only used for ANC
AV_SMPTE_436M_PAYLOAD_SAMPLE_CODING_8BIT_LUMA_AND_COLOR_DIFF_WITH_PARITY_ERROR | only used for ANC
AV_SMPTE_436M_PAYLOAD_SAMPLE_CODING_MAX | not a real sample coding, just here to guarantee the enum is big enough

Definition at line 58 of file smpte_436m.h.

## Function Documentation

## av_smpte_436m_coded_anc_validate()

int av_smpte_436m_coded_anc_validate | ( | const AVSmpte436mCodedAnc * | anc | ) |

Validate a AVSmpte436mCodedAnc structure.

Doesn't check if the payload is valid.

Parameters

  [in] | anc | ANC packet to validate

Returns
  0 on success, AVERROR codes otherwise.

## av_smpte_436m_anc_encode()

int av_smpte_436m_anc_encode | ( | uint8_t * | out,
|  | int | size,
|  | int | anc_packet_count,
|  | const AVSmpte436mCodedAnc * | anc_packets )

Encode ANC packets into a single AV_CODEC_ID_SMPTE_436M_ANC AVPacket's data.

Parameters

  [in] | anc_packet_count | number of ANC packets to encode
  [in] | anc_packets | the ANC packets to encode
  [in] | size | the size of out. ignored if out is NULL.
  [out] | out | Output bytes. Doesn't write anything if out is NULL.

Returns
  the number of bytes written on success, AVERROR codes otherwise. If out is NULL, returns the number of bytes it would have written.

## av_smpte_436m_anc_append()

int av_smpte_436m_anc_append | ( | struct AVPacket * | pkt,
|  | int | anc_packet_count,
|  | const AVSmpte436mCodedAnc * | anc_packets )

Append more ANC packets to a single AV_CODEC_ID_SMPTE_436M_ANC AVPacket's data.

Parameters

  [in] | anc_packet_count | number of ANC packets to encode
  [in] | anc_packets | the ANC packets to encode
  | pkt | the AVPacket to append to. it must either be size 0 or contain valid SMPTE_436M_ANC data.

Returns
  0 on success, AVERROR codes otherwise.

## av_smpte_436m_anc_iter_init()

int av_smpte_436m_anc_iter_init | ( | AVSmpte436mAncIterator * | iter,
|  | const uint8_t * | buf,
|  | int | buf_size )

Set up iteration over the ANC packets in a single AV_CODEC_ID_SMPTE_436M_ANC AVPacket's data.

Parameters

  [in] | buf | Pointer to the data from a AV_CODEC_ID_SMPTE_436M_ANC AVPacket.
  [in] | buf_size | Size of the data from a AV_CODEC_ID_SMPTE_436M_ANC AVPacket.
  [out] | iter | Pointer to the iterator.

Returns
  0 on success, AVERROR codes otherwise.

## av_smpte_436m_anc_iter_next()

int av_smpte_436m_anc_iter_next | ( | AVSmpte436mAncIterator * | iter,
|  | AVSmpte436mCodedAnc * | anc )

Get the next ANC packet from the iterator, advancing the iterator.

Parameters

  [in,out] | iter | Pointer to the iterator.
  [out] | anc | The returned ANC packet.

Returns
  0 on success, AVERROR_EOF when the iterator has reached the end, AVERROR codes otherwise.

## av_smpte_436m_coded_anc_payload_size()

int av_smpte_436m_coded_anc_payload_size | ( | AVSmpte436mPayloadSampleCoding | sample_coding,
|  | uint16_t | sample_count )

Get the minimum number of bytes needed to store a AVSmpte436mCodedAnc payload.

Parameters

  sample_coding | the payload sample coding
  sample_count | the number of samples stored in the payload

Returns
  returns the minimum number of bytes needed, on error returns < 0. always <= SMPTE_436M_CODED_ANC_PAYLOAD_CAPACITY

## av_smpte_291m_anc_8bit_decode()

int av_smpte_291m_anc_8bit_decode | ( | AVSmpte291mAnc8bit * | out,
|  | AVSmpte436mPayloadSampleCoding | sample_coding,
|  | uint16_t | sample_count,
|  | const uint8_t * | payload,
|  | void * | log_ctx )

Decode a AVSmpte436mCodedAnc payload into AVSmpte291mAnc8bit.

Parameters

  [in] | sample_coding | the payload sample coding
  [in] | sample_count | the number of samples stored in the payload
  [in] | payload | the bytes storing the payload, the needed size can be obtained from avpriv_smpte_436m_coded_anc_payload_size
  [in] | log_ctx | context pointer for av_log
  [out] | out | The decoded ANC packet.

Returns
  returns 0 on success, otherwise < 0.

## av_smpte_291m_anc_8bit_fill_checksum()

void av_smpte_291m_anc_8bit_fill_checksum | ( | AVSmpte291mAnc8bit * | anc | ) |

Fill in the correct checksum for a AVSmpte291mAnc8bit.

Parameters

  [in,out] | anc | The ANC packet.

## av_smpte_291m_anc_8bit_get_sample_count()

int av_smpte_291m_anc_8bit_get_sample_count | ( | const AVSmpte291mAnc8bit * | anc,
|  | AVSmpte436mPayloadSampleCoding | sample_coding,
|  | void * | log_ctx )

Compute the sample count needed to encode a AVSmpte291mAnc8bit into a AVSmpte436mCodedAnc payload.

Parameters

  [in] | anc | The ANC packet.
  [in] | sample_coding | The sample coding.
  [in] | log_ctx | context pointer for av_log

Returns
  returns the sample count on success, otherwise < 0.

## av_smpte_291m_anc_8bit_encode()

int av_smpte_291m_anc_8bit_encode | ( | AVSmpte436mCodedAnc * | out,
|  | uint16_t | line_number,
|  | AVSmpte436mWrappingType | wrapping_type,
|  | AVSmpte436mPayloadSampleCoding | sample_coding,
|  | const AVSmpte291mAnc8bit * | payload,
|  | void * | log_ctx )

Encode a AVSmpte291mAnc8bit into a AVSmpte436mCodedAnc.

Parameters

  [in] | line_number | the line number the ANC packet is on
  [in] | wrapping_type | the wrapping type
  [in] | sample_coding | the payload sample coding
  [in] | payload | the ANC packet to encode.
  [in] | log_ctx | context pointer for av_log
  [out] | out | The encoded ANC packet.

Returns
  returns 0 on success, otherwise < 0.

## av_smpte_291m_anc_8bit_extract_cta_708()

int av_smpte_291m_anc_8bit_extract_cta_708 | ( | const AVSmpte291mAnc8bit * | anc,
|  | uint8_t * | cc_data,
|  | void * | log_ctx )

Try to decode an ANC packet into EIA-608/CTA-708 data (AV_CODEC_ID_EIA_608).

This

Parameters

  [in] | anc | The ANC packet.
  [in] | log_ctx | Context pointer for av_log
  [out] | cc_data | the buffer to store the extracted EIA-608/CTA-708 data, you can pass NULL to not store the data. the required size is 3 * cc_count bytes. SMPTE_291M_ANC_PAYLOAD_CAPACITY is always enough size.

Returns
  returns cc_count (>= 0) on success, AVERROR(EAGAIN) if it wasn't a CTA-708 ANC packet, < 0 on error.