FFmpeg
Functions | Variables
bitstreamfilter.c File Reference
#include "config.h"
#include <string.h>
#include "libavutil/avassert.h"
#include "libavutil/mem.h"
#include "libavutil/opt.h"
#include "bsf.h"
#include "bsf_internal.h"

Go to the source code of this file.

Functions

static const char * default_bsf_name (void *filter_ctx)
 
static void * bsf_child_next (void *obj, void *prev)
 
int ff_bsf_alloc (const AVBitStreamFilter *filter, const char *inst_name, AVBitStreamFilterContext **pctx)
 Allocate a new filter context and return it. More...
 
int av_bsf_link (AVBitStreamFilterContext *src, unsigned srcpad, AVBitStreamFilterContext *dst, unsigned dstpad)
 Link two filters together. More...
 
static void link_free (AVBitStreamFilterLink **plink)
 
static void free_link (AVBitStreamFilterLink *link)
 
void ff_bsf_free (AVBitStreamFilterContext *ctx)
 Free a filter context. More...
 
static int bsf_opt_parse (void *logctx, const AVClass *priv_class, AVDictionary **options, const char *args)
 Parse filter options into a dictionary. More...
 
int av_bsf_init_dict (AVBitStreamFilterContext *ctx, AVDictionary **options)
 Initialize a filter with the supplied dictionary of options. More...
 
int av_bsf_init_str (AVBitStreamFilterContext *ctx, const char *args)
 Initialize a filter with the supplied parameters. More...
 
const char * av_bsf_pad_get_name (const AVBitStreamFilterPad *pads, int pad_idx)
 Get the name of an AVBitStreamFilterPad. More...
 
enum AVCodecIDav_bsf_pad_get_codec_ids (const AVBitStreamFilterPad *pads, int pad_idx)
 Get the codec ids supported by an AVBitStreamFilterPad. More...
 
static void update_link_current_pts (BitStreamFilterLinkInternal *li, int64_t pts)
 
void ff_bsf_set_ready (AVBitStreamFilterContext *filter, unsigned priority)
 Mark a filter ready and schedule it for activation. More...
 
static void filter_unblock (AVBitStreamFilterContext *filter)
 Clear packet_blocked_in on all outputs. More...
 
void ff_bsf_link_set_in_status (AVBitStreamFilterLink *link, int status, int64_t pts)
 
static void link_set_out_status (AVBitStreamFilterLink *link, int status, int64_t pts)
 Set the status field of a link from the destination filter. More...
 
int ff_bsf_config_links (AVBitStreamFilterContext *filter)
 
int ff_bsf_request_packet (AVBitStreamFilterLink *link)
 
static int64_t guess_status_pts (AVBitStreamFilterContext *ctx, int status, AVRational link_time_base)
 
static int request_packet_to_filter (AVBitStreamFilterLink *link)
 
static int default_filter_packet (AVBitStreamFilterLink *link, AVPacket *pkt)
 
static int filter_packet_framed (AVBitStreamFilterLink *link, AVPacket *pkt)
 
int ff_bsf_filter_packet (AVBitStreamFilterLink *link, AVPacket *pkt)
 Send a packet of data to the next filter. More...
 
static int filter_packet_to_filter (AVBitStreamFilterLink *link)
 
static int forward_status_change (AVBitStreamFilterContext *filter, BitStreamFilterLinkInternal *li_in)
 
static int filter_activate_default (AVBitStreamFilterContext *ctx)
 
int ff_bsf_activate (AVBitStreamFilterContext *ctx)
 
int ff_bsf_inlink_acknowledge_status (AVBitStreamFilterLink *link, int *rstatus, int64_t *rpts)
 
size_t ff_bsf_inlink_queued_packets (AVBitStreamFilterLink *link)
 
int ff_bsf_inlink_check_available_packet (AVBitStreamFilterLink *link)
 
static void consume_update (BitStreamFilterLinkInternal *li, const AVPacket *pkt)
 
int ff_bsf_inlink_consume_packet (AVBitStreamFilterLink *link, AVPacket **rpkt)
 
void ff_bsf_inlink_request_packet (AVBitStreamFilterLink *link)
 
void ff_bsf_inlink_set_status (AVBitStreamFilterLink *link, int status)
 
int ff_bsf_outlink_get_status (AVBitStreamFilterLink *link)
 
int ff_bsf_outlink_packet_wanted (AVBitStreamFilterLink *link)
 

Variables

static const AVClass bitstreamfilter_class
 
const AVBitStreamFilterPad ff_default_bsf_pad [1]
 

Function Documentation

◆ default_bsf_name()

static const char* default_bsf_name ( void *  filter_ctx)
static

Definition at line 30 of file bitstreamfilter.c.

◆ bsf_child_next()

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

Definition at line 36 of file bitstreamfilter.c.

◆ ff_bsf_alloc()

int ff_bsf_alloc ( const AVBitStreamFilter filter,
const char *  inst_name,
AVBitStreamFilterContext **  ctx 
)

Allocate a new filter context and return it.

Parameters
[in]filterwhat filter to create an instance of
[in]inst_namename to give to the new filter context
[out]ctxa pointer into which the pointer to the newly-allocated context will be written
Returns
0 on success, an AVERROR code on failure

Definition at line 54 of file bitstreamfilter.c.

Referenced by av_bsf_graph_alloc_filter().

◆ link_free()

static void link_free ( AVBitStreamFilterLink **  plink)
static

Definition at line 198 of file bitstreamfilter.c.

Referenced by free_link().

◆ free_link()

static void free_link ( AVBitStreamFilterLink link)
static

Definition at line 213 of file bitstreamfilter.c.

Referenced by ff_bsf_free().

◆ ff_bsf_free()

void ff_bsf_free ( AVBitStreamFilterContext filter)

Free a filter context.

This will also remove the filter from its filtergraph's list of filters.

Parameters
filterthe filter to free

Definition at line 226 of file bitstreamfilter.c.

Referenced by av_bsf_graph_create_filter(), and av_bsf_graph_free().

◆ bsf_opt_parse()

static int bsf_opt_parse ( void *  logctx,
const AVClass priv_class,
AVDictionary **  options,
const char *  args 
)
static

Parse filter options into a dictionary.

Parameters
logctxcontext for logging
priv_classa filter's private class for shorthand options or NULL
optionsdictionary to store parsed options in
argsoptions string to parse
Returns
a non-negative number on success, a negative error code on failure

Definition at line 273 of file bitstreamfilter.c.

Referenced by av_bsf_init_str().

◆ update_link_current_pts()

static void update_link_current_pts ( BitStreamFilterLinkInternal li,
int64_t  pts 
)
static

◆ ff_bsf_set_ready()

void ff_bsf_set_ready ( AVBitStreamFilterContext filter,
unsigned  priority 
)

Mark a filter ready and schedule it for activation.

This is automatically done when something happens to the filter (queued packet, status change, request on output). Filters implementing the activate callback can call it directly to perform one more round of processing later. It is also useful for filters reacting to external or asynchronous events.

Definition at line 400 of file bitstreamfilter.c.

Referenced by ff_bsf_filter_packet(), ff_bsf_inlink_request_packet(), ff_bsf_link_set_in_status(), ff_bsf_request_packet(), filter_packet_to_filter(), forward_status_change(), and link_set_out_status().

◆ filter_unblock()

static void filter_unblock ( AVBitStreamFilterContext filter)
static

Clear packet_blocked_in on all outputs.

This is necessary whenever something changes on input.

Definition at line 410 of file bitstreamfilter.c.

Referenced by ff_bsf_filter_packet(), ff_bsf_link_set_in_status(), filter_packet_to_filter(), and link_set_out_status().

◆ ff_bsf_link_set_in_status()

void ff_bsf_link_set_in_status ( AVBitStreamFilterLink link,
int  status,
int64_t  pts 
)

◆ link_set_out_status()

static void link_set_out_status ( AVBitStreamFilterLink link,
int  status,
int64_t  pts 
)
static

Set the status field of a link from the destination filter.

The pts should probably be left unset (AV_NOPTS_VALUE).

Definition at line 439 of file bitstreamfilter.c.

Referenced by ff_bsf_inlink_set_status(), ff_bsf_request_packet(), filter_packet_to_filter(), and forward_status_change().

◆ ff_bsf_config_links()

int ff_bsf_config_links ( AVBitStreamFilterContext filter)

Definition at line 452 of file bitstreamfilter.c.

Referenced by ff_bsf_config_links(), and graph_config_links().

◆ ff_bsf_request_packet()

int ff_bsf_request_packet ( AVBitStreamFilterLink link)

Definition at line 568 of file bitstreamfilter.c.

Referenced by request_packet_to_filter().

◆ guess_status_pts()

static int64_t guess_status_pts ( AVBitStreamFilterContext ctx,
int  status,
AVRational  link_time_base 
)
static

Definition at line 593 of file bitstreamfilter.c.

Referenced by request_packet_to_filter().

◆ request_packet_to_filter()

static int request_packet_to_filter ( AVBitStreamFilterLink link)
static

Definition at line 617 of file bitstreamfilter.c.

Referenced by filter_activate_default(), and forward_status_change().

◆ default_filter_packet()

static int default_filter_packet ( AVBitStreamFilterLink link,
AVPacket pkt 
)
static

Definition at line 637 of file bitstreamfilter.c.

Referenced by filter_packet_framed().

◆ filter_packet_framed()

static int filter_packet_framed ( AVBitStreamFilterLink link,
AVPacket pkt 
)
static

Definition at line 642 of file bitstreamfilter.c.

Referenced by filter_packet_to_filter().

◆ ff_bsf_filter_packet()

int ff_bsf_filter_packet ( AVBitStreamFilterLink link,
AVPacket pkt 
)

Send a packet of data to the next filter.

Parameters
linkthe output link over which the data is being sent
pkta reference to the buffer of data being sent. The receiving filter will free this reference when it no longer needs it or pass it on to the next filter.
Returns
>= 0 on success, a negative AVERROR on error. The receiving filter is responsible for unreferencing pkt in case of error.

Definition at line 666 of file bitstreamfilter.c.

Referenced by av_bsf_source_add_packet(), default_filter_packet(), and lcevc_merge().

◆ filter_packet_to_filter()

static int filter_packet_to_filter ( AVBitStreamFilterLink link)
static

Definition at line 687 of file bitstreamfilter.c.

Referenced by filter_activate_default().

◆ forward_status_change()

static int forward_status_change ( AVBitStreamFilterContext filter,
BitStreamFilterLinkInternal li_in 
)
static

Definition at line 719 of file bitstreamfilter.c.

Referenced by filter_activate_default().

◆ filter_activate_default()

static int filter_activate_default ( AVBitStreamFilterContext ctx)
static

Definition at line 753 of file bitstreamfilter.c.

Referenced by ff_bsf_activate().

◆ ff_bsf_activate()

int ff_bsf_activate ( AVBitStreamFilterContext ctx)

Definition at line 797 of file bitstreamfilter.c.

Referenced by ff_bsf_graph_run_once().

◆ ff_bsf_inlink_acknowledge_status()

int ff_bsf_inlink_acknowledge_status ( AVBitStreamFilterLink link,
int *  rstatus,
int64_t rpts 
)

Definition at line 810 of file bitstreamfilter.c.

Referenced by av_bsf_sink_get_packet(), and consume_from_fifos().

◆ ff_bsf_inlink_queued_packets()

size_t ff_bsf_inlink_queued_packets ( AVBitStreamFilterLink link)

Definition at line 826 of file bitstreamfilter.c.

◆ ff_bsf_inlink_check_available_packet()

int ff_bsf_inlink_check_available_packet ( AVBitStreamFilterLink link)

Definition at line 832 of file bitstreamfilter.c.

◆ consume_update()

static void consume_update ( BitStreamFilterLinkInternal li,
const AVPacket pkt 
)
static

Definition at line 838 of file bitstreamfilter.c.

Referenced by ff_bsf_inlink_consume_packet().

◆ ff_bsf_inlink_consume_packet()

int ff_bsf_inlink_consume_packet ( AVBitStreamFilterLink link,
AVPacket **  rpkt 
)

◆ ff_bsf_inlink_request_packet()

void ff_bsf_inlink_request_packet ( AVBitStreamFilterLink link)

◆ ff_bsf_inlink_set_status()

void ff_bsf_inlink_set_status ( AVBitStreamFilterLink link,
int  status 
)

Definition at line 875 of file bitstreamfilter.c.

Referenced by ff_packetsync_activate(), and filter_activate_default().

◆ ff_bsf_outlink_get_status()

int ff_bsf_outlink_get_status ( AVBitStreamFilterLink link)

◆ ff_bsf_outlink_packet_wanted()

int ff_bsf_outlink_packet_wanted ( AVBitStreamFilterLink link)

Definition at line 901 of file bitstreamfilter.c.

Referenced by consume_from_fifos().

Variable Documentation

◆ bitstreamfilter_class

const AVClass bitstreamfilter_class
static
Initial value:
= {
.class_name = "AVBitStreamFilterContext",
.item_name = default_bsf_name,
.child_next = bsf_child_next,
.child_class_iterate = ff_bsf_child_class_iterate,
}

Definition at line 44 of file bitstreamfilter.c.

Referenced by ff_bsf_alloc().

◆ ff_default_bsf_pad

const AVBitStreamFilterPad ff_default_bsf_pad[1]
Initial value:
= {
{
.name = "default",
}
}

Definition at line 907 of file bitstreamfilter.c.

bsf_child_next
static void * bsf_child_next(void *obj, void *prev)
Definition: bitstreamfilter.c:36
AVClass::state_flags_offset
int state_flags_offset
When non-zero, offset in the object to an unsigned int holding object state flags,...
Definition: log.h:176
LIBAVUTIL_VERSION_INT
#define LIBAVUTIL_VERSION_INT
Definition: version.h:85
ff_bsf_child_class_iterate
const AVClass * ff_bsf_child_class_iterate(void **opaque)
Definition: bitstream_filters.c:116
default_bsf_name
static const char * default_bsf_name(void *filter_ctx)
Definition: bitstreamfilter.c:30
AV_CLASS_CATEGORY_BITSTREAM_FILTER
@ AV_CLASS_CATEGORY_BITSTREAM_FILTER
Definition: log.h:37