Data Structures | Functions | Variables
bsf.c File Reference
#include <string.h>
#include "config_components.h"
#include "libavutil/avassert.h"
#include "libavutil/log.h"
#include "libavutil/mem.h"
#include "libavutil/opt.h"
#include "libavutil/avstring.h"
#include "libavutil/bprint.h"
#include "bsf.h"
#include "bsf_internal.h"
#include "codec_desc.h"
#include "codec_par.h"
#include "packet_internal.h"

Go to the source code of this file.

Data Structures

struct  FFBSFContext
struct  BSFListContext
struct  AVBSFList
 Structure for chain/list of bitstream filters. More...


static const av_always_inline FFBitStreamFilterff_bsf (const AVBitStreamFilter *bsf)
static av_always_inline FFBSFContextffbsfcontext (AVBSFContext *ctx)
void av_bsf_free (AVBSFContext **pctx)
 Free a bitstream filter context and everything associated with it; write NULL into the supplied pointer. More...
static void * bsf_child_next (void *obj, void *prev)
static const char * bsf_to_name (void *bsf)
const AVClassav_bsf_get_class (void)
 Get the AVClass for AVBSFContext. More...
int av_bsf_alloc (const AVBitStreamFilter *filter, AVBSFContext **pctx)
 Allocate a context for a given bitstream filter. More...
int av_bsf_init (AVBSFContext *ctx)
 Prepare the filter for use, after all the parameters and options have been set. More...
void av_bsf_flush (AVBSFContext *ctx)
 Reset the internal bitstream filter state. More...
int av_bsf_send_packet (AVBSFContext *ctx, AVPacket *pkt)
 Submit a packet for filtering. More...
int av_bsf_receive_packet (AVBSFContext *ctx, AVPacket *pkt)
 Retrieve a filtered packet. More...
int ff_bsf_get_packet (AVBSFContext *ctx, AVPacket **pkt)
 Called by the bitstream filters to get the next packet for filtering. More...
int ff_bsf_get_packet_ref (AVBSFContext *ctx, AVPacket *pkt)
 Called by bitstream filters to get packet for filtering. More...
static int bsf_list_init (AVBSFContext *bsf)
static int bsf_list_filter (AVBSFContext *bsf, AVPacket *out)
static void bsf_list_flush (AVBSFContext *bsf)
static void bsf_list_close (AVBSFContext *bsf)
static const char * bsf_list_item_name (void *ctx)
AVBSFListav_bsf_list_alloc (void)
 Allocate empty list of bitstream filters. More...
void av_bsf_list_free (AVBSFList **lst)
 Free list of bitstream filters. More...
int av_bsf_list_append (AVBSFList *lst, AVBSFContext *bsf)
 Append bitstream filter to the list of bitstream filters. More...
static int bsf_list_append_internal (AVBSFList *lst, const char *bsf_name, const char *options, AVDictionary **options_dict)
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 bitstream filters. More...
int av_bsf_list_finalize (AVBSFList **lst, AVBSFContext **bsf)
 Finalize list of bitstream filters. More...
static int bsf_parse_single (char *str, AVBSFList *bsf_lst)
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 chain of bitstream filters. More...
int av_bsf_get_null_filter (AVBSFContext **bsf)
 Get null/pass-through bitstream filter. More...


static const AVClass bsf_class
static const AVClass bsf_list_class
static const FFBitStreamFilter list_bsf

Function Documentation

◆ ff_bsf()

static const av_always_inline FFBitStreamFilter* ff_bsf ( const AVBitStreamFilter bsf)

Definition at line 36 of file bsf.c.

Referenced by av_bsf_alloc(), av_bsf_flush(), av_bsf_free(), av_bsf_init(), and av_bsf_receive_packet().

◆ ffbsfcontext()

static av_always_inline FFBSFContext* ffbsfcontext ( AVBSFContext ctx)

◆ bsf_child_next()

static void* bsf_child_next ( void *  obj,
void *  prev 

Definition at line 77 of file bsf.c.

◆ bsf_to_name()

static const char* bsf_to_name ( void *  bsf)

Definition at line 85 of file bsf.c.

◆ ff_bsf_get_packet()

int ff_bsf_get_packet ( AVBSFContext ctx,
AVPacket **  pkt 

Called by the bitstream filters to get the next packet for filtering.

The filter is responsible for either freeing the packet or passing it to the caller.

Definition at line 235 of file bsf.c.

Referenced by filter(), h264_filter(), h264_mp4toannexb_filter(), hevc_mp4toannexb_filter(), imx_dump_header(), mjpeg2jpeg_filter(), mjpega_dump_header(), mp3_header_decompress(), text2movsub(), vp9_raw_reorder_filter(), and vvc_mp4toannexb_filter().

◆ ff_bsf_get_packet_ref()

int ff_bsf_get_packet_ref ( AVBSFContext ctx,
AVPacket pkt 

◆ bsf_list_init()

static int bsf_list_init ( AVBSFContext bsf)

Definition at line 283 of file bsf.c.

◆ bsf_list_filter()

static int bsf_list_filter ( AVBSFContext bsf,
AVPacket out 

Definition at line 312 of file bsf.c.

◆ bsf_list_flush()

static void bsf_list_flush ( AVBSFContext bsf)

Definition at line 354 of file bsf.c.

◆ bsf_list_close()

static void bsf_list_close ( AVBSFContext bsf)

Definition at line 363 of file bsf.c.

◆ bsf_list_item_name()

static const char* bsf_list_item_name ( void *  ctx)

Definition at line 374 of file bsf.c.

◆ bsf_list_append_internal()

static int bsf_list_append_internal ( AVBSFList lst,
const char *  bsf_name,
const char *  options,
AVDictionary **  options_dict 

Definition at line 443 of file bsf.c.

Referenced by av_bsf_list_append2(), and bsf_parse_single().

◆ bsf_parse_single()

static int bsf_parse_single ( char *  str,
AVBSFList bsf_lst 

Definition at line 515 of file bsf.c.

Referenced by av_bsf_list_parse_str().

Variable Documentation

◆ bsf_class

const AVClass bsf_class
Initial value:
= {
.class_name = "AVBSFContext",
.item_name = bsf_to_name,
.child_next = bsf_child_next,
.child_class_iterate = ff_bsf_child_class_iterate,

Definition at line 90 of file bsf.c.

Referenced by av_bsf_alloc(), and av_bsf_get_class().

◆ bsf_list_class

const AVClass bsf_list_class
Initial value:
= {
.class_name = "bsf_list",
.item_name = bsf_list_item_name,

Definition at line 399 of file bsf.c.

◆ list_bsf

const FFBitStreamFilter list_bsf
Initial value:
= {
.p.name = "bsf_list",
.p.priv_class = &bsf_list_class,
.priv_data_size = sizeof(BSFListContext),
.close = bsf_list_close,

Definition at line 405 of file bsf.c.

Referenced by av_bsf_get_null_filter(), and av_bsf_list_finalize().

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
Definition: filter_design.txt:228
Definition: bsf.c:271
static void * bsf_child_next(void *obj, void *prev)
Definition: bsf.c:77
static int bsf_list_filter(AVBSFContext *bsf, AVPacket *out)
Definition: bsf.c:312
static void bsf_list_flush(AVBSFContext *bsf)
Definition: bsf.c:354
Definition: version.h:85
void(* flush)(AVBSFContext *ctx)
Definition: dts2pts.c:367
const AVClass * ff_bsf_child_class_iterate(void **opaque)
Definition: bitstream_filters.c:103
int(* init)(AVBSFContext *ctx)
Definition: dts2pts.c:365
AVClassCategory category
Category used for visualization (like color) This is only set if the category is equal for all object...
Definition: log.h:114
static const char * bsf_list_item_name(void *ctx)
Definition: bsf.c:374
static const AVClass bsf_list_class
Definition: bsf.c:399
static int bsf_list_init(AVBSFContext *bsf)
Definition: bsf.c:283
static void bsf_list_close(AVBSFContext *bsf)
Definition: bsf.c:363
Definition: log.h:37
static const char * bsf_to_name(void *bsf)
Definition: bsf.c:85