FFmpeg
internal.h
Go to the documentation of this file.
1 /*
2  * This file is part of FFmpeg.
3  *
4  * FFmpeg is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * FFmpeg is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with FFmpeg; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17  */
18 
19 #ifndef AVFILTER_INTERNAL_H
20 #define AVFILTER_INTERNAL_H
21 
22 /**
23  * @file
24  * internal API functions
25  */
26 
27 #include "libavutil/internal.h"
28 #include "avfilter.h"
29 #include "formats.h"
30 #include "framequeue.h"
31 #include "video.h"
32 
33 typedef struct AVFilterCommand {
34  double time; ///< time expressed in seconds
35  char *command; ///< command
36  char *arg; ///< optional argument for the command
37  int flags;
40 
41 /**
42  * Update the position of a link in the age heap.
43  */
45 
46 /**
47  * A filter pad used for either input or output.
48  */
49 struct AVFilterPad {
50  /**
51  * Pad name. The name is unique among inputs and among outputs, but an
52  * input may have the same name as an output. This may be NULL if this
53  * pad has no need to ever be referenced by name.
54  */
55  const char *name;
56 
57  /**
58  * AVFilterPad type.
59  */
61 
62  /**
63  * The filter expects writable frames from its input link,
64  * duplicating data buffers if needed.
65  *
66  * input pads only.
67  */
68 #define AVFILTERPAD_FLAG_NEEDS_WRITABLE (1 << 0)
69 
70  /**
71  * The pad's name is allocated and should be freed generically.
72  */
73 #define AVFILTERPAD_FLAG_FREE_NAME (1 << 1)
74 
75  /**
76  * A combination of AVFILTERPAD_FLAG_* flags.
77  */
78  int flags;
79 
80  /**
81  * Callback functions to get a video/audio buffers. If NULL,
82  * the filter system will use ff_default_get_video_buffer() for video
83  * and ff_default_get_audio_buffer() for audio.
84  *
85  * The state of the union is determined by type.
86  *
87  * Input pads only.
88  */
89  union {
90  AVFrame *(*video)(AVFilterLink *link, int w, int h);
91  AVFrame *(*audio)(AVFilterLink *link, int nb_samples);
92  } get_buffer;
93 
94  /**
95  * Filtering callback. This is where a filter receives a frame with
96  * audio/video data and should do its processing.
97  *
98  * Input pads only.
99  *
100  * @return >= 0 on success, a negative AVERROR on error. This function
101  * must ensure that frame is properly unreferenced on error if it
102  * hasn't been passed on to another filter.
103  */
105 
106  /**
107  * Frame request callback. A call to this should result in some progress
108  * towards producing output over the given link. This should return zero
109  * on success, and another value on error.
110  *
111  * Output pads only.
112  */
114 
115  /**
116  * Link configuration callback.
117  *
118  * For output pads, this should set the link properties such as
119  * width/height. This should NOT set the format property - that is
120  * negotiated between filters by the filter system using the
121  * query_formats() callback before this function is called.
122  *
123  * For input pads, this should check the properties of the link, and update
124  * the filter's internal state as necessary.
125  *
126  * For both input and output filters, this should return zero on success,
127  * and another value on error.
128  */
130 };
131 
133  void *thread;
136 };
137 
140 
141  // 1 when avfilter_init_*() was successfully called on this filter
142  // 0 otherwise
144 };
145 
147  void *arg, int *ret, int nb_jobs)
148 {
149  return ctx->internal->execute(ctx, func, arg, ret, nb_jobs);
150 }
151 
153  /**
154  * The default value meaning that this filter supports all formats
155  * and (for audio) sample rates and channel layouts/counts as long
156  * as these properties agree for all inputs and outputs.
157  * This state is only allowed in case all inputs and outputs actually
158  * have the same type.
159  * The union is unused in this state.
160  *
161  * This value must always be zero (for default static initialization).
162  */
164  FF_FILTER_FORMATS_QUERY_FUNC, ///< formats.query active.
165  FF_FILTER_FORMATS_PIXFMT_LIST, ///< formats.pixels_list active.
166  FF_FILTER_FORMATS_SAMPLEFMTS_LIST, ///< formats.samples_list active.
167  FF_FILTER_FORMATS_SINGLE_PIXFMT, ///< formats.pix_fmt active
168  FF_FILTER_FORMATS_SINGLE_SAMPLEFMT, ///< formats.sample_fmt active.
169 };
170 
171 #define FILTER_QUERY_FUNC(func) \
172  .formats.query_func = func, \
173  .formats_state = FF_FILTER_FORMATS_QUERY_FUNC
174 #define FILTER_PIXFMTS_ARRAY(array) \
175  .formats.pixels_list = array, \
176  .formats_state = FF_FILTER_FORMATS_PIXFMT_LIST
177 #define FILTER_SAMPLEFMTS_ARRAY(array) \
178  .formats.samples_list = array, \
179  .formats_state = FF_FILTER_FORMATS_SAMPLEFMTS_LIST
180 #define FILTER_PIXFMTS(...) \
181  FILTER_PIXFMTS_ARRAY(((const enum AVPixelFormat []) { __VA_ARGS__, AV_PIX_FMT_NONE }))
182 #define FILTER_SAMPLEFMTS(...) \
183  FILTER_SAMPLEFMTS_ARRAY(((const enum AVSampleFormat[]) { __VA_ARGS__, AV_SAMPLE_FMT_NONE }))
184 #define FILTER_SINGLE_PIXFMT(pix_fmt_) \
185  .formats.pix_fmt = pix_fmt_, \
186  .formats_state = FF_FILTER_FORMATS_SINGLE_PIXFMT
187 #define FILTER_SINGLE_SAMPLEFMT(sample_fmt_) \
188  .formats.sample_fmt = sample_fmt_, \
189  .formats_state = FF_FILTER_FORMATS_SINGLE_SAMPLEFMT
190 
191 #define FILTER_INOUTPADS(inout, array) \
192  .inout = array, \
193  .nb_ ## inout = FF_ARRAY_ELEMS(array)
194 #define FILTER_INPUTS(array) FILTER_INOUTPADS(inputs, (array))
195 #define FILTER_OUTPUTS(array) FILTER_INOUTPADS(outputs, (array))
196 
197 /**
198  * Tell if an integer is contained in the provided -1-terminated list of integers.
199  * This is useful for determining (for instance) if an AVPixelFormat is in an
200  * array of supported formats.
201  *
202  * @param fmt provided format
203  * @param fmts -1-terminated list of formats
204  * @return 1 if present, 0 if absent
205  */
206 int ff_fmt_is_in(int fmt, const int *fmts);
207 
208 /* Functions to parse audio format arguments */
209 
210 /**
211  * Parse a pixel format.
212  *
213  * @param ret pixel format pointer to where the value should be written
214  * @param arg string to parse
215  * @param log_ctx log context
216  * @return >= 0 in case of success, a negative AVERROR code on error
217  */
219 int ff_parse_pixel_format(enum AVPixelFormat *ret, const char *arg, void *log_ctx);
220 
221 /**
222  * Parse a sample rate.
223  *
224  * @param ret unsigned integer pointer to where the value should be written
225  * @param arg string to parse
226  * @param log_ctx log context
227  * @return >= 0 in case of success, a negative AVERROR code on error
228  */
230 int ff_parse_sample_rate(int *ret, const char *arg, void *log_ctx);
231 
232 /**
233  * Parse a channel layout or a corresponding integer representation.
234  *
235  * @param ret 64bit integer pointer to where the value should be written.
236  * @param nret integer pointer to the number of channels;
237  * if not NULL, then unknown channel layouts are accepted
238  * @param arg string to parse
239  * @param log_ctx log context
240  * @return >= 0 in case of success, a negative AVERROR code on error
241  */
243 int ff_parse_channel_layout(AVChannelLayout *ret, int *nret, const char *arg,
244  void *log_ctx);
245 
247 
248 /**
249  * Set the status field of a link from the source filter.
250  * The pts should reflect the timestamp of the status change,
251  * in link time base and relative to the frames timeline.
252  * In particular, for AVERROR_EOF, it should reflect the
253  * end time of the last frame.
254  */
256 
257 /**
258  * Set the status field of a link from the destination filter.
259  * The pts should probably be left unset (AV_NOPTS_VALUE).
260  */
262 
263 #define D2TS(d) (isnan(d) ? AV_NOPTS_VALUE : (int64_t)(d))
264 #define TS2D(ts) ((ts) == AV_NOPTS_VALUE ? NAN : (double)(ts))
265 #define TS2T(ts, tb) ((ts) == AV_NOPTS_VALUE ? NAN : (double)(ts) * av_q2d(tb))
266 
267 /* misc trace functions */
268 
269 #define FF_TPRINTF_START(ctx, func) ff_tlog(NULL, "%-16s: ", #func)
270 
271 #ifdef TRACE
272 void ff_tlog_link(void *ctx, AVFilterLink *link, int end);
273 #else
274 #define ff_tlog_link(ctx, link, end) do { } while(0)
275 #endif
276 
277 /**
278  * Append a new input/output pad to the filter's list of such pads.
279  *
280  * The *_free_name versions will set the AVFILTERPAD_FLAG_FREE_NAME flag
281  * ensuring that the name will be freed generically (even on insertion error).
282  */
287 
288 /**
289  * Request an input frame from the filter at the other end of the link.
290  *
291  * This function must not be used by filters using the activate callback,
292  * use ff_link_set_frame_wanted() instead.
293  *
294  * The input filter may pass the request on to its inputs, fulfill the
295  * request from an internal buffer or any other means specific to its function.
296  *
297  * When the end of a stream is reached AVERROR_EOF is returned and no further
298  * frames are returned after that.
299  *
300  * When a filter is unable to output a frame for example due to its sources
301  * being unable to do so or because it depends on external means pushing data
302  * into it then AVERROR(EAGAIN) is returned.
303  * It is important that a AVERROR(EAGAIN) return is returned all the way to the
304  * caller (generally eventually a user application) as this step may (but does
305  * not have to be) necessary to provide the input with the next frame.
306  *
307  * If a request is successful then some progress has been made towards
308  * providing a frame on the link (through ff_filter_frame()). A filter that
309  * needs several frames to produce one is allowed to return success if one
310  * more frame has been processed but no output has been produced yet. A
311  * filter is also allowed to simply forward a success return value.
312  *
313  * @param link the input link
314  * @return zero on success
315  * AVERROR_EOF on end of file
316  * AVERROR(EAGAIN) if the previous filter cannot output a frame
317  * currently and can neither guarantee that EOF has been reached.
318  */
320 
321 #define AVFILTER_DEFINE_CLASS_EXT(name, desc, options) \
322  static const AVClass name##_class = { \
323  .class_name = desc, \
324  .item_name = av_default_item_name, \
325  .option = options, \
326  .version = LIBAVUTIL_VERSION_INT, \
327  .category = AV_CLASS_CATEGORY_FILTER, \
328  }
329 #define AVFILTER_DEFINE_CLASS(fname) \
330  AVFILTER_DEFINE_CLASS_EXT(fname, #fname, fname##_options)
331 
332 /**
333  * Find the index of a link.
334  *
335  * I.e. find i such that link == ctx->(in|out)puts[i]
336  */
337 #define FF_INLINK_IDX(link) ((int)((link)->dstpad - (link)->dst->input_pads))
338 #define FF_OUTLINK_IDX(link) ((int)((link)->srcpad - (link)->src->output_pads))
339 
340 /**
341  * Send a frame of data to the next filter.
342  *
343  * @param link the output link over which the data is being sent
344  * @param frame a reference to the buffer of data being sent. The
345  * receiving filter will free this reference when it no longer
346  * needs it or pass it on to the next filter.
347  *
348  * @return >= 0 on success, a negative AVERROR on error. The receiving filter
349  * is responsible for unreferencing frame in case of error.
350  */
352 
353 /**
354  * Allocate a new filter context and return it.
355  *
356  * @param filter what filter to create an instance of
357  * @param inst_name name to give to the new filter context
358  *
359  * @return newly created filter context or NULL on failure
360  */
361 AVFilterContext *ff_filter_alloc(const AVFilter *filter, const char *inst_name);
362 
364 
365 /**
366  * Remove a filter from a graph;
367  */
369 
370 /**
371  * The filter is aware of hardware frames, and any hardware frame context
372  * should not be automatically propagated through it.
373  */
374 #define FF_FILTER_FLAG_HWFRAME_AWARE (1 << 0)
375 
376 /**
377  * Run one round of processing on a filter graph.
378  */
380 
381 /**
382  * Get number of threads for current filter instance.
383  * This number is always same or less than graph->nb_threads.
384  */
386 
387 /**
388  * Generic processing of user supplied commands that are set
389  * in the same way as the filter options.
390  * NOTE: 'enable' option is handled separately, and not by
391  * this function.
392  */
393 int ff_filter_process_command(AVFilterContext *ctx, const char *cmd,
394  const char *arg, char *res, int res_len, int flags);
395 
396 /**
397  * Perform any additional setup required for hardware frames.
398  *
399  * link->hw_frames_ctx must be set before calling this function.
400  * Inside link->hw_frames_ctx, the fields format, sw_format, width and
401  * height must be set. If dynamically allocated pools are not supported,
402  * then initial_pool_size must also be set, to the minimum hardware frame
403  * pool size necessary for the filter to work (taking into account any
404  * frames which need to stored for use in operations as appropriate). If
405  * default_pool_size is nonzero, then it will be used as the pool size if
406  * no other modification takes place (this can be used to preserve
407  * compatibility).
408  */
410  int default_pool_size);
411 
412 /**
413  * Parse filter options into a dictionary.
414  *
415  * @param logctx context for logging
416  * @param priv_class a filter's private class for shorthand options or NULL
417  * @param options dictionary to store parsed options in
418  * @param args options string to parse
419  *
420  * @return a non-negative number on success, a negative error code on failure
421  */
422 int ff_filter_opt_parse(void *logctx, const AVClass *priv_class,
423  AVDictionary **options, const char *args);
424 
425 #endif /* AVFILTER_INTERNAL_H */
func
int(* func)(AVBPrint *dst, const char *in, const char *arg)
Definition: jacosubdec.c:68
AVPixelFormat
AVPixelFormat
Pixel format.
Definition: pixfmt.h:64
status
they must not be accessed directly The fifo field contains the frames that are queued in the input for processing by the filter The status_in and status_out fields contains the queued status(EOF or error) of the link
ff_avfilter_graph_update_heap
void ff_avfilter_graph_update_heap(AVFilterGraph *graph, AVFilterLink *link)
Update the position of a link in the age heap.
Definition: avfiltergraph.c:1289
avfilter_action_func
int() avfilter_action_func(AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs)
A function pointer passed to the AVFilterGraph::execute callback to be executed multiple times,...
Definition: avfilter.h:847
AVFilterGraphInternal::frame_queues
FFFrameQueueGlobal frame_queues
Definition: internal.h:135
AVFrame
This structure describes decoded (raw) audio or video data.
Definition: frame.h:330
ff_append_outpad
int ff_append_outpad(AVFilterContext *f, AVFilterPad *p)
Definition: avfilter.c:137
w
uint8_t w
Definition: llviddspenc.c:38
AVFilterGraphInternal
Definition: internal.h:132
filter
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
AVDictionary
Definition: dict.c:32
av_pure
#define av_pure
Definition: attributes.h:78
AVFilterInternal::initialized
int initialized
Definition: internal.h:143
ff_request_frame
int ff_request_frame(AVFilterLink *link)
Request an input frame from the filter at the other end of the link.
Definition: avfilter.c:415
video.h
ff_avfilter_link_set_in_status
void ff_avfilter_link_set_in_status(AVFilterLink *link, int status, int64_t pts)
Set the status field of a link from the source filter.
Definition: avfilter.c:222
FF_FILTER_FORMATS_SAMPLEFMTS_LIST
@ FF_FILTER_FORMATS_SAMPLEFMTS_LIST
formats.samples_list active.
Definition: internal.h:166
formats.h
AVFilterGraphInternal::thread
void * thread
Definition: internal.h:133
ff_filter_alloc
AVFilterContext * ff_filter_alloc(const AVFilter *filter, const char *inst_name)
Allocate a new filter context and return it.
Definition: avfilter.c:638
AVFilterCommand::flags
int flags
Definition: internal.h:37
ff_filter_activate
int ff_filter_activate(AVFilterContext *filter)
Definition: avfilter.c:1305
pts
static int64_t pts
Definition: transcode_aac.c:653
AVFilterPad
A filter pad used for either input or output.
Definition: internal.h:49
AVFilterPad::request_frame
int(* request_frame)(AVFilterLink *link)
Frame request callback.
Definition: internal.h:113
FF_FILTER_FORMATS_SINGLE_SAMPLEFMT
@ FF_FILTER_FORMATS_SINGLE_SAMPLEFMT
formats.sample_fmt active.
Definition: internal.h:168
FFFrameQueueGlobal
Structure to hold global options and statistics for frame queues.
Definition: framequeue.h:46
ff_avfilter_link_set_out_status
void ff_avfilter_link_set_out_status(AVFilterLink *link, int status, int64_t pts)
Set the status field of a link from the destination filter.
Definition: avfilter.c:235
ff_filter_init_hw_frames
int ff_filter_init_hw_frames(AVFilterContext *avctx, AVFilterLink *link, int default_pool_size)
Perform any additional setup required for hardware frames.
Definition: avfilter.c:1530
ctx
AVFormatContext * ctx
Definition: movenc.c:48
ff_filter_process_command
int ff_filter_process_command(AVFilterContext *ctx, const char *cmd, const char *arg, char *res, int res_len, int flags)
Generic processing of user supplied commands that are set in the same way as the filter options.
Definition: avfilter.c:844
ff_fmt_is_in
int ff_fmt_is_in(int fmt, const int *fmts)
Tell if an integer is contained in the provided -1-terminated list of integers.
Definition: formats.c:351
link
Filter the word “frame” indicates either a video frame or a group of audio as stored in an AVFrame structure Format for each input and each output the list of supported formats For video that means pixel format For audio that means channel sample they are references to shared objects When the negotiation mechanism computes the intersection of the formats supported at each end of a link
Definition: filter_design.txt:23
arg
const char * arg
Definition: jacosubdec.c:67
ff_filter_graph_remove_filter
void ff_filter_graph_remove_filter(AVFilterGraph *graph, AVFilterContext *filter)
Remove a filter from a graph;.
Definition: avfiltergraph.c:101
AVClass
Describe the class of an AVClass context structure.
Definition: log.h:66
ff_parse_pixel_format
av_warn_unused_result int ff_parse_pixel_format(enum AVPixelFormat *ret, const char *arg, void *log_ctx)
Parse a pixel format.
Definition: formats.c:812
framequeue.h
AVFilterInternal
Definition: internal.h:138
ff_update_link_current_pts
void ff_update_link_current_pts(AVFilterLink *link, int64_t pts)
Definition: avfilter.c:538
AVFilterPad::filter_frame
int(* filter_frame)(AVFilterLink *link, AVFrame *frame)
Filtering callback.
Definition: internal.h:104
AVFilterGraph
Definition: avfilter.h:864
ff_tlog_link
#define ff_tlog_link(ctx, link, end)
Definition: internal.h:274
AVFilterPad::config_props
int(* config_props)(AVFilterLink *link)
Link configuration callback.
Definition: internal.h:129
options
const OptionDef options[]
f
f
Definition: af_crystalizer.c:122
AVMediaType
AVMediaType
Definition: avutil.h:199
ff_append_outpad_free_name
int ff_append_outpad_free_name(AVFilterContext *f, AVFilterPad *p)
Definition: avfilter.c:142
AVChannelLayout
An AVChannelLayout holds information about the channel layout of audio data.
Definition: channel_layout.h:301
avfilter_execute_func
int() avfilter_execute_func(AVFilterContext *ctx, avfilter_action_func *func, void *arg, int *ret, int nb_jobs)
A function executing multiple jobs, possibly in parallel.
Definition: avfilter.h:861
AVFilterCommand::next
struct AVFilterCommand * next
Definition: internal.h:38
AVFilterPad::get_buffer
union AVFilterPad::@230 get_buffer
Callback functions to get a video/audio buffers.
ff_filter_opt_parse
int ff_filter_opt_parse(void *logctx, const AVClass *priv_class, AVDictionary **options, const char *args)
Parse filter options into a dictionary.
Definition: avfilter.c:786
AVFilterGraphInternal::thread_execute
avfilter_execute_func * thread_execute
Definition: internal.h:134
ff_filter_graph_run_once
int ff_filter_graph_run_once(AVFilterGraph *graph)
Run one round of processing on a filter graph.
Definition: avfiltergraph.c:1340
av_warn_unused_result
#define av_warn_unused_result
Definition: attributes.h:64
ff_parse_sample_rate
av_warn_unused_result int ff_parse_sample_rate(int *ret, const char *arg, void *log_ctx)
Parse a sample rate.
Definition: formats.c:827
FilterFormatsState
FilterFormatsState
Definition: internal.h:152
internal.h
FF_FILTER_FORMATS_PASSTHROUGH
@ FF_FILTER_FORMATS_PASSTHROUGH
The default value meaning that this filter supports all formats and (for audio) sample rates and chan...
Definition: internal.h:163
AVFilterCommand
Definition: internal.h:33
av_always_inline
#define av_always_inline
Definition: attributes.h:49
AVFilterPad::flags
int flags
A combination of AVFILTERPAD_FLAG_* flags.
Definition: internal.h:78
AVFilterPad::name
const char * name
Pad name.
Definition: internal.h:55
AVFilter
Filter definition.
Definition: avfilter.h:166
ret
ret
Definition: filter_design.txt:187
AVFilterPad::type
enum AVMediaType type
AVFilterPad type.
Definition: internal.h:60
frame
these buffered frames must be flushed immediately if a new input produces new the filter must not call request_frame to get more It must just process the frame or queue it The task of requesting more frames is left to the filter s request_frame method or the application If a filter has several the filter must be ready for frames arriving randomly on any input any filter with several inputs will most likely require some kind of queuing mechanism It is perfectly acceptable to have a limited queue and to drop frames when the inputs are too unbalanced request_frame For filters that do not use the this method is called when a frame is wanted on an output For a it should directly call filter_frame on the corresponding output For a if there are queued frames already one of these frames should be pushed If the filter should request a frame on one of its repeatedly until at least one frame has been pushed Return or at least make progress towards producing a frame
Definition: filter_design.txt:264
ff_append_inpad_free_name
int ff_append_inpad_free_name(AVFilterContext *f, AVFilterPad *p)
Definition: avfilter.c:131
AVFilterInternal::execute
avfilter_execute_func * execute
Definition: internal.h:139
ff_filter_frame
int ff_filter_frame(AVFilterLink *link, AVFrame *frame)
Send a frame of data to the next filter.
Definition: avfilter.c:971
avfilter.h
AVFilterCommand::command
char * command
command
Definition: internal.h:35
AVFilterCommand::arg
char * arg
optional argument for the command
Definition: internal.h:36
AVFilterContext
An instance of a filter.
Definition: avfilter.h:397
FF_FILTER_FORMATS_PIXFMT_LIST
@ FF_FILTER_FORMATS_PIXFMT_LIST
formats.pixels_list active.
Definition: internal.h:165
ff_parse_channel_layout
av_warn_unused_result int ff_parse_channel_layout(AVChannelLayout *ret, int *nret, const char *arg, void *log_ctx)
Parse a channel layout or a corresponding integer representation.
Definition: formats.c:839
ff_append_inpad
int ff_append_inpad(AVFilterContext *f, AVFilterPad *p)
Append a new input/output pad to the filter's list of such pads.
Definition: avfilter.c:126
FF_FILTER_FORMATS_QUERY_FUNC
@ FF_FILTER_FORMATS_QUERY_FUNC
formats.query active.
Definition: internal.h:164
flags
#define flags(name, subs,...)
Definition: cbs_av1.c:561
h
h
Definition: vp9dsp_template.c:2038
ff_filter_execute
static av_always_inline int ff_filter_execute(AVFilterContext *ctx, avfilter_action_func *func, void *arg, int *ret, int nb_jobs)
Definition: internal.h:146
int
int
Definition: ffmpeg_filter.c:156
FF_FILTER_FORMATS_SINGLE_PIXFMT
@ FF_FILTER_FORMATS_SINGLE_PIXFMT
formats.pix_fmt active
Definition: internal.h:167
ff_filter_get_nb_threads
int ff_filter_get_nb_threads(AVFilterContext *ctx) av_pure
Get number of threads for current filter instance.
Definition: avfilter.c:779
AVFilterCommand::time
double time
time expressed in seconds
Definition: internal.h:34