Go to the documentation of this file.
51 if (nal_size > INT_MAX - 4)
72 bytestream2_put_be32u(&pc, 1);
79 memcpy(buf, lcevc_pkt->
data, lcevc_pkt->
size);
105 if (
inlink->par->extradata_size > 4 &&
inlink->par->extradata[0])
159 .name =
"enhancement",
173 .
p.
name =
"lcevc_merge",
174 .p.priv_class = &lcevc_merge_class,
176 .
preinit = lcevc_merge_packetsync_preinit,
static av_always_inline int bytestream2_get_bytes_left(const GetByteContext *g)
static int lcevc_merge(FFPacketSync *fs)
AVBitStreamFilterContext * src
source filter
static av_always_inline void bytestream2_skipu(GetByteContext *g, unsigned int size)
The exact code depends on how similar the blocks are and how related they are to the and needs to apply these operations to the correct inlink or outlink if there are several Macros are available to factor that when no extra processing is inlink
A filter pad used for either input or output.
const FFBitStreamFilter ff_lcevc_merge_bsf
static enum AVCodecID enhancement_codec_ids[]
int ff_packetsync_dualinput_get(FFPacketSync *fs, AVPacket **f0, AVPacket **f1)
static av_cold int preinit(AVBitStreamFilterContext *ctx)
static av_always_inline void bytestream2_skip(GetByteContext *g, unsigned int size)
static int activate(AVBitStreamFilterContext *ctx)
static const AVBitStreamFilterPad lcevc_merge_outputs[]
static av_always_inline void bytestream2_init_writer(PutByteContext *p, uint8_t *buf, int buf_size)
#define BSFILTER_INPUTS(array)
static AVFormatContext * ctx
int ff_bsf_filter_packet(AVBitStreamFilterLink *link, AVPacket *pkt)
Send a packet of data to the next filter.
@ AV_PKT_DATA_LCEVC
Raw LCEVC payload data, as a uint8_t array, with NAL emulation bytes intact.
static const AVBitStreamFilterPad lcevc_merge_inputs[]
Describe the class of an AVClass context structure.
#define fs(width, name, subs,...)
AVCodecID
Identify the syntax and semantics of the bitstream.
AVBitStreamFilter p
The public AVBitStreamFilter.
#define i(width, name, range_min, range_max)
int ff_packetsync_configure(FFPacketSync *fs)
Configure a packet sync structure.
PACKETSYNC_DEFINE_CLASS_EXT(lcevc_merge, LCEVCMergeContext, ps, NULL)
static AVPacket * lcevc_merge_packets(AVBitStreamFilterContext *ctx, AVPacket *base_pkt, const AVPacket *lcevc_pkt)
static int config_output(AVBitStreamFilterLink *outlink)
#define BSFILTER_OUTPUTS(array)
static av_cold void uninit(AVBitStreamFilterContext *ctx)
void ff_packetsync_uninit(FFPacketSync *fs)
Free all memory currently allocated.
static av_cold int config_enhancement(AVBitStreamFilterLink *inlink)
int(* on_event)(struct FFPacketSync *fs)
Callback called when a packet event is ready.
int ff_packetsync_init_dualinput(FFPacketSync *fs, AVBitStreamFilterContext *parent)
Initialize a packet sync structure for dualinput.
uint8_t * av_packet_new_side_data(AVPacket *pkt, enum AVPacketSideDataType type, size_t size)
Allocate new information of a packet.
const char * name
Pad name.
int ff_packetsync_activate(FFPacketSync *fs)
Examine the packets in the filter's input and try to produce output.
Link properties exposed to filter code, but not external callers.
static av_always_inline unsigned int bytestream2_put_bufferu(PutByteContext *p, const uint8_t *src, unsigned int size)
This structure stores compressed data.
static av_cold int init(AVBitStreamFilterContext *ctx)
static av_always_inline void bytestream2_init(GetByteContext *g, const uint8_t *buf, int buf_size)
static int get_nalsize(int nal_length_size, const uint8_t *buf, int buf_size, int *buf_index, void *logctx)
AVRational time_base
Time base for the output events.
void * priv_data
Format private data.