Go to the documentation of this file.
31 static void error(
const char *err)
33 fprintf(stderr,
"%s", err);
39 static const uint64_t
FUZZ_TAG = 0x4741542D5A5A5546ULL;
43 const uint8_t *last =
data;
47 uint64_t keyframes = 0;
48 uint64_t flushpattern = -1;
53 #define BSF_SYMBOL0(BSF) ff_##BSF##_bsf
54 #define BSF_SYMBOL(BSF) BSF_SYMBOL0(BSF)
56 f = &BSF_SYMBOL(FFMPEG_BSF);
63 error(
"Failed memory allocation");
85 extradata_size = bytestream2_get_le32(&gbc);
90 keyframes = bytestream2_get_le64(&gbc);
91 flushpattern = bytestream2_get_le64(&gbc);
92 flags = bytestream2_get_byte(&gbc);
95 if (!strcmp(
f->
name,
"av1_metadata"))
97 else if (!strcmp(
f->
name,
"h264_metadata") || !strcmp(
f->
name,
"h265_metadata"))
99 else if (!strcmp(
f->
name,
"extract_extradata"))
103 if (extradata_size <
size) {
124 error(
"Failed memory allocation");
128 while (
data +
sizeof(fuzz_tag) < end) {
133 if (
data +
sizeof(fuzz_tag) > end)
138 error(
"Failed memory allocation");
139 memcpy(in->
data, last,
data - last);
141 keyframes = (keyframes >> 2) + (keyframes<<62);
142 data +=
sizeof(fuzz_tag);
145 if (!(flushpattern & 7))
147 flushpattern = (flushpattern >> 3) + (flushpattern << 61);
151 if (res < 0 && res !=
AVERROR(EAGAIN))
static void error(const char *err)
void av_packet_unref(AVPacket *pkt)
Wipe the packet.
AVCodecParameters * par_in
Parameters of the input stream.
uint8_t * extradata
Extra binary data needed for initializing the decoder, codec-dependent.
Filter the word “frame” indicates either a video frame or a group of audio as stored in an AVFrame structure Format for each input and each output the list of supported formats For video that means pixel format For audio that means channel sample they are references to shared objects When the negotiation mechanism computes the intersection of the formats supported at each end of a all references to both lists are replaced with a reference to the intersection And when a single format is eventually chosen for a link amongst the remaining all references to the list are updated That means that if a filter requires that its input and output have the same format amongst a supported all it has to do is use a reference to the same list of formats query_formats can leave some formats unset and return AVERROR(EAGAIN) to cause the negotiation mechanism toagain later. That can be used by filters with complex requirements to use the format negotiated on one link to set the formats supported on another. Frame references ownership and permissions
#define AV_LOG_PANIC
Something went really wrong and we will crash now.
#define AV_PKT_FLAG_DISCARD
Flag is used to discard packets which are required to maintain valid decoder state but are not requir...
int av_bsf_init(AVBSFContext *ctx)
Prepare the filter for use, after all the parameters and options have been set.
uint32_t codec_tag
Additional information about the codec (corresponds to the AVI FOURCC).
#define AV_PKT_FLAG_KEY
The packet contains a keyframe.
void av_packet_free(AVPacket **pkt)
Free the packet, if the packet is reference counted, it will be unreferenced first.
The bitstream filter state.
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
int av_bsf_get_null_filter(AVBSFContext **bsf)
Get null/pass-through bitstream filter.
int av_new_packet(AVPacket *pkt, int size)
Allocate the payload of a packet and initialize its fields with default values.
static const uint64_t FUZZ_TAG
static const AVBitStreamFilter * f
enum AVCodecID * codec_ids
A list of codec ids supported by the filter, terminated by AV_CODEC_ID_NONE.
int sample_rate
Audio only.
int av_opt_set_int(void *obj, const char *name, int64_t val, int search_flags)
int extradata_size
Size of the extradata content in bytes.
int flags
A combination of AV_PKT_FLAG values.
AVPacket * av_packet_alloc(void)
Allocate an AVPacket and set its fields to default values.
void av_log_set_level(int level)
Set the log level.
int av_bsf_receive_packet(AVBSFContext *ctx, AVPacket *pkt)
Retrieve a filtered packet.
#define i(width, name, range_min, range_max)
int block_align
Audio only.
void * av_mallocz(size_t size)
Allocate a memory block with alignment suitable for all memory accesses (including vectors if availab...
void * priv_data
Opaque filter-specific private data.
#define AV_INPUT_BUFFER_PADDING_SIZE
int av_bsf_send_packet(AVBSFContext *ctx, AVPacket *pkt)
Submit a packet for filtering.
void av_bsf_flush(AVBSFContext *ctx)
Reset the internal bitstream filter state.
const struct AVBitStreamFilter * filter
The bitstream filter this context is an instance of.
int bits_per_coded_sample
The number of bits per sample in the codedwords.
enum AVCodecID codec_id
Specific type of the encoded data (the codec used).
This structure stores compressed data.
void av_bsf_free(AVBSFContext **pctx)
Free a bitstream filter context and everything associated with it; write NULL into the supplied point...
static av_always_inline void bytestream2_init(GetByteContext *g, const uint8_t *buf, int buf_size)
#define flags(name, subs,...)
int64_t bit_rate
The average bitrate of the encoded data (in bits per second).
int av_image_check_size(unsigned int w, unsigned int h, int log_offset, void *log_ctx)
Check if the given dimension of an image is valid, meaning that all bytes of the image can be address...
#define FF_SANE_NB_CHANNELS
int av_bsf_alloc(const AVBitStreamFilter *filter, AVBSFContext **pctx)
Allocate a context for a given bitstream filter.