33 #define IS_EMPTY(pkt) (!(pkt)->data && !(pkt)->side_data_elems)
49 if (
ctx->filter->close)
68 if (!prev &&
ctx->filter->priv_class)
83 #if FF_API_CHILD_CLASS_NEXT
110 if (!
ctx->par_in || !
ctx->par_out) {
115 if (
filter->priv_data_size) {
153 if (
ctx->filter->codec_ids) {
155 if (
ctx->par_in->codec_id ==
ctx->filter->codec_ids[
i])
160 "bitstream filter '%s'. Supported codecs are: ",
161 desc ?
desc->name :
"unknown",
ctx->par_in->codec_id,
ctx->filter->name);
165 desc ?
desc->name :
"unknown",
ctx->filter->codec_ids[
i]);
178 ctx->time_base_out =
ctx->time_base_in;
180 if (
ctx->filter->init) {
181 ret =
ctx->filter->init(
ctx);
197 if (
ctx->filter->flush)
373 static const char *null_filter_name =
"null";
378 return null_filter_name;
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];
504 ctx->bsfs = (*lst)->bsfs;
505 ctx->nb_bsfs = (*lst)->nb_bsfs;
514 char *bsf_name, *bsf_options_str;
526 char *bsf_str, *buf, *dup, *saveptr;
541 while (bsf_str =
av_strtok(buf,
",", &saveptr)) {
static void flush(AVCodecContext *avctx)
simple assert() macros that are a bit more flexible than ISO C assert().
#define av_assert1(cond)
assert() equivalent, that does not lie in speed critical code.
static av_cold int init(AVCodecContext *avctx)
const AVClass * ff_bsf_child_class_iterate(void **opaque)
const AVClass * ff_bsf_child_class_next(const AVClass *prev)
void av_bprintf(AVBPrint *buf, const char *fmt,...)
void av_bprint_init(AVBPrint *buf, unsigned size_init, unsigned size_max)
int av_bprint_finalize(AVBPrint *buf, char **ret_str)
Finalize a print buffer.
static const AVClass bsf_class
static void bsf_list_close(AVBSFContext *bsf)
int ff_bsf_get_packet(AVBSFContext *ctx, AVPacket **pkt)
Called by the bitstream filters to get the next packet for filtering.
static int bsf_list_init(AVBSFContext *bsf)
int ff_bsf_get_packet_ref(AVBSFContext *ctx, AVPacket *pkt)
Called by bitstream filters to get packet for filtering.
static const char * bsf_to_name(void *bsf)
static int bsf_list_append_internal(AVBSFList *lst, const char *bsf_name, const char *options, AVDictionary **options_dict)
const AVBitStreamFilter ff_list_bsf
static void * bsf_child_next(void *obj, void *prev)
static const AVClass bsf_list_class
static void bsf_list_flush(AVBSFContext *bsf)
static int bsf_parse_single(char *str, AVBSFList *bsf_lst)
static int bsf_list_filter(AVBSFContext *bsf, AVPacket *out)
static const char * bsf_list_item_name(void *ctx)
static av_always_inline void filter(int16_t *output, ptrdiff_t out_stride, const int16_t *low, ptrdiff_t low_stride, const int16_t *high, ptrdiff_t high_stride, int len, int clip)
AVCodecParameters * avcodec_parameters_alloc(void)
Allocate a new AVCodecParameters and set its fields to default values (unknown/invalid/0).
int avcodec_parameters_copy(AVCodecParameters *dst, const AVCodecParameters *src)
Copy the contents of src to dst.
void avcodec_parameters_free(AVCodecParameters **ppar)
Free an AVCodecParameters instance and everything associated with it and write NULL to the supplied p...
const OptionDef options[]
int av_opt_set_dict2(void *obj, AVDictionary **options, int search_flags)
Set all the options from a given dictionary on an object.
#define AV_OPT_SEARCH_CHILDREN
Search in possible children of the given object first.
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 AVOption * av_opt_next(const void *obj, const AVOption *last)
Iterate over all AVOptions belonging to obj.
void av_opt_free(void *obj)
Free all allocated objects in obj.
void av_opt_set_defaults(void *s)
Set the values of all AVOption fields to their default values.
AVBSFList * av_bsf_list_alloc(void)
Allocate empty list of bitstream filters.
void av_bsf_free(AVBSFContext **pctx)
Free a bitstream filter context and everything associated with it; write NULL into the supplied point...
void av_bsf_list_free(AVBSFList **lst)
Free list of bitstream filters.
int av_bsf_init(AVBSFContext *ctx)
Prepare the filter for use, after all the parameters and options have been set.
int av_bsf_list_append(AVBSFList *lst, AVBSFContext *bsf)
Append bitstream filter to the list of bitstream filters.
void av_bsf_flush(AVBSFContext *ctx)
Reset the internal bitstream filter state.
int av_bsf_alloc(const AVBitStreamFilter *filter, AVBSFContext **pctx)
Allocate a context for a given bitstream filter.
int av_bsf_receive_packet(AVBSFContext *ctx, AVPacket *pkt)
Retrieve a filtered packet.
const AVClass * av_bsf_get_class(void)
Get the AVClass for AVBSFContext.
int av_bsf_list_finalize(AVBSFList **lst, AVBSFContext **bsf)
Finalize list of bitstream filters.
int av_bsf_send_packet(AVBSFContext *ctx, AVPacket *pkt)
Submit a packet for filtering.
const AVCodecDescriptor * avcodec_descriptor_get(enum AVCodecID id)
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...
int av_bsf_get_null_filter(AVBSFContext **bsf)
Get null/pass-through bitstream filter.
const AVBitStreamFilter * av_bsf_get_by_name(const char *name)
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...
void av_packet_free(AVPacket **pkt)
Free the packet, if the packet is reference counted, it will be unreferenced first.
void av_packet_unref(AVPacket *pkt)
Wipe the packet.
int av_packet_make_refcounted(AVPacket *pkt)
Ensure the data described by a given packet is reference counted.
void av_packet_move_ref(AVPacket *dst, AVPacket *src)
Move every field in src to dst and reset src.
AVPacket * av_packet_alloc(void)
Allocate an AVPacket and set its fields to default values.
#define AVERROR_BSF_NOT_FOUND
Bitstream filter not found.
#define AVERROR_EOF
End of file.
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
int av_dynarray_add_nofree(void *tab_ptr, int *nb_ptr, void *elem)
Add an element to a dynamic array.
void * av_mallocz(size_t size)
Allocate a memory block with alignment suitable for all memory accesses (including vectors if availab...
char * av_strdup(const char *s)
Duplicate a string.
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().
#define LIBAVUTIL_VERSION_INT
@ AV_CLASS_CATEGORY_BITSTREAM_FILTER
Memory handling functions.
The bitstream filter state.
AVRational time_base_out
The timebase used for the timestamps of the output packets.
void * priv_data
Opaque filter-specific private data.
AVCodecParameters * par_in
Parameters of the input stream.
AVCodecParameters * par_out
Parameters of the output stream.
AVRational time_base_in
The timebase used for the timestamps of the input packets.
const struct AVBitStreamFilter * filter
The bitstream filter this context is an instance of.
Structure for chain/list of bitstream filters.
Describe the class of an AVClass context structure.
AVClassCategory category
Category used for visualization (like color) This is only set if the category is equal for all object...
const struct AVClass *(* child_class_iterate)(void **iter)
Iterate over the AVClasses corresponding to potential AVOptions-enabled children.
const char * class_name
The name of the class; usually it is the same name as the context structure type to which the AVClass...
This struct describes the properties of a single codec described by an AVCodecID.
This struct describes the properties of an encoded stream.
const AVClass * av_class
A class for logging and AVOptions.
AVFormatInternal * internal
An opaque field for libavformat internal usage.
void * priv_data
Format private data.
This structure stores compressed data.
Rational number (pair of numerator and denominator).