FFmpeg
Data Structures | Macros | Enumerations | Functions
framesync.h File Reference
#include "bufferqueue.h"

Go to the source code of this file.

Data Structures

struct   FFFrameSyncIn
  Input stream structure. More...
 
struct   FFFrameSync
  Frame sync structure. More...
 

Macros

#define  FRAMESYNC_DEFINE_CLASS(name, context, field)
 

Enumerations

 
  This API is intended as a helper for filters that have several video input and need to combine them somehow. More...
 

Functions

  Get the class for the framesync object. More...
 
  Pre-initialize a frame sync structure. More...
 
int  ff_framesync_init (FFFrameSync *fs, AVFilterContext *parent, unsigned nb_in)
  Initialize a frame sync structure. More...
 
  Configure a frame sync structure. More...
 
  Free all memory currently allocated. More...
 
int  ff_framesync_get_frame (FFFrameSync *fs, unsigned in, AVFrame **rframe, unsigned get)
  Get the current frame in an input. More...
 
  Examine the frames in the filter's input and try to produce output. More...
 
  Initialize a frame sync structure for dualinput. More...
 
 
  Same as ff_framesync_dualinput_get(), but make sure that f0 is writable. More...
 

Macro Definition Documentation

#define FRAMESYNC_DEFINE_CLASS (   name,
  context,
  field 
)
Value:
static int name##_framesync_preinit(AVFilterContext *ctx) { \
context *s = ctx->priv; \
return 0; \
} \
static const AVClass *name##_child_class_next(const AVClass *prev) { \
} \
static void *name##_child_next(void *obj, void *prev) { \
context *s = obj; \
s->fs.class = framesync_get_class(); /* FIXME */ \
return prev ? NULL : &s->field; \
} \
static const AVClass name##_class = { \
.item_name = av_default_item_name, \
.option = name##_options, \
.version = LIBAVUTIL_VERSION_INT, \
.category = AV_CLASS_CATEGORY_FILTER, \
.child_class_next = name##_child_class_next, \
.child_next = name##_child_next, \
}
#define NULL
Definition: coverity.c:32
s
const char * s
Definition: avisynth_c.h:768
#define LIBAVUTIL_VERSION_INT
Definition: version.h:85
const char * av_default_item_name(void *ptr)
Return the context name.
Definition: log.c:191
const char * class_name
The name of the class; usually it is the same name as the context structure type to which the AVClass...
Definition: log.h:72
void * priv
private data for use by the filter
Definition: avfilter.h:353
return
Definition: audio_convert.c:415
void ff_framesync_preinit(FFFrameSync *fs)
Pre-initialize a frame sync structure.
Definition: framesync.c:69
AVFormatContext * ctx
Definition: movenc.c:48
Describe the class of an AVClass context structure.
Definition: log.h:67
const AVClass * framesync_get_class(void)
Get the class for the framesync object.
Definition: framesync.c:64
An instance of a filter.
Definition: avfilter.h:338
const char * name
Definition: opengl_enc.c:103

Definition at line 300 of file framesync.h.

Enumeration Type Documentation

enum EOFAction
Enumerator
EOF_ACTION_REPEAT 
EOF_ACTION_ENDALL 
EOF_ACTION_PASS 
EOF_ACTION_ROUND 
EOF_ACTION_PASS 
EOF_ACTION_NB 

Definition at line 26 of file framesync.h.

This API is intended as a helper for filters that have several video input and need to combine them somehow.

If the inputs have different or variable frame rate, getting the input frames to match requires a rather complex logic and a few user-tunable options.

In this API, when a set of synchronized input frames is ready to be procesed is called a frame event. Frame event can be generated in response to input frames on any or all inputs and the handling of situations where some stream extend beyond the beginning or the end of others can be configured.

The basic working of this API is the following: set the on_event callback, then call ff_framesync_activate() from the filter's activate callback. Stream extrapolation mode

Describe how the frames of a stream are extrapolated before the first one and after EOF to keep sync with possibly longer other streams.

Enumerator
EXT_STOP 

Completely stop all streams with this one.

EXT_NULL 

Ignore this stream and continue processing the other ones.

EXT_INFINITY 

Extend the frame to infinity.

Definition at line 60 of file framesync.h.

Function Documentation

const AVClass* framesync_get_class ( void  )

Get the class for the framesync object.

Definition at line 64 of file framesync.c.

void ff_framesync_preinit ( FFFrameSyncfs )

Pre-initialize a frame sync structure.

It sets the class pointer and inits the options to their default values. The entire structure is expected to be already set to 0. This step is optional, but necessary to use the options.

Definition at line 69 of file framesync.c.

Referenced by ff_framesync_init().

int ff_framesync_init ( FFFrameSyncfs,
AVFilterContextparent,
unsigned  nb_in 
)

Initialize a frame sync structure.

The entire structure is expected to be already set to 0 or preinited.

Parameters
fs frame sync structure to initialize
parent parent AVFilterContext object
nb_in number of inputs
Returns
>= 0 for success or a negative error code

Definition at line 77 of file framesync.c.

Referenced by config_output(), ff_framesync_init_dualinput(), init_framesync(), lut2_config_output(), and program_opencl_config_output().

int ff_framesync_configure ( FFFrameSyncfs )

Configure a frame sync structure.

Must be called after all options are set but before all use.

Returns
>= 0 for success or a negative error code

Definition at line 117 of file framesync.c.

Referenced by config_output(), init_framesync(), lut2_config_output(), overlay_opencl_config_output(), and program_opencl_config_output().

void ff_framesync_uninit ( FFFrameSyncfs )

Free all memory currently allocated.

Definition at line 293 of file framesync.c.

Referenced by overlay_opencl_uninit(), overlay_qsv_uninit(), program_opencl_uninit(), and uninit().

int ff_framesync_get_frame ( FFFrameSyncfs,
unsigned  in,
AVFrame **  rframe,
unsigned  get 
)

Get the current frame in an input.

Parameters
fs frame sync structure
in index of the input
rframe used to return the current frame (or NULL)
get if not zero, the calling code needs to get ownership of the returned frame; the current frame will either be duplicated or removed from the framesync structure

Definition at line 256 of file framesync.c.

Referenced by ff_framesync_dualinput_get(), overlay_opencl_blend(), process_frame(), and program_opencl_filter().

int ff_framesync_activate ( FFFrameSyncfs )

Examine the frames in the filter's input and try to produce output.

This function can be the complete implementation of the activate method of a filter using framesync.

Definition at line 344 of file framesync.c.

Referenced by activate(), overlay_opencl_activate(), and program_opencl_activate().

int ff_framesync_init_dualinput ( FFFrameSyncfs,
AVFilterContextparent 
)

Initialize a frame sync structure for dualinput.

Compared to generic framesync, dualinput assumes the first input is the main one and the filtering is performed on it. The first input will be the only one with sync set and generic timeline support will just pass it unchanged when disabled.

Equivalent to ff_framesync_init(fs, parent, 2) then setting the time base, sync and ext modes on the inputs.

Definition at line 361 of file framesync.c.

Referenced by config_output(), and overlay_opencl_config_output().

int ff_framesync_dualinput_get ( FFFrameSyncfs,
AVFrame **  f0,
AVFrame **  f1 
)
Parameters
f0 used to return the main frame
f1 used to return the second frame, or NULL if disabled
Returns
>=0 for success or AVERROR code
Note
The frame returned in f0 belongs to the caller (get = 1 in ff_framesync_get_frame()) while the frame returned in f1 is still owned by the framesync structure.

Definition at line 379 of file framesync.c.

Referenced by blend_frame_for_dualinput(), do_convolve(), do_psnr(), do_ssim(), do_vmaf(), and ff_framesync_dualinput_get_writable().

int ff_framesync_dualinput_get_writable ( FFFrameSyncfs,
AVFrame **  f0,
AVFrame **  f1 
)

Same as ff_framesync_dualinput_get(), but make sure that f0 is writable.

Definition at line 399 of file framesync.c.

Referenced by do_blend(), and load_apply_palette().


Generated on Sun May 13 2018 02:04:20 for FFmpeg by   doxygen 1.8.6

AltStyle によって変換されたページ (->オリジナル) /