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