FFmpeg
Data Structures | Macros | Functions | Variables
decklink_dec.cpp File Reference
#include <atomic>
#include "libavformat/internal.h"
#include <DeckLinkAPI.h>
#include "config.h"
#include "libavformat/avformat.h"
#include "libavutil/avassert.h"
#include "libavutil/avutil.h"
#include "libavutil/common.h"
#include "libavutil/imgutils.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/time.h"
#include "libavutil/mathematics.h"
#include "libavutil/reverse.h"
#include "avdevice.h"
#include "decklink_common.h"
#include "decklink_dec.h"

Go to the source code of this file.

Data Structures

struct  VANCLineNumber
 
class  decklink_allocator
 
class  decklink_input_callback
 

Macros

#define MAX_WIDTH_VANC   1920
 

Functions

static void decklink_object_free (void *opaque, uint8_t *data)
 
static int get_vanc_line_idx (BMDDisplayMode mode)
 
static void clear_parity_bits (uint16_t *buf, int len)
 
static int check_vanc_parity_checksum (uint16_t *buf, int len, uint16_t checksum)
 
static void extract_luma_from_v210 (uint16_t *dst, const uint8_t *src, int width)
 
static void unpack_v210 (uint16_t *dst, const uint8_t *src, int width)
 
static uint8_t calc_parity_and_line_offset (int line)
 
static void fill_data_unit_head (int line, uint8_t *tgt)
 
static uint8_tteletext_data_unit_from_op47_vbi_packet (int line, uint16_t *py, uint8_t *tgt)
 
static int linemask_matches (int line, int64_t mask)
 
static uint8_tteletext_data_unit_from_op47_data (uint16_t *py, uint16_t *pend, uint8_t *tgt, int64_t wanted_lines)
 
static uint8_tteletext_data_unit_from_ancillary_packet (uint16_t *py, uint16_t *pend, uint8_t *tgt, int64_t wanted_lines, int allow_multipacket)
 
static uint8_tvanc_to_cc (AVFormatContext *avctx, uint16_t *buf, size_t words, unsigned &cc_count)
 
static uint8_tget_metadata (AVFormatContext *avctx, uint16_t *buf, size_t width, uint8_t *tgt, size_t tgt_size, AVPacket *pkt)
 
static void avpacket_queue_init (AVFormatContext *avctx, AVPacketQueue *q)
 
static void avpacket_queue_flush (AVPacketQueue *q)
 
static void avpacket_queue_end (AVPacketQueue *q)
 
static unsigned long long avpacket_queue_size (AVPacketQueue *q)
 
static int avpacket_queue_put (AVPacketQueue *q, AVPacket *pkt)
 
static int avpacket_queue_get (AVPacketQueue *q, AVPacket *pkt, int block)
 
static int64_t get_pkt_pts (IDeckLinkVideoInputFrame *videoFrame, IDeckLinkAudioInputPacket *audioFrame, int64_t wallclock, int64_t abs_wallclock, DecklinkPtsSource pts_src, AVRational time_base, int64_t *initial_pts, int copyts)
 
static int decklink_autodetect (struct decklink_cctx *cctx)
 
av_cold int ff_decklink_read_close (AVFormatContext *avctx)
 
av_cold int ff_decklink_read_header (AVFormatContext *avctx)
 
int ff_decklink_read_packet (AVFormatContext *avctx, AVPacket *pkt)
 
int ff_decklink_list_input_devices (AVFormatContext *avctx, struct AVDeviceInfoList *device_list)
 

Variables

const BMDDisplayMode AUTODETECT_DEFAULT_MODE = bmdModeNTSC
 
static VANCLineNumber vanc_line_numbers []
 

Macro Definition Documentation

◆ MAX_WIDTH_VANC

#define MAX_WIDTH_VANC   1920

Definition at line 55 of file decklink_dec.cpp.

Function Documentation

◆ decklink_object_free()

static void decklink_object_free ( void *  opaque,
uint8_t data 
)
static

Definition at line 143 of file decklink_dec.cpp.

Referenced by decklink_input_callback::VideoInputFrameArrived().

◆ get_vanc_line_idx()

static int get_vanc_line_idx ( BMDDisplayMode  mode)
static

Definition at line 150 of file decklink_dec.cpp.

Referenced by decklink_input_callback::VideoInputFrameArrived().

◆ clear_parity_bits()

static void clear_parity_bits ( uint16_t *  buf,
int  len 
)
inlinestatic

Definition at line 161 of file decklink_dec.cpp.

Referenced by get_metadata().

◆ check_vanc_parity_checksum()

static int check_vanc_parity_checksum ( uint16_t *  buf,
int  len,
uint16_t  checksum 
)
static

Definition at line 167 of file decklink_dec.cpp.

Referenced by get_metadata().

◆ extract_luma_from_v210()

static void extract_luma_from_v210 ( uint16_t *  dst,
const uint8_t src,
int  width 
)
static

Definition at line 190 of file decklink_dec.cpp.

Referenced by decklink_input_callback::VideoInputFrameArrived().

◆ unpack_v210()

static void unpack_v210 ( uint16_t *  dst,
const uint8_t src,
int  width 
)
static

Definition at line 201 of file decklink_dec.cpp.

Referenced by decklink_input_callback::VideoInputFrameArrived().

◆ calc_parity_and_line_offset()

static uint8_t calc_parity_and_line_offset ( int  line)
static

Definition at line 212 of file decklink_dec.cpp.

Referenced by fill_data_unit_head().

◆ fill_data_unit_head()

static void fill_data_unit_head ( int  line,
uint8_t tgt 
)
static

Definition at line 222 of file decklink_dec.cpp.

Referenced by teletext_data_unit_from_op47_vbi_packet().

◆ teletext_data_unit_from_op47_vbi_packet()

static uint8_t* teletext_data_unit_from_op47_vbi_packet ( int  line,
uint16_t *  py,
uint8_t tgt 
)
static

Definition at line 263 of file decklink_dec.cpp.

Referenced by teletext_data_unit_from_op47_data().

◆ linemask_matches()

static int linemask_matches ( int  line,
int64_t  mask 
)
static

Definition at line 281 of file decklink_dec.cpp.

Referenced by teletext_data_unit_from_op47_data().

◆ teletext_data_unit_from_op47_data()

static uint8_t* teletext_data_unit_from_op47_data ( uint16_t *  py,
uint16_t *  pend,
uint8_t tgt,
int64_t  wanted_lines 
)
static

Definition at line 291 of file decklink_dec.cpp.

Referenced by teletext_data_unit_from_ancillary_packet().

◆ teletext_data_unit_from_ancillary_packet()

static uint8_t* teletext_data_unit_from_ancillary_packet ( uint16_t *  py,
uint16_t *  pend,
uint8_t tgt,
int64_t  wanted_lines,
int  allow_multipacket 
)
static

Definition at line 308 of file decklink_dec.cpp.

Referenced by get_metadata().

◆ vanc_to_cc()

static uint8_t* vanc_to_cc ( AVFormatContext avctx,
uint16_t *  buf,
size_t  words,
unsigned &  cc_count 
)
static

Definition at line 327 of file decklink_dec.cpp.

Referenced by get_metadata().

◆ get_metadata()

static uint8_t* get_metadata ( AVFormatContext avctx,
uint16_t *  buf,
size_t  width,
uint8_t tgt,
size_t  tgt_size,
AVPacket pkt 
)
static

Definition at line 417 of file decklink_dec.cpp.

Referenced by decklink_input_callback::VideoInputFrameArrived().

◆ avpacket_queue_init()

static void avpacket_queue_init ( AVFormatContext avctx,
AVPacketQueue q 
)
static

Definition at line 470 of file decklink_dec.cpp.

Referenced by ff_decklink_read_header().

◆ avpacket_queue_flush()

static void avpacket_queue_flush ( AVPacketQueue q)
static

Definition at line 480 of file decklink_dec.cpp.

Referenced by avpacket_queue_end().

◆ avpacket_queue_end()

static void avpacket_queue_end ( AVPacketQueue q)
static

Definition at line 497 of file decklink_dec.cpp.

Referenced by ff_decklink_read_close().

◆ avpacket_queue_size()

static unsigned long long avpacket_queue_size ( AVPacketQueue q)
static

◆ avpacket_queue_put()

static int avpacket_queue_put ( AVPacketQueue q,
AVPacket pkt 
)
static

Definition at line 513 of file decklink_dec.cpp.

Referenced by decklink_input_callback::VideoInputFrameArrived().

◆ avpacket_queue_get()

static int avpacket_queue_get ( AVPacketQueue q,
AVPacket pkt,
int  block 
)
static

Definition at line 555 of file decklink_dec.cpp.

Referenced by ff_decklink_read_packet().

◆ get_pkt_pts()

static int64_t get_pkt_pts ( IDeckLinkVideoInputFrame *  videoFrame,
IDeckLinkAudioInputPacket *  audioFrame,
int64_t  wallclock,
int64_t  abs_wallclock,
DecklinkPtsSource  pts_src,
AVRational  time_base,
int64_t *  initial_pts,
int  copyts 
)
static

Definition at line 633 of file decklink_dec.cpp.

Referenced by decklink_input_callback::VideoInputFrameArrived().

◆ decklink_autodetect()

static int decklink_autodetect ( struct decklink_cctx cctx)
static

Definition at line 931 of file decklink_dec.cpp.

Referenced by ff_decklink_read_header().

◆ ff_decklink_read_close()

av_cold int ff_decklink_read_close ( AVFormatContext avctx)

Definition at line 981 of file decklink_dec.cpp.

◆ ff_decklink_read_header()

av_cold int ff_decklink_read_header ( AVFormatContext avctx)

Definition at line 1000 of file decklink_dec.cpp.

◆ ff_decklink_read_packet()

int ff_decklink_read_packet ( AVFormatContext avctx,
AVPacket pkt 
)

Definition at line 1254 of file decklink_dec.cpp.

◆ ff_decklink_list_input_devices()

int ff_decklink_list_input_devices ( AVFormatContext avctx,
struct AVDeviceInfoList device_list 
)

Definition at line 1273 of file decklink_dec.cpp.

Variable Documentation

◆ AUTODETECT_DEFAULT_MODE

const BMDDisplayMode AUTODETECT_DEFAULT_MODE = bmdModeNTSC

◆ vanc_line_numbers

VANCLineNumber vanc_line_numbers[]
static