FFmpeg
ffmpeg.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 FFTOOLS_FFMPEG_H
20 #define FFTOOLS_FFMPEG_H
21 
22 #include "config.h"
23 
24 #include <stdint.h>
25 #include <stdio.h>
26 #include <signal.h>
27 
28 #include "cmdutils.h"
29 
30 #include "libavformat/avformat.h"
31 #include "libavformat/avio.h"
32 
33 #include "libavcodec/avcodec.h"
34 
35 #include "libavfilter/avfilter.h"
36 
37 #include "libavutil/avutil.h"
38 #include "libavutil/dict.h"
39 #include "libavutil/eval.h"
40 #include "libavutil/fifo.h"
41 #include "libavutil/hwcontext.h"
42 #include "libavutil/pixfmt.h"
43 #include "libavutil/rational.h"
44 #include "libavutil/thread.h"
46 
48 
49 #define VSYNC_AUTO -1
50 #define VSYNC_PASSTHROUGH 0
51 #define VSYNC_CFR 1
52 #define VSYNC_VFR 2
53 #define VSYNC_VSCFR 0xfe
54 #define VSYNC_DROP 0xff
55 
56 #define MAX_STREAMS 1024 /* arbitrary sanity check value */
57 
58 enum HWAccelID {
64 };
65 
66 typedef struct HWAccel {
67  const char *name;
69  enum HWAccelID id;
71 } HWAccel;
72 
73 typedef struct HWDevice {
74  const char *name;
77 } HWDevice;
78 
79 /* select an input stream for an output stream */
80 typedef struct StreamMap {
81  int disabled; /* 1 is this mapping is disabled by a negative map */
86  char *linklabel; /* name of an output link, for mapping lavfi outputs */
87 } StreamMap;
88 
89 typedef struct {
90  int file_idx, stream_idx, channel_idx; // input
91  int ofile_idx, ostream_idx; // output
93 
94 typedef struct OptionsContext {
96 
97  /* input/output options */
98  int64_t start_time;
99  int64_t start_time_eof;
101  const char *format;
102 
115 
116  /* input options */
118  int loop;
119  int rate_emu;
122 
135 
136  /* output options */
139  AudioChannelMap *audio_channel_maps; /* one info entry per -map_channel */
140  int nb_audio_channel_maps; /* number of (valid) -map_channel settings */
144  const char **attachments;
146 
148 
149  int64_t recording_time;
150  int64_t stop_time;
151  uint64_t limit_filesize;
152  float mux_preload;
154  int shortest;
155  int bitexact;
156 
161 
162  /* indexed by output file stream index */
165 
213  int nb_pass;
223  int nb_apad;
237 
238 typedef struct InputFilter {
240  struct InputStream *ist;
243  enum AVMediaType type; // AVMEDIA_TYPE_SUBTITLE for sub2video
244 
246 
247  // parameters configured for this input
248  int format;
249 
250  int width, height;
252 
254  int channels;
255  uint64_t channel_layout;
256 
258 
259  int eof;
260 } InputFilter;
261 
262 typedef struct OutputFilter {
264  struct OutputStream *ost;
267 
268  /* temporary storage until stream maps are processed */
271 
272  /* desired output stream properties */
273  int width, height;
275  int format;
277  uint64_t channel_layout;
278 
279  // those are only set if no format is specified and the encoder gives us multiple options
280  int *formats;
281  uint64_t *channel_layouts;
283 } OutputFilter;
284 
285 typedef struct FilterGraph {
286  int index;
287  const char *graph_desc;
288 
291 
296 } FilterGraph;
297 
298 typedef struct InputStream {
301  int discard; /* true if stream data should be discarded */
303  int decoding_needed; /* non zero if the packets must be decoded in 'raw_fifo', see DECODING_FOR_* */
304 #define DECODING_FOR_OST 1
305 #define DECODING_FOR_FILTER 2
306 
310  AVFrame *filter_frame; /* a ref of decoded_frame, to be sent to filters */
311 
312  int64_t start; /* time when read started */
313  /* predicted dts of the next packet read for this stream or (when there are
314  * several frames in a packet) of the next frame in current packet (in AV_TIME_BASE units) */
315  int64_t next_dts;
316  int64_t dts; ///< dts of the last packet read for this stream (in AV_TIME_BASE units)
317 
318  int64_t next_pts; ///< synthetic pts for the next decode frame (in AV_TIME_BASE units)
319  int64_t pts; ///< current pts of the decoded frame (in AV_TIME_BASE units)
321 
323 
324  int64_t min_pts; /* pts with the smallest value in a current stream */
325  int64_t max_pts; /* pts with the higher value in a current stream */
326 
327  // when forcing constant input framerate through -r,
328  // this contains the pts that will be given to the next decoded frame
329  int64_t cfr_next_pts;
330 
331  int64_t nb_samples; /* number of samples in the last decoded audio frame before looping */
332 
333  double ts_scale;
336  AVRational framerate; /* framerate forced with -r */
339 
341 
343  struct { /* previous decoded subtitle and related variables */
345  int ret;
347  } prev_sub;
348 
349  struct sub2video {
350  int64_t last_pts;
351  int64_t end_pts;
352  AVFifoBuffer *sub_queue; ///< queue of AVSubtitle* before filter init
354  int w, h;
355  unsigned int initialize; ///< marks if sub2video_update should force an initialization
356  } sub2video;
357 
358  int dr1;
359 
360  /* decoded data from this stream goes into all those filters
361  * currently video and audio only */
364 
366 
367  /* hwaccel options */
368  enum HWAccelID hwaccel_id;
369  enum AVHWDeviceType hwaccel_device_type;
371  enum AVPixelFormat hwaccel_output_format;
372 
373  /* hwaccel context */
374  void *hwaccel_ctx;
376  int (*hwaccel_get_buffer)(AVCodecContext *s, AVFrame *frame, int flags);
378  enum AVPixelFormat hwaccel_pix_fmt;
379  enum AVPixelFormat hwaccel_retrieved_pix_fmt;
381 
382  /* stats */
383  // combined size of all the packets read
384  uint64_t data_size;
385  /* number of packets successfully read for this stream */
386  uint64_t nb_packets;
387  // number of frames/samples retrieved from the decoder
388  uint64_t frames_decoded;
389  uint64_t samples_decoded;
390 
391  int64_t *dts_buffer;
393 
394  int got_output;
395 } InputStream;
396 
397 typedef struct InputFile {
399  int eof_reached; /* true if eof reached */
400  int eagain; /* true if last read attempt returned EAGAIN */
401  int ist_index; /* index of first stream in input_streams */
402  int loop; /* set number of times input stream should be looped */
403  int64_t duration; /* actual duration of the longest stream in a file
404  at the moment when looping happens */
405  AVRational time_base; /* time base of the duration */
407 
408  int64_t ts_offset;
409  int64_t last_ts;
410  int64_t start_time; /* user-specified start time in AV_TIME_BASE or AV_NOPTS_VALUE */
412  int64_t recording_time;
413  int nb_streams; /* number of stream that ffmpeg is aware of; may be different
414  from ctx.nb_streams if new streams appear during av_read_frame() */
415  int nb_streams_warn; /* number of streams that the user was warned of */
416  int rate_emu;
418 
419 #if HAVE_THREADS
420  AVThreadMessageQueue *in_thread_queue;
421  pthread_t thread; /* thread reading from this file */
422  int non_blocking; /* reading packets from the thread should not block */
423  int joined; /* the thread has been joined */
424  int thread_queue_size; /* maximum number of queued packets */
425 #endif
426 } InputFile;
427 
435 };
436 
437 #define ABORT_ON_FLAG_EMPTY_OUTPUT (1 << 0)
438 #define ABORT_ON_FLAG_EMPTY_OUTPUT_STREAM (1 << 1)
439 
440 extern const char *const forced_keyframes_const_names[];
441 
442 typedef enum {
445 } OSTFinished ;
446 
447 typedef struct OutputStream {
448  int file_index; /* file index */
449  int index; /* stream index in the output file */
450  int source_index; /* InputStream index */
451  AVStream *st; /* stream in the output file */
452  int encoding_needed; /* true if encoding needed for this stream */
454  /* input pts and corresponding output pts
455  for A/V sync */
456  struct InputStream *sync_ist; /* input stream to sync against */
457  int64_t sync_opts; /* output frame counter, could be changed to some true timestamp */ // FIXME look at frame_number
458  /* pts of the first frame encoded for this stream, used for limiting
459  * recording time */
460  int64_t first_pts;
461  /* dts of the last packet sent to the muxer */
462  int64_t last_mux_dts;
463  // the timebase of the packets sent to the muxer
466 
468 
470  AVCodecParameters *ref_par; /* associated input codec parameters with encoders options applied */
472  int64_t max_frames;
476  int last_nb0_frames[3];
477 
478  void *hwaccel_ctx;
479 
480  /* video only */
482  int is_cfr;
488 
490 
491  /* forced key frames */
493  int64_t *forced_kf_pts;
498  double forced_keyframes_expr_const_values[FKF_NB];
499 
500  /* audio only */
501  int *audio_channels_map; /* list of the channels id to pick from the source stream */
502  int audio_channels_mapped; /* number of channels in audio_channels_map */
503 
505  FILE *logfile;
506 
508  char *avfilter;
509  char *filters; ///< filtergraph associated to the -filter option
510  char *filters_script; ///< filtergraph script associated to the -filter_script option
511 
516  char *apad;
517  OSTFinished finished; /* no more packets should be written for this stream */
518  int unavailable; /* true if the steram is unavailable (possibly temporarily) */
520 
521  // init_output_stream() has been called for this stream
522  // The encoder and the bitstream filters have been initialized and the stream
523  // parameters are set in the AVStream.
525 
527 
528  const char *attachment_filename;
531  char *disposition;
532 
534 
535  /* stats */
536  // combined size of all the packets written
537  uint64_t data_size;
538  // number of packets send to the muxer
539  uint64_t packets_written;
540  // number of frames/samples sent to the encoder
541  uint64_t frames_encoded;
542  uint64_t samples_encoded;
543 
544  /* packet quality factor */
545  int quality;
546 
548 
549  /* the packets are buffered here until the muxer is ready to be initialized */
551 
552  /*
553  * The size of the AVPackets' buffers in queue.
554  * Updated when a packet is either pushed or pulled from the queue.
555  */
557 
558  /* Threshold after which max_muxing_queue_size will be in effect */
560 
561  /* packet picture type */
563 
564  /* frame encode sum of squared error values */
565  int64_t error[4];
566 } OutputStream;
567 
568 typedef struct OutputFile {
571  int ost_index; /* index of the first stream in output_streams */
572  int64_t recording_time; ///< desired length of the resulting file in microseconds == AV_TIME_BASE units
573  int64_t start_time; ///< start time in microseconds == AV_TIME_BASE units
574  uint64_t limit_filesize; /* filesize limit expressed in bytes */
575 
576  int shortest;
577 
579 } OutputFile;
580 
581 extern InputStream **input_streams;
582 extern int nb_input_streams;
583 extern InputFile **input_files;
584 extern int nb_input_files;
585 
587 extern int nb_output_streams;
588 extern OutputFile **output_files;
589 extern int nb_output_files;
590 
591 extern FilterGraph **filtergraphs;
592 extern int nb_filtergraphs;
593 
594 extern char *vstats_filename;
595 extern char *sdp_filename;
596 
597 extern float audio_drift_threshold;
598 extern float dts_delta_threshold;
599 extern float dts_error_threshold;
600 
601 extern int audio_volume;
602 extern int audio_sync_method;
603 extern int video_sync_method;
604 extern float frame_drop_threshold;
605 extern int do_benchmark;
606 extern int do_benchmark_all;
607 extern int do_deinterlace;
608 extern int do_hex_dump;
609 extern int do_pkt_dump;
610 extern int copy_ts;
611 extern int start_at_zero;
612 extern int copy_tb;
613 extern int debug_ts;
614 extern int exit_on_error;
615 extern int abort_on_flags;
616 extern int print_stats;
617 extern int qp_hist;
618 extern int stdin_interaction;
619 extern int frame_bits_per_raw_sample;
620 extern AVIOContext *progress_avio;
621 extern float max_error_rate;
622 extern char *videotoolbox_pixfmt;
623 
624 extern int filter_nbthreads;
625 extern int filter_complex_nbthreads;
626 extern int vstats_version;
627 extern int auto_conversion_filters;
628 
629 extern const AVIOInterruptCB int_cb;
630 
631 extern const OptionDef options[];
632 extern const HWAccel hwaccels[];
633 #if CONFIG_QSV
634 extern char *qsv_device;
635 #endif
636 extern HWDevice *filter_hw_device;
637 
638 
639 void term_init(void);
640 void term_exit(void);
641 
642 void reset_options(OptionsContext *o, int is_input);
643 void show_usage(void);
644 
645 void opt_output_file(void *optctx, const char *filename);
646 
649 
651 
653  const AVCodec *codec, enum AVPixelFormat target);
654 void choose_sample_fmt(AVStream *st, const AVCodec *codec);
655 
658 void check_filter_outputs(void);
663 
664 void sub2video_update(InputStream *ist, int64_t heartbeat_pts, AVSubtitle *sub);
665 
667 
668 int ffmpeg_parse_options(int argc, char **argv);
669 
672 
673 HWDevice *hw_device_get_by_name(const char *name);
674 int hw_device_init_from_string(const char *arg, HWDevice **dev);
675 void hw_device_free_all(void);
676 
680 
682 
683 #endif /* FFTOOLS_FFMPEG_H */
int64_t pts
current pts of the decoded frame (in AV_TIME_BASE units)
Definition: ffmpeg.h:319
SpecifierOpt * passlogfiles
Definition: ffmpeg.h:214
AVRational enc_timebase
Definition: ffmpeg.h:465
int nb_dump_attachment
Definition: ffmpeg.h:126
int got_output
Definition: ffmpeg.h:344
int nb_metadata
Definition: ffmpeg.h:167
int nb_streamid_map
Definition: ffmpeg.h:164
int frame_number
Definition: ffmpeg.h:453
int width
Definition: ffmpeg.h:273
Definition: ffmpeg.h:429
int keep_pix_fmt
Definition: ffmpeg.h:533
Bytestream IO Context.
Definition: avio.h:161
float mux_preload
Definition: ffmpeg.h:152
int64_t recording_time
desired length of the resulting file in microseconds == AV_TIME_BASE units
Definition: ffmpeg.h:572
HWAccelID
Definition: ffmpeg.h:58
Buffered I/O operations.
uint8_t * name
Definition: ffmpeg.h:266
int nb_outputs
Definition: ffmpeg.h:295
char * qsv_device
Definition: ffmpeg_qsv.c:32
AVDictionary * swr_opts
Definition: ffmpeg.h:514
This structure describes decoded (raw) audio or video data.
Definition: frame.h:314
int stream_copy
Definition: ffmpeg.h:519
AVRational frame_rate
Definition: ffmpeg.h:481
int64_t * forced_kf_pts
Definition: ffmpeg.h:493
int64_t start_time_eof
Definition: ffmpeg.h:99
AVBufferRef * hw_frames_ctx
Definition: ffmpeg.h:380
char * filters
filtergraph associated to the -filter option
Definition: ffmpeg.h:509
SpecifierOpt * hwaccel_output_formats
Definition: ffmpeg.h:131
HWDevice * filter_hw_device
Definition: ffmpeg_opt.c:144
int data_disable
Definition: ffmpeg.h:160
float mux_max_delay
Definition: ffmpeg.h:153
int exit_on_error
Definition: ffmpeg_opt.c:166
int64_t cfr_next_pts
Definition: ffmpeg.h:329
int accurate_seek
Definition: ffmpeg.h:417
OutputFile ** output_files
Definition: ffmpeg.c:154
int64_t forced_kf_ref_pts
Definition: ffmpeg.h:492
int nb_forced_key_frames
Definition: ffmpeg.h:179
int * streamid_map
Definition: ffmpeg.h:163
Main libavfilter public API header.
int nb_stream_maps
Definition: ffmpeg.h:138
SpecifierOpt * copy_initial_nonkeyframes
Definition: ffmpeg.h:198
int ostream_idx
Definition: ffmpeg.h:91
int nb_chroma_intra_matrices
Definition: ffmpeg.h:191
AVRational framerate
Definition: ffmpeg.h:336
SpecifierOpt * reinit_filters
Definition: ffmpeg.h:206
SpecifierOpt * ts_scale
Definition: ffmpeg.h:123
int64_t max_pts
Definition: ffmpeg.h:325
AVFilterInOut * out_tmp
Definition: ffmpeg.h:269
int bitexact
Definition: ffmpeg.h:155
int decoding_needed
Definition: ffmpeg.h:303
int nb_canvas_sizes
Definition: ffmpeg.h:211
The bitstream filter state.
Definition: bsf.h:49
int rotate_overridden
Definition: ffmpeg.h:485
int max_muxing_queue_size
Definition: ffmpeg.h:547
SpecifierOpt * discard
Definition: ffmpeg.h:224
int nb_frame_pix_fmts
Definition: ffmpeg.h:114
void * hwaccel_ctx
Definition: ffmpeg.h:478
SpecifierOpt * sample_fmts
Definition: ffmpeg.h:174
SpecifierOpt * guess_layout_max
Definition: ffmpeg.h:220
void hw_device_free_all(void)
Definition: ffmpeg_hw.c:274
int eagain
Definition: ffmpeg.h:400
The reader does not expect b to be semantically here and if the code is changed by maybe adding a a division or other the signedness will almost certainly be mistaken To avoid this confusion a new type was SUINT is the C unsigned type but it holds a signed int to use the same example SUINT a
Definition: undefined.txt:36
Convenience header that includes libavutil&#39;s core.
forced_keyframes_const
Definition: ffmpeg.h:428
GLint GLenum type
Definition: opengl_enc.c:104
int quality
Definition: ffmpeg.h:545
AVFrame * filter_frame
Definition: ffmpeg.h:310
int do_benchmark_all
Definition: ffmpeg_opt.c:159
int nb_program
Definition: ffmpeg.h:229
int last_dropped
Definition: ffmpeg.h:475
FilterGraph ** filtergraphs
Definition: ffmpeg.c:157
int64_t input_ts_offset
Definition: ffmpeg.h:406
int do_hex_dump
Definition: ffmpeg_opt.c:160
int nb_filter_scripts
Definition: ffmpeg.h:205
static void error(const char *err)
const char * name
Definition: ffmpeg.h:67
int nb_muxing_queue_data_threshold
Definition: ffmpeg.h:219
uint64_t packets_written
Definition: ffmpeg.h:539
AVCodec.
Definition: codec.h:190
int nb_dts_buffer
Definition: ffmpeg.h:392
SpecifierOpt * filters
Definition: ffmpeg.h:202
This struct describes the properties of an encoded stream.
Definition: codec_par.h:52
int print_stats
Definition: ffmpeg_opt.c:168
float dts_error_threshold
Definition: ffmpeg_opt.c:151
int64_t start_time
start time in microseconds == AV_TIME_BASE units
Definition: ffmpeg.h:573
int index
Definition: ffmpeg.h:286
uint64_t data_size
Definition: ffmpeg.h:537
SpecifierOpt * qscale
Definition: ffmpeg.h:176
SpecifierOpt * frame_pix_fmts
Definition: ffmpeg.h:113
SpecifierOpt * chroma_intra_matrices
Definition: ffmpeg.h:190
struct FilterGraph * graph
Definition: ffmpeg.h:241
SpecifierOpt * intra_matrices
Definition: ffmpeg.h:186
int encoding_needed
Definition: ffmpeg.h:452
Format I/O context.
Definition: avformat.h:1239
void remove_avoptions(AVDictionary **a, AVDictionary *b)
Definition: ffmpeg.c:650
uint64_t samples_decoded
Definition: ffmpeg.h:389
struct InputStream * ist
Definition: ffmpeg.h:240
enum HWAccelID id
Definition: ffmpeg.h:69
uint64_t frames_decoded
Definition: ffmpeg.h:388
int header_written
Definition: ffmpeg.h:578
AVFilterGraph * graph
Definition: ffmpeg.h:289
Public dictionary API.
char * logfile_prefix
Definition: ffmpeg.h:504
int user_set_discard
Definition: ffmpeg.h:302
void choose_sample_fmt(AVStream *st, const AVCodec *codec)
Definition: ffmpeg_filter.c:94
int copy_initial_nonkeyframes
Definition: ffmpeg.h:529
int64_t * dts_buffer
Definition: ffmpeg.h:391
uint8_t
AVDictionary * sws_dict
Definition: ffmpeg.h:513
int auto_conversion_filters
Definition: ffmpeg_opt.c:176
int nb_time_bases
Definition: ffmpeg.h:231
int stdin_interaction
Definition: ffmpeg_opt.c:170
FILE * logfile
Definition: ffmpeg.h:505
AVDictionary * opts
Definition: ffmpeg.h:570
Definition: eval.c:157
int do_benchmark
Definition: ffmpeg_opt.c:158
int audio_sync_method
Definition: ffmpeg_opt.c:154
int nb_max_frames
Definition: ffmpeg.h:169
int shortest
Definition: ffmpeg.h:576
int nb_output_streams
Definition: ffmpeg.c:153
#define height
void sub2video_update(InputStream *ist, int64_t heartbeat_pts, AVSubtitle *sub)
Definition: ffmpeg.c:240
int nb_streams
Definition: ffmpeg.h:413
int sync_file_index
Definition: ffmpeg.h:84
AVDictionary * resample_opts
Definition: ffmpeg.h:515
int seek_timestamp
Definition: ffmpeg.h:100
void reset_options(OptionsContext *o, int is_input)
AVFilterContext * filter
Definition: ffmpeg.h:263
int * formats
Definition: ffmpeg.h:280
SpecifierOpt * bitstream_filters
Definition: ffmpeg.h:170
int init_complex_filtergraph(FilterGraph *fg)
AVCodec * dec
Definition: ffmpeg.h:308
int top_field_first
Definition: ffmpeg.h:337
int file_index
Definition: ffmpeg.h:299
int64_t filter_in_rescale_delta_last
Definition: ffmpeg.h:322
int wrap_correction_done
Definition: ffmpeg.h:320
int ist_in_filtergraph(FilterGraph *fg, InputStream *ist)
int filter_complex_nbthreads
Definition: ffmpeg_opt.c:174
SpecifierOpt * disposition
Definition: ffmpeg.h:226
int64_t next_dts
Definition: ffmpeg.h:315
unsigned int initialize
marks if sub2video_update should force an initialization
Definition: ffmpeg.h:355
SpecifierOpt * enc_time_bases
Definition: ffmpeg.h:232
uint64_t channel_layout
Definition: ffmpeg.h:277
AVFifoBuffer * sub_queue
queue of AVSubtitle* before filter init
Definition: ffmpeg.h:352
Callback for checking whether to abort blocking functions.
Definition: avio.h:58
libswresample public header
int nb_top_field_first
Definition: ffmpeg.h:193
int hw_device_setup_for_filter(FilterGraph *fg)
Definition: ffmpeg_hw.c:525
AVRational sample_aspect_ratio
Definition: ffmpeg.h:251
int rate_emu
Definition: ffmpeg.h:416
int nb_discard
Definition: ffmpeg.h:225
int sample_rate
Definition: ffmpeg.h:253
void check_filter_outputs(void)
int ffmpeg_parse_options(int argc, char **argv)
Definition: ffmpeg_opt.c:3324
AVFilterContext * filter
Definition: ffmpeg.h:239
int nb_filters
Definition: ffmpeg.h:203
int64_t start_time
Definition: ffmpeg.h:98
int64_t start
Definition: ffmpeg.h:312
int loop
Definition: ffmpeg.h:402
uint64_t nb_packets
Definition: ffmpeg.h:386
int seek_timestamp
Definition: ffmpeg.h:411
int64_t last_mux_dts
Definition: ffmpeg.h:462
int video_sync_method
Definition: ffmpeg_opt.c:155
int format
Definition: ffmpeg.h:248
char * sdp_filename
Definition: ffmpeg_opt.c:147
SpecifierOpt * apad
Definition: ffmpeg.h:222
int dr1
Definition: ffmpeg.h:358
int nb_hwaccel_devices
Definition: ffmpeg.h:130
AudioChannelMap * audio_channel_maps
Definition: ffmpeg.h:139
int nb_disposition
Definition: ffmpeg.h:227
const char * arg
Definition: jacosubdec.c:66
SpecifierOpt * codec_tags
Definition: ffmpeg.h:172
SpecifierOpt * rc_overrides
Definition: ffmpeg.h:184
size_t muxing_queue_data_threshold
Definition: ffmpeg.h:559
int video_disable
Definition: ffmpeg.h:157
int eof
Definition: ffmpeg.h:259
int nb_input_files
Definition: ffmpeg.c:150
int force_fps
Definition: ffmpeg.h:483
int hw_device_setup_for_encode(OutputStream *ost)
Definition: ffmpeg_hw.c:419
int nb_codec_names
Definition: ffmpeg.h:104
int qp_hist
Definition: ffmpeg_opt.c:169
StreamMap * stream_maps
Definition: ffmpeg.h:137
float frame_drop_threshold
Definition: ffmpeg_opt.c:156
uint64_t limit_filesize
Definition: ffmpeg.h:151
const char * format
Definition: ffmpeg.h:101
int nb_passlogfiles
Definition: ffmpeg.h:215
int filter_nbthreads
Definition: ffmpeg_opt.c:173
int nb_force_fps
Definition: ffmpeg.h:181
OutputFilter * filter
Definition: ffmpeg.h:507
const char * name
Definition: ffmpeg.h:74
AVRational frame_aspect_ratio
Definition: ffmpeg.h:489
int nb_sample_fmts
Definition: ffmpeg.h:175
int file_index
Definition: ffmpeg.h:82
int nb_audio_channel_maps
Definition: ffmpeg.h:140
AVRational mux_timebase
Definition: ffmpeg.h:464
SpecifierOpt * filter_scripts
Definition: ffmpeg.h:204
int nb_attachments
Definition: ffmpeg.h:145
char * linklabel
Definition: ffmpeg.h:86
#define b
Definition: input.c:41
int nb_hwaccel_output_formats
Definition: ffmpeg.h:132
int nb_ts_scale
Definition: ffmpeg.h:124
int is_cfr
Definition: ffmpeg.h:482
SpecifierOpt * audio_channels
Definition: ffmpeg.h:105
uint64_t * channel_layouts
Definition: ffmpeg.h:281
int saw_first_ts
Definition: ffmpeg.h:334
int nb_audio_sample_rate
Definition: ffmpeg.h:108
int abort_on_flags
Definition: ffmpeg_opt.c:167
SpecifierOpt * time_bases
Definition: ffmpeg.h:230
int metadata_chapters_manual
Definition: ffmpeg.h:143
struct OutputStream * ost
Definition: ffmpeg.h:264
int accurate_seek
Definition: ffmpeg.h:120
char * apad
Definition: ffmpeg.h:516
typedef void(APIENTRY *FF_PFNGLACTIVETEXTUREPROC)(GLenum texture)
SpecifierOpt * pass
Definition: ffmpeg.h:212
int64_t nb_samples
Definition: ffmpeg.h:331
SpecifierOpt * audio_sample_rate
Definition: ffmpeg.h:107
int hw_device_setup_for_decode(InputStream *ist)
Definition: ffmpeg_hw.c:303
int64_t duration
Definition: ffmpeg.h:403
void opt_output_file(void *optctx, const char *filename)
int width
Definition: ffmpeg.h:250
int nb_autoscale
Definition: ffmpeg.h:235
int ifilter_parameters_from_frame(InputFilter *ifilter, const AVFrame *frame)
SpecifierOpt * dump_attachment
Definition: ffmpeg.h:125
void assert_avoptions(AVDictionary *m)
Definition: ffmpeg.c:659
SpecifierOpt * canvas_sizes
Definition: ffmpeg.h:210
int nb_codec_tags
Definition: ffmpeg.h:173
int qsv_init(AVCodecContext *s)
Definition: ffmpeg_qsv.c:72
int64_t last_ts
Definition: ffmpeg.h:409
SpecifierOpt * metadata_map
Definition: ffmpeg.h:194
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
#define s(width, name)
Definition: cbs_vp9.c:257
int do_pkt_dump
Definition: ffmpeg_opt.c:161
int64_t max_frames
Definition: ffmpeg.h:472
int audio_channels_mapped
Definition: ffmpeg.h:502
SpecifierOpt * copy_prior_start
Definition: ffmpeg.h:200
SpecifierOpt * frame_aspect_ratios
Definition: ffmpeg.h:182
SpecifierOpt * frame_sizes
Definition: ffmpeg.h:111
int stream_idx
Definition: ffmpeg.h:90
int sample_rate
Definition: ffmpeg.h:276
int nb_hwaccels
Definition: ffmpeg.h:128
int inputs_done
Definition: ffmpeg.h:526
int vstats_version
Definition: ffmpeg_opt.c:175
HWDevice * hw_device_get_by_name(const char *name)
Definition: ffmpeg_hw.c:44
int start_at_zero
Definition: ffmpeg_opt.c:163
int ret
Definition: ffmpeg.h:345
int audio_volume
Definition: ffmpeg_opt.c:153
Stream structure.
Definition: avformat.h:880
A linked-list of the inputs/outputs of the filter chain.
Definition: avfilter.h:1018
InputFilter ** filters
Definition: ffmpeg.h:362
int fix_sub_duration
Definition: ffmpeg.h:342
int64_t recording_time
Definition: ffmpeg.h:412
SpecifierOpt * hwaccels
Definition: ffmpeg.h:127
SpecifierOpt * autoscale
Definition: ffmpeg.h:234
Definition: ffmpeg.h:66
int(* init)(AVCodecContext *s)
Definition: ffmpeg.h:68
SpecifierOpt * frame_rates
Definition: ffmpeg.h:109
AVStream * st
Definition: ffmpeg.h:300
int nb_presets
Definition: ffmpeg.h:197
int ost_index
Definition: ffmpeg.h:571
struct InputStream * sync_ist
Definition: ffmpeg.h:456
Libavcodec external API header.
double ts_scale
Definition: ffmpeg.h:333
int64_t recording_time
Definition: ffmpeg.h:149
int unavailable
Definition: ffmpeg.h:518
void term_exit(void)
Definition: ffmpeg.c:336
int chapters_input_file
Definition: ffmpeg.h:147
int64_t stop_time
Definition: ffmpeg.h:150
float max_error_rate
Definition: ffmpeg_opt.c:172
uint64_t frames_encoded
Definition: ffmpeg.h:541
int nb_copy_prior_start
Definition: ffmpeg.h:201
AVFifoBuffer * muxing_queue
Definition: ffmpeg.h:550
OutputStream ** output_streams
Definition: ffmpeg.c:152
int ist_index
Definition: ffmpeg.h:401
const char * graph_desc
Definition: ffmpeg.h:287
int guess_layout_max
Definition: ffmpeg.h:338
int64_t start_time
Definition: ffmpeg.h:410
main external API structure.
Definition: avcodec.h:531
InputFile ** input_files
Definition: ffmpeg.c:149
int rate_emu
Definition: ffmpeg.h:119
int * sample_rates
Definition: ffmpeg.h:282
int metadata_streams_manual
Definition: ffmpeg.h:142
const char * attachment_filename
Definition: ffmpeg.h:528
int configure_output_filter(FilterGraph *fg, OutputFilter *ofilter, AVFilterInOut *out)
a very simple circular buffer FIFO implementation
AVRational time_base
Definition: ffmpeg.h:405
AVCodecContext * enc_ctx
Definition: ffmpeg.h:469
int audio_disable
Definition: ffmpeg.h:158
int64_t input_ts_offset
Definition: ffmpeg.h:117
int nb_filtergraphs
Definition: ffmpeg.c:158
AVFrame * decoded_frame
Definition: ffmpeg.h:309
AVBufferRef * hw_frames_ctx
Definition: ffmpeg.h:257
int nb_bitstream_filters
Definition: ffmpeg.h:171
SpecifierOpt * top_field_first
Definition: ffmpeg.h:192
int channels
Definition: ffmpeg.h:254
size_t muxing_queue_data_size
Definition: ffmpeg.h:556
int * audio_channels_map
Definition: ffmpeg.h:501
int configure_filtergraph(FilterGraph *fg)
Rational number (pair of numerator and denominator).
Definition: rational.h:58
int file_index
Definition: ffmpeg.h:448
int metadata_global_manual
Definition: ffmpeg.h:141
double rotate_override_value
Definition: ffmpeg.h:487
int64_t sync_opts
Definition: ffmpeg.h:457
char * vstats_filename
Definition: ffmpeg_opt.c:146
AVCodecContext * dec_ctx
Definition: ffmpeg.h:307
SpecifierOpt * force_fps
Definition: ffmpeg.h:180
char * disposition
Definition: ffmpeg.h:531
int filtergraph_is_simple(FilterGraph *fg)
AVMediaType
Definition: avutil.h:199
int nb_fix_sub_duration
Definition: ffmpeg.h:209
int nb_inter_matrices
Definition: ffmpeg.h:189
int nb_streams_warn
Definition: ffmpeg.h:415
AVDictionary * decoder_opts
Definition: ffmpeg.h:335
int shortest
Definition: ffmpeg.h:154
int autorotate
Definition: ffmpeg.h:340
int frame_bits_per_raw_sample
Definition: ffmpeg_opt.c:171
int64_t ts_offset
Definition: ffmpeg.h:408
int nb_qscale
Definition: ffmpeg.h:177
char * filters_script
filtergraph script associated to the -filter_script option
Definition: ffmpeg.h:510
int nb_enc_time_bases
Definition: ffmpeg.h:233
SpecifierOpt * hwaccel_devices
Definition: ffmpeg.h:129
int nb_input_streams
Definition: ffmpeg.c:148
float audio_drift_threshold
Definition: ffmpeg_opt.c:149
AVFrame * filtered_frame
Definition: ffmpeg.h:473
int nb_autorotate
Definition: ffmpeg.h:134
int nb_audio_channels
Definition: ffmpeg.h:106
int source_index
Definition: ffmpeg.h:450
InputStream ** input_streams
Definition: ffmpeg.c:147
int copy_prior_start
Definition: ffmpeg.h:530
SpecifierOpt * metadata
Definition: ffmpeg.h:166
AVIOContext * progress_avio
Definition: ffmpeg.c:143
#define flags(name, subs,...)
Definition: cbs_av1.c:560
int nb_filters
Definition: ffmpeg.h:363
int autoscale
Definition: ffmpeg.h:486
AVExpr * forced_keyframes_pexpr
Definition: ffmpeg.h:497
static int hwaccel_retrieve_data(AVCodecContext *avctx, AVFrame *input)
Definition: ffmpeg_hw.c:474
int64_t dts
dts of the last packet read for this stream (in AV_TIME_BASE units)
Definition: ffmpeg.h:316
int forced_kf_count
Definition: ffmpeg.h:494
int nb_intra_matrices
Definition: ffmpeg.h:187
OSTFinished finished
Definition: ffmpeg.h:517
char * forced_keyframes
Definition: ffmpeg.h:496
int nb_frame_rates
Definition: ffmpeg.h:110
uint64_t data_size
Definition: ffmpeg.h:384
const AVIOInterruptCB int_cb
Definition: ffmpeg.c:490
A reference to a data buffer.
Definition: buffer.h:81
int64_t next_pts
synthetic pts for the next decode frame (in AV_TIME_BASE units)
Definition: ffmpeg.h:318
static AVStream * ost
Main libavformat public API header.
int
SpecifierOpt * max_muxing_queue_size
Definition: ffmpeg.h:216
int reconfiguration
Definition: ffmpeg.h:290
struct FilterGraph * graph
Definition: ffmpeg.h:265
uint64_t limit_filesize
Definition: ffmpeg.h:574
const OptionDef options[]
Definition: ffmpeg_opt.c:3400
SpecifierOpt * presets
Definition: ffmpeg.h:196
SpecifierOpt * program
Definition: ffmpeg.h:228
int reinit_filters
Definition: ffmpeg.h:365
int nb_frame_sizes
Definition: ffmpeg.h:112
AVCodecParameters * ref_par
Definition: ffmpeg.h:470
Utilties for rational number calculation.
OptionGroup * g
Definition: ffmpeg.h:95
SpecifierOpt * inter_matrices
Definition: ffmpeg.h:188
const char *const forced_keyframes_const_names[]
Definition: ffmpeg.c:114
AVBufferRef * device_ref
Definition: ffmpeg.h:76
SpecifierOpt * forced_key_frames
Definition: ffmpeg.h:178
uint64_t samples_encoded
Definition: ffmpeg.h:542
const char ** attachments
Definition: ffmpeg.h:144
int nb_max_muxing_queue_size
Definition: ffmpeg.h:217
AVFrame * last_frame
Definition: ffmpeg.h:474
SpecifierOpt * muxing_queue_data_threshold
Definition: ffmpeg.h:218
uint64_t channel_layout
Definition: ffmpeg.h:255
AVBSFContext * bsf_ctx
Definition: ffmpeg.h:467
int copy_ts
Definition: ffmpeg_opt.c:162
AVFormatContext * ctx
Definition: ffmpeg.h:398
int pict_type
Definition: ffmpeg.h:562
int stream_index
Definition: ffmpeg.h:83
AVCodec * enc
Definition: ffmpeg.h:471
AVSubtitle subtitle
Definition: ffmpeg.h:346
enum AVPixelFormat pix_fmt
Definition: ffmpeg.h:70
int eof_reached
Definition: ffmpeg.h:399
int nb_metadata_map
Definition: ffmpeg.h:195
int forced_kf_index
Definition: ffmpeg.h:495
int nb_rc_overrides
Definition: ffmpeg.h:185
int do_deinterlace
Definition: ffmpeg_opt.c:157
SpecifierOpt * fix_sub_duration
Definition: ffmpeg.h:208
Definition: ffmpeg.h:434
pixel format definitions
AVHWDeviceType
Definition: hwcontext.h:27
char * avfilter
Definition: ffmpeg.h:508
SpecifierOpt * autorotate
Definition: ffmpeg.h:133
int hwaccel_decode_init(AVCodecContext *avctx)
Definition: ffmpeg_hw.c:516
uint8_t * name
Definition: ffmpeg.h:242
float dts_delta_threshold
Definition: ffmpeg_opt.c:150
void * hwaccel_ctx
Definition: ffmpeg.h:374
int guess_input_channel_layout(InputStream *ist)
Definition: ffmpeg.c:2100
int top_field_first
Definition: ffmpeg.h:484
OutputFilter ** outputs
Definition: ffmpeg.h:294
SpecifierOpt * max_frames
Definition: ffmpeg.h:168
int nb_copy_initial_nonkeyframes
Definition: ffmpeg.h:199
int disabled
Definition: ffmpeg.h:81
AVRational frame_rate
Definition: ffmpeg.h:274
AVFormatContext * ctx
Definition: ffmpeg.h:569
int nb_output_files
Definition: ffmpeg.c:155
int hw_device_init_from_string(const char *arg, HWDevice **dev)
Definition: ffmpeg_hw.c:94
SpecifierOpt * codec_names
Definition: ffmpeg.h:103
enum AVPixelFormat choose_pixel_fmt(AVStream *st, AVCodecContext *avctx, const AVCodec *codec, enum AVPixelFormat target)
Definition: ffmpeg_filter.c:63
void show_usage(void)
Definition: ffmpeg_opt.c:3273
int thread_queue_size
Definition: ffmpeg.h:121
An instance of a filter.
Definition: avfilter.h:341
char * hwaccel_device
Definition: ffmpeg.h:370
AVDictionary * encoder_opts
Definition: ffmpeg.h:512
FILE * out
Definition: movenc.c:54
InputFilter ** inputs
Definition: ffmpeg.h:292
char * videotoolbox_pixfmt
int sync_stream_index
Definition: ffmpeg.h:85
static float sub(float src0, float src1)
int format
Definition: ffmpeg.h:275
int copy_tb
Definition: ffmpeg_opt.c:164
int64_t min_pts
Definition: ffmpeg.h:324
int initialized
Definition: ffmpeg.h:524
int init_simple_filtergraph(InputStream *ist, OutputStream *ost)
int discard
Definition: ffmpeg.h:301
int64_t first_pts
Definition: ffmpeg.h:460
int nb_inputs
Definition: ffmpeg.h:293
int index
Definition: ffmpeg.h:449
AVPixelFormat
Pixel format.
Definition: pixfmt.h:64
OSTFinished
Definition: ffmpeg.h:442
int nb_reinit_filters
Definition: ffmpeg.h:207
AVFifoBuffer * frame_queue
Definition: ffmpeg.h:245
int debug_ts
Definition: ffmpeg_opt.c:165
static void hwaccel_uninit(AVCodecContext *avctx)
Definition: decode.c:1287
int nb_guess_layout_max
Definition: ffmpeg.h:221
void term_init(void)
Definition: ffmpeg.c:396
int nb_frame_aspect_ratios
Definition: ffmpeg.h:183
const HWAccel hwaccels[]
Definition: ffmpeg_opt.c:135
int videotoolbox_init(AVCodecContext *s)
Definition: ffmpeg.h:433
simple arithmetic expression evaluator
const char * name
Definition: opengl_enc.c:102
int subtitle_disable
Definition: ffmpeg.h:159