33 #define IS_EMPTY(pkt) (!(pkt)->data && !(pkt)->side_data_elems) 83 #if FF_API_CHILD_CLASS_NEXT 84 .child_class_next = ff_bsf_child_class_next,
160 "bitstream filter '%s'. Supported codecs are: ",
287 for (i = 0; i < lst->
nb_bsfs; ++
i) {
373 static const char *null_filter_name =
"null";
378 return null_filter_name;
386 for (i = 0; i < lst->
nb_bsfs; i++)
405 .priv_class = &bsf_list_class,
429 for (i = 0; i < (*lst)->nb_bsfs; ++
i)
456 const char * shorthand[2] = {
NULL};
459 shorthand[0] = opt->
name;
491 if ((*lst)->nb_bsfs == 1) {
492 *bsf = (*lst)->bsfs[0];
502 ctx = (*bsf)->priv_data;
504 ctx->
bsfs = (*lst)->bsfs;
505 ctx->
nb_bsfs = (*lst)->nb_bsfs;
514 char *bsf_name, *bsf_options_str;
516 bsf_name =
av_strtok(str,
"=", &bsf_options_str);
526 char *bsf_str, *buf, *dup, *saveptr;
541 while (bsf_str =
av_strtok(buf,
",", &saveptr)) {
int av_bsf_list_append(AVBSFList *lst, AVBSFContext *bsf)
Append bitstream filter to the list of bitstream filters.
const AVBitStreamFilter * av_bsf_get_by_name(const char *name)
static int bsf_parse_single(char *str, AVBSFList *bsf_lst)
const AVClass * priv_class
A class for the private data, used to declare bitstream filter private AVOptions. ...
AVCodecParameters * par_out
Parameters of the output stream.
void av_bprintf(AVBPrint *buf, const char *fmt,...)
static void * bsf_child_next(void *obj, void *prev)
int av_bsf_get_null_filter(AVBSFContext **bsf)
Get null/pass-through bitstream filter.
static void flush(AVCodecContext *avctx)
#define LIBAVUTIL_VERSION_INT
Memory handling functions.
static av_cold int init(AVCodecContext *avctx)
void av_opt_set_defaults(void *s)
Set the values of all AVOption fields to their default values.
enum AVCodecID codec_id
Specific type of the encoded data (the codec used).
const struct AVBitStreamFilter * filter
The bitstream filter this context is an instance of.
The bitstream filter state.
int(* init)(AVBSFContext *ctx)
Structure for chain/list of bitstream filters.
void avcodec_parameters_free(AVCodecParameters **ppar)
Free an AVCodecParameters instance and everything associated with it and write NULL to the supplied p...
void * av_mallocz(size_t size)
Allocate a memory block with alignment suitable for all memory accesses (including vectors if availab...
static const char * bsf_to_name(void *bsf)
static const AVClass bsf_class
void av_bsf_flush(AVBSFContext *ctx)
Reset the internal bitstream filter state.
void * priv_data
Opaque filter-specific private data.
This struct describes the properties of an encoded stream.
int av_bprint_finalize(AVBPrint *buf, char **ret_str)
Finalize a print buffer.
int av_opt_set_from_string(void *ctx, const char *opts, const char *const *shorthand, const char *key_val_sep, const char *pairs_sep)
Parse the key-value pairs list in opts.
const char * class_name
The name of the class; usually it is the same name as the context structure type to which the AVClass...
static const AVClass bsf_list_class
void av_packet_free(AVPacket **pkt)
Free the packet, if the packet is reference counted, it will be unreferenced first.
void av_packet_move_ref(AVPacket *dst, AVPacket *src)
Move every field in src to dst and reset src.
#define AVERROR_EOF
End of file.
int av_dynarray_add_nofree(void *tab_ptr, int *nb_ptr, void *elem)
Add an element to a dynamic array.
static void bsf_list_flush(AVBSFContext *bsf)
int av_bsf_alloc(const AVBitStreamFilter *filter, AVBSFContext **pctx)
Allocate a context for a given bitstream filter.
AVCodecID
Identify the syntax and semantics of the bitstream.
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
static int bsf_list_filter(AVBSFContext *bsf, AVPacket *out)
filter_frame For filters that do not use the this method is called when a frame is pushed to the filter s input It can be called at any time except in a reentrant way If the input frame is enough to produce then the filter should push the output frames on the output link immediately As an exception to the previous rule if the input frame is enough to produce several output frames then the filter needs output only at least one per link The additional frames can be left buffered in the filter
enum AVCodecID * codec_ids
A list of codec ids supported by the filter, terminated by AV_CODEC_ID_NONE.
void av_bprint_init(AVBPrint *buf, unsigned size_init, unsigned size_max)
AVRational time_base_in
The timebase used for the timestamps of the input packets.
simple assert() macros that are a bit more flexible than ISO C assert().
const AVOption * av_opt_next(const void *obj, const AVOption *last)
Iterate over all AVOptions belonging to obj.
void(* close)(AVBSFContext *ctx)
AVClassCategory category
Category used for visualization (like color) This is only set if the category is equal for all object...
static void bsf_list_close(AVBSFContext *bsf)
int av_bsf_list_append2(AVBSFList *lst, const char *bsf_name, AVDictionary **options)
Construct new bitstream filter context given it's name and options and append it to the list of bitst...
int av_bsf_init(AVBSFContext *ctx)
Prepare the filter for use, after all the parameters and options have been set.
int av_bsf_list_parse_str(const char *str, AVBSFContext **bsf_lst)
Parse string describing list of bitstream filters and create single AVBSFContext describing the whole...
#define av_assert1(cond)
assert() equivalent, that does not lie in speed critical code.
const AVClass * ff_bsf_child_class_iterate(void **opaque)
#define AV_OPT_SEARCH_CHILDREN
Search in possible children of the given object first.
AVRational time_base_out
The timebase used for the timestamps of the output packets.
int av_packet_make_refcounted(AVPacket *pkt)
Ensure the data described by a given packet is reference counted.
const AVClass * av_class
A class for logging and AVOptions.
#define AVERROR_BSF_NOT_FOUND
Bitstream filter not found.
const AVClass * av_bsf_get_class(void)
Get the AVClass for AVBSFContext.
int av_opt_set_dict2(void *obj, AVDictionary **options, int search_flags)
Set all the options from a given dictionary on an object.
int(* filter)(AVBSFContext *ctx, AVPacket *pkt)
int av_bsf_send_packet(AVBSFContext *ctx, AVPacket *pkt)
Submit a packet for filtering.
char * av_strdup(const char *s)
Duplicate a string.
void av_packet_unref(AVPacket *pkt)
Wipe the packet.
int av_bsf_receive_packet(AVBSFContext *ctx, AVPacket *pkt)
Retrieve a filtered packet.
Describe the class of an AVClass context structure.
AVBSFList * av_bsf_list_alloc(void)
Allocate empty list of bitstream filters.
Rational number (pair of numerator and denominator).
const char * name
Name of the codec described by this descriptor.
AVCodecParameters * avcodec_parameters_alloc(void)
Allocate a new AVCodecParameters and set its fields to default values (unknown/invalid/0).
This struct describes the properties of a single codec described by an AVCodecID. ...
char * av_strtok(char *s, const char *delim, char **saveptr)
Split the string into several tokens which can be accessed by successive calls to av_strtok()...
void(* flush)(AVBSFContext *ctx)
const AVBitStreamFilter ff_list_bsf
int av_bsf_list_finalize(AVBSFList **lst, AVBSFContext **bsf)
Finalize list of bitstream filters.
void av_opt_free(void *obj)
Free all allocated objects in obj.
const OptionDef options[]
int avcodec_parameters_copy(AVCodecParameters *dst, const AVCodecParameters *src)
Copy the contents of src to dst.
int ff_bsf_get_packet(AVBSFContext *ctx, AVPacket **pkt)
Called by the bitstream filters to get the next packet for filtering.
const char * avcodec_get_name(enum AVCodecID id)
Get the name of a codec.
static const char * bsf_list_item_name(void *ctx)
static int bsf_list_append_internal(AVBSFList *lst, const char *bsf_name, const char *options, AVDictionary **options_dict)
AVPacket * av_packet_alloc(void)
Allocate an AVPacket and set its fields to default values.
const AVCodecDescriptor * avcodec_descriptor_get(enum AVCodecID id)
static int bsf_list_init(AVBSFContext *bsf)
void av_bsf_free(AVBSFContext **pctx)
Free a bitstream filter context and everything associated with it; write NULL into the supplied point...
AVBSFInternal * internal
Opaque libavcodec internal data.
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
This structure stores compressed data.
AVCodecParameters * par_in
Parameters of the input stream.
int ff_bsf_get_packet_ref(AVBSFContext *ctx, AVPacket *pkt)
Called by bitstream filters to get packet for filtering.
void av_bsf_list_free(AVBSFList **lst)
Free list of bitstream filters.