FFmpeg
Loading...
Searching...
No Matches
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...
 

Functions

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.
 
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.
 
int av_bsf_alloc (const AVBitStreamFilter *filter, AVBSFContext **pctx)
 Allocate a context for a given bitstream filter.
 
int av_bsf_init (AVBSFContext *ctx)
 Prepare the filter for use, after all the parameters and options have been set.
 
void av_bsf_flush (AVBSFContext *ctx)
 Reset the internal bitstream filter state.
 
int av_bsf_send_packet (AVBSFContext *ctx, AVPacket *pkt)
 Submit a packet for filtering.
 
int av_bsf_receive_packet (AVBSFContext *ctx, AVPacket *pkt)
 Retrieve a filtered packet.
 
int ff_bsf_get_packet (AVBSFContext *ctx, AVPacket **pkt)
 Called by the bitstream filters to get the next packet for filtering.
 
int ff_bsf_get_packet_ref (AVBSFContext *ctx, AVPacket *pkt)
 Called by bitstream filters to get packet for filtering.
 
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.
 
void av_bsf_list_free (AVBSFList **lst)
 Free list of bitstream filters.
 
int av_bsf_list_append (AVBSFList *lst, AVBSFContext *bsf)
 Append bitstream filter to the list of bitstream filters.
 
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.
 
int av_bsf_list_finalize (AVBSFList **lst, AVBSFContext **bsf)
 Finalize list of bitstream filters.
 
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.
 
int av_bsf_get_null_filter (AVBSFContext **bsf)
 Get null/pass-through bitstream filter.
 

Variables

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

Function Documentation

◆ ffbsfcontext()

static av_always_inline FFBSFContext * ffbsfcontext ( AVBSFContext * ctx)
static

◆ bsf_child_next()

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

Definition at line 72 of file bsf.c.

◆ bsf_to_name()

static const char * bsf_to_name ( void * bsf)
static

Definition at line 80 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 233 of file bsf.c.

Referenced by dovi_split_filter(), ff_eia608_to_smpte436m_filter(), ff_smpte436m_to_eia608_filter(), filter(), h264_filter(), h264_mp4toannexb_filter(), hevc_filter(), hevc_mp4toannexb_filter(), imx_dump_header(), mjpeg2jpeg_filter(), mjpega_dump_header(), 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)
static

Definition at line 281 of file bsf.c.

◆ bsf_list_filter()

static int bsf_list_filter ( AVBSFContext * bsf,
AVPacket * out )
static

Definition at line 310 of file bsf.c.

◆ bsf_list_flush()

static void bsf_list_flush ( AVBSFContext * bsf)
static

Definition at line 352 of file bsf.c.

◆ bsf_list_close()

static void bsf_list_close ( AVBSFContext * bsf)
static

Definition at line 361 of file bsf.c.

◆ bsf_list_item_name()

static const char * bsf_list_item_name ( void * ctx)
static

Definition at line 372 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 )
static

Definition at line 441 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 )
static

Definition at line 513 of file bsf.c.

Referenced by av_bsf_list_parse_str().

Variable Documentation

◆ bsf_class

const AVClass bsf_class
static
Initial value:
= {
.class_name = "AVBSFContext",
.item_name = bsf_to_name,
.child_next = bsf_child_next,
.child_class_iterate = ff_bsf_child_class_iterate,
}
const AVClass * ff_bsf_child_class_iterate(void **opaque)
static void * bsf_child_next(void *obj, void *prev)
static const char * bsf_to_name(void *bsf)
Definition bsf.c:80
#define LIBAVUTIL_VERSION_INT
Definition version.h:85
@ AV_CLASS_CATEGORY_BITSTREAM_FILTER
Definition log.h:37

Definition at line 85 of file bsf.c.

Referenced by av_bsf_alloc(), and av_bsf_get_class().

◆ bsf_list_class

const AVClass bsf_list_class
static
Initial value:
= {
.class_name = "bsf_list",
.item_name = bsf_list_item_name,
}
static const char * bsf_list_item_name(void *ctx)
Definition bsf.c:372

Definition at line 397 of file bsf.c.

◆ list_bsf

const FFBitStreamFilter list_bsf
static
Initial value:
= {
.p.name = "bsf_list",
.p.priv_class = &bsf_list_class,
.priv_data_size = sizeof(BSFListContext),
}
static av_cold void close(AVCodecParserContext *s)
Definition apv_parser.c:197
static void bsf_list_close(AVBSFContext *bsf)
Definition bsf.c:361
static int bsf_list_init(AVBSFContext *bsf)
Definition bsf.c:281
static const AVClass bsf_list_class
Definition bsf.c:397
static void bsf_list_flush(AVBSFContext *bsf)
Definition bsf.c:352
static int bsf_list_filter(AVBSFContext *bsf, AVPacket *out)
Definition bsf.c:310
void(* flush)(AVBSFContext *ctx)
Definition dts2pts.c:610
int(* init)(AVBSFContext *ctx)
Definition dts2pts.c:608
void(* filter)(uint8_t *src, ptrdiff_t stride, int qscale)
Definition h263dsp.c:29

Definition at line 403 of file bsf.c.

Referenced by av_bsf_get_null_filter(), and av_bsf_list_finalize().