2.5.22 IDeckLinkAncillaryPacket Interface

The IDeckLinkAncillaryPacket interface represents an ancillary data packet within a video frame. A reference to an IDeckLinkAncillaryPacket interface can either be obtained with a known DID/SDID by calling GetFirstPacketByID on a IDeckLinkVideoFrameAncillaryPackets or via the IDeckLinkAncillaryPacketIterator interface.

Tip

Developers may subclass IDeckLinkAncillaryPacket to implement a specific VANC data packet type.

Related Interfaces

Interface

Interface ID

Description

IDeckLinkAncillaryPacketIterator

IID_IDeckLinkAncillaryPacketIterator

IDeckLinkAncillaryPacketIterator::Next() outputs an IDeckLinkAncillaryPacket object interface

IDeckLinkVideoFrameAncillaryPackets

IID_IDeckLinkVideoFrameAncillaryPackets

IDeckLinkVideoFrameAncillaryPackets::GetFirstPacketByID() outputs an IDeckLinkAncillaryPacket object interface

IDeckLinkVideoFrameAncillaryPackets

IID_IDeckLinkVideoFrameAncillaryPackets

An IDeckLinkAncillaryPacket object interface is attached to a video frame with IDeckLinkVideoFrameAncillaryPackets::AttachPacket()

IDeckLinkVideoFrameAncillaryPackets

IID_IDeckLinkVideoFrameAncillaryPackets

An IDeckLinkAncillaryPacket object interface is detached from a video frame with IDeckLinkVideoFrameAncillaryPackets::DetachPacket()

2.5.22.1 IDeckLinkAncillaryPacket::GetBytes method

HRESULT IDeckLinkAncillaryPacket::GetBytes(BMDAncillaryPacketFormat format, const void **data, uint32_t *size);

The GetBytes method allows direct access to the data buffer of the ancillary packet.

Tip

When subclassing IDeckLinkAncillaryPacket, implement GetBytes with support of at least one type of BMDAncillaryPacketFormat. Specify NULL for either output parameter if unwanted.

Parameters:
  • format – Requested format of data buffer output (BMDAncillaryPacketFormat)

  • data – Pointer to ancillary packet data buffer. The pointer is valid while IDeckLinkAncillaryPacket object remains valid.

  • size – Number of elements in the data buffer. When the requested format is bmdAncillaryPacketFormatYCbCr10, this value will be the size in pixels. For other ancillary packet formats, it will be the length of the buffer in units of the format’s type size.

Return values:
  • E_NOTIMPL – Format not implemented.

  • E_FAIL – Failure

  • S_OK – Success

2.5.22.2 IDeckLinkAncillaryPacket::GetDID method

uint8_t IDeckLinkAncillaryPacket::GetDID();

The GetDID method returns the Data ID (DID) of the ancillary packet.

Returns:

Data ID (DID) of the ancillary packet

2.5.22.3 IDeckLinkAncillaryPacket::GetSDID method

uint8_t IDeckLinkAncillaryPacket::GetSDID();

The GetSDID method returns the SecondaryData ID (SDID) of the ancillary packet.

Returns:

Secondary Data ID (SDID) of the ancillary packet

2.5.22.4 IDeckLinkAncillaryPacket::GetLineNumber method

uint32_t IDeckLinkAncillaryPacket::GetLineNumber();

The GetLineNumber method returns the video frame line number of an ancillary packet. When subclassing IDeckLinkAncillaryPacket for VANC output, if GetLineNumber returns 0, the ancillary packet will be assigned a line automatically.

Returns:

Video frame line number of the ancillary packet

2.5.22.5 IDeckLinkAncillaryPacket::GetDataStreamIndex method

uint8_t IDeckLinkAncillaryPacket::GetDataStreamIndex();

The GetDataStreamIndex method returns a data stream index of the ancillary packet.

This function should only return 0 for SD modes. In HD and above, this function will normally return 0 to output the ancillary packet in luma color channel. However this function can return 1 to encode a second data stream in the chroma color channel, but this should only occur when the first data stream is completely full.

Returns:

Data stream index for the ancillary packet