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