avdevice/decklink_enc: add support for SMPTE 2038 VANC packet output

Support decoding and embedding VANC packets delivered via SMPTE 2038
into the SDI output.  We leverage an intermediate queue because
data packets are announced separately from video but we need to embed
the data into the video frame when it is output.

Note that this patch has some additional abstraction for data
streams in general as opposed to just SMPTE 2038 packets.  This is
because subsequent patches will introduce support for other
data codecs.

Thanks to Marton Balint for review/feedback.

Signed-off-by: Devin Heitmueller <dheitmueller@ltnglobal.com>
Signed-off-by: Marton Balint <cus@passwd.hu>
This commit is contained in:
Devin Heitmueller
2023-06-30 17:14:39 -04:00
committed by Marton Balint
parent e7d800fe89
commit ac4247270c
7 changed files with 121 additions and 2 deletions

View File

@ -484,6 +484,22 @@ int ff_decklink_packet_queue_get(DecklinkPacketQueue *q, AVPacket *pkt, int bloc
return ret;
}
int64_t ff_decklink_packet_queue_peekpts(DecklinkPacketQueue *q)
{
PacketListEntry *pkt1;
int64_t pts = -1;
pthread_mutex_lock(&q->mutex);
pkt1 = q->pkt_list.head;
if (pkt1) {
pts = pkt1->pkt.pts;
}
pthread_mutex_unlock(&q->mutex);
return pts;
}
int ff_decklink_list_devices(AVFormatContext *avctx,
struct AVDeviceInfoList *device_list,
int show_inputs, int show_outputs)