21#include "config_components.h"
60 if (
ctx->filter->priv_class)
75 if (!prev &&
ctx->filter->priv_class)
76 return ctx->priv_data;
86 .class_name =
"AVBSFContext",
118 if (!
ctx->par_in || !
ctx->par_out) {
125 if (!
ctx->priv_data) {
152 if (
ctx->filter->codec_ids) {
154 if (
ctx->par_in->codec_id ==
ctx->filter->codec_ids[
i])
159 "bitstream filter '%s'. Supported codecs are: ",
160 desc ?
desc->name :
"unknown",
ctx->par_in->codec_id,
ctx->filter->name);
177 ctx->time_base_out =
ctx->time_base_in;
374 static const char *null_filter_name =
"null";
379 return null_filter_name;
398 .class_name =
"bsf_list",
404 .p.name =
"bsf_list",
430 for (
i = 0;
i < (*lst)->nb_bsfs; ++
i)
457 const char * shorthand[2] = {
NULL};
460 shorthand[0] = opt->
name;
492 if ((*lst)->nb_bsfs == 1) {
493 *bsf = (*lst)->bsfs[0];
503 ctx = (*bsf)->priv_data;
505 ctx->bsfs = (*lst)->bsfs;
506 ctx->nb_bsfs = (*lst)->nb_bsfs;
515 char *bsf_name, *bsf_options_str;
517 bsf_name =
av_strtok(str,
"=", &bsf_options_str);
542 }
while (*str && *++str);
static av_cold void close(AVCodecParserContext *s)
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.
const AVClass * ff_bsf_child_class_iterate(void **opaque)
const FFBitStreamFilter ff_null_bsf
static void * bsf_child_next(void *obj, void *prev)
void av_bprintf(AVBPrint *buf, const char *fmt,...)
void av_bprint_init(AVBPrint *buf, unsigned size_init, unsigned size_max)
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_list_item_name(void *ctx)
static int bsf_list_append_internal(AVBSFList *lst, const char *bsf_name, const char *options, AVDictionary **options_dict)
static const char * bsf_to_name(void *bsf)
static void * bsf_child_next(void *obj, void *prev)
static const AVClass bsf_list_class
static void bsf_list_flush(AVBSFContext *bsf)
static av_always_inline FFBSFContext * ffbsfcontext(AVBSFContext *ctx)
static const FFBitStreamFilter list_bsf
static int bsf_parse_single(char *str, AVBSFList *bsf_lst)
static int bsf_list_filter(AVBSFContext *bsf, AVPacket *out)
static av_always_inline const FFBitStreamFilter * ff_bsf(const AVBitStreamFilter *bsf)
#define i(width, name, range_min, range_max)
AVCodecParameters * avcodec_parameters_alloc(void)
int avcodec_parameters_copy(AVCodecParameters *dst, const AVCodecParameters *src)
void avcodec_parameters_free(AVCodecParameters **ppar)
void(* flush)(AVBSFContext *ctx)
int(* init)(AVBSFContext *ctx)
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.
const AVClass * av_bsf_get_class(void)
Get the AVClass for AVBSFContext.
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.
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.
AVBSFList * av_bsf_list_alloc(void)
Allocate empty list of bitstream filters.
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...
const AVCodecDescriptor * avcodec_descriptor_get(enum AVCodecID id)
const char * avcodec_get_name(enum AVCodecID id)
Get the name of a codec.
AVCodecID
Identify the syntax and semantics of the bitstream.
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.
int av_bprint_finalize(AVBPrint *buf, char **ret_str)
Finalize a print buffer.
#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.
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().
char * av_get_token(const char **buf, const char *term)
Unescape the given string until a non escaped terminating char, and return the token corresponding to...
#define LIBAVUTIL_VERSION_INT
#define AV_OPT_SEARCH_CHILDREN
Search in possible children of the given object first.
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.
const AVOption * av_opt_next(const void *obj, const AVOption *last)
Iterate over all AVOptions belonging to obj.
int av_opt_set_dict2(void *obj, AVDictionary **options, int search_flags)
Set all the options from a given dictionary on an object.
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.
#define AVPACKET_IS_EMPTY(pkt)
@ 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.
This struct describes the properties of a single codec described by an AVCodecID.
This struct describes the properties of an encoded stream.
This structure stores compressed data.
Rational number (pair of numerator and denominator).
int(* init)(AVBSFContext *ctx)
int(* filter)(AVBSFContext *ctx, AVPacket *pkt)
void(* close)(AVBSFContext *ctx)
void(* flush)(AVBSFContext *ctx)
void(* filter)(uint8_t *src, ptrdiff_t stride, int qscale)
static AVFormatContext * ctx