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 <stdatomic.h>
25 #include <stdint.h>
26 #include <stdio.h>
27 #include <signal.h>
28 
29 #include "cmdutils.h"
30 #include "sync_queue.h"
31 
32 #include "libavformat/avformat.h"
33 #include "libavformat/avio.h"
34 
35 #include "libavcodec/avcodec.h"
36 #include "libavcodec/bsf.h"
37 
38 #include "libavfilter/avfilter.h"
39 
40 #include "libavutil/avutil.h"
41 #include "libavutil/dict.h"
42 #include "libavutil/eval.h"
43 #include "libavutil/fifo.h"
44 #include "libavutil/hwcontext.h"
45 #include "libavutil/pixfmt.h"
46 #include "libavutil/rational.h"
47 #include "libavutil/thread.h"
49 
51 
52 // deprecated features
53 #define FFMPEG_OPT_PSNR 1
54 #define FFMPEG_OPT_MAP_CHANNEL 1
55 #define FFMPEG_OPT_MAP_SYNC 1
56 #define FFMPEG_ROTATION_METADATA 1
57 
59  VSYNC_AUTO = -1,
65 };
66 
67 #define MAX_STREAMS 1024 /* arbitrary sanity check value */
68 
69 enum HWAccelID {
73 };
74 
75 typedef struct HWDevice {
76  const char *name;
79 } HWDevice;
80 
81 /* select an input stream for an output stream */
82 typedef struct StreamMap {
83  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 #if FFMPEG_OPT_MAP_CHANNEL
90 typedef struct {
91  int file_idx, stream_idx, channel_idx; // input
92  int ofile_idx, ostream_idx; // output
94 #endif
95 
96 typedef struct OptionsContext {
98 
99  /* input/output options */
100  int64_t start_time;
101  int64_t start_time_eof;
103  const char *format;
104 
121 
122  /* input options */
124  int loop;
125  int rate_emu;
126  float readrate;
131 
144 
145  /* output options */
148 #if FFMPEG_OPT_MAP_CHANNEL
149  AudioChannelMap *audio_channel_maps; /* one info entry per -map_channel */
150  int nb_audio_channel_maps; /* number of (valid) -map_channel settings */
151 #endif
152  const char **attachments;
154 
156 
157  int64_t recording_time;
158  int64_t stop_time;
159  int64_t limit_filesize;
160  float mux_preload;
163  int shortest;
164  int bitexact;
165 
170 
171  /* indexed by output file stream index */
174 
232  int nb_pass;
242  int nb_apad;
270 
271 typedef struct InputFilter {
273  struct InputStream *ist;
275  uint8_t *name;
276  enum AVMediaType type; // AVMEDIA_TYPE_SUBTITLE for sub2video
277 
279 
280  // parameters configured for this input
281  int format;
282 
283  int width, height;
285 
288 
291 
292  int eof;
293 } InputFilter;
294 
295 typedef struct OutputFilter {
297  struct OutputStream *ost;
299  uint8_t *name;
300 
301  /* temporary storage until stream maps are processed */
304 
305  /* desired output stream properties */
306  int width, height;
308  int format;
311 
312  // those are only set if no format is specified and the encoder gives us multiple options
313  // They point directly to the relevant lists of the encoder.
314  const int *formats;
316  const int *sample_rates;
317 } OutputFilter;
318 
319 typedef struct FilterGraph {
320  int index;
321  const char *graph_desc;
322 
325  // true when the filtergraph contains only meta filters
326  // that do not modify the frame data
327  int is_meta;
328 
333 } FilterGraph;
334 
335 typedef struct InputStream {
338  int discard; /* true if stream data should be discarded */
340  int decoding_needed; /* non zero if the packets must be decoded in 'raw_fifo', see DECODING_FOR_* */
341 #define DECODING_FOR_OST 1
342 #define DECODING_FOR_FILTER 2
343  int processing_needed; /* non zero if the packets must be processed */
344  // should attach FrameData as opaque_ref after decoding
346 
347  /**
348  * Codec parameters - to be used by the decoding/streamcopy code.
349  * st->codecpar should not be accessed, because it may be modified
350  * concurrently by the demuxing thread.
351  */
354  const AVCodec *dec;
357 
359 
360  int64_t prev_pkt_pts;
361  int64_t start; /* time when read started */
362  /* predicted dts of the next packet read for this stream or (when there are
363  * several frames in a packet) of the next frame in current packet (in AV_TIME_BASE units) */
364  int64_t next_dts;
365  int64_t first_dts; ///< dts of the first packet read for this stream (in AV_TIME_BASE units)
366  int64_t dts; ///< dts of the last packet read for this stream (in AV_TIME_BASE units)
367 
368  int64_t next_pts; ///< synthetic pts for the next decode frame (in AV_TIME_BASE units)
369  int64_t pts; ///< current pts of the decoded frame (in AV_TIME_BASE units)
371 
372  // the value of AVCodecParserContext.repeat_pict from the AVStream parser
373  // for the last packet returned from ifile_get_packet()
374  // -1 if unknown
375  // FIXME: this is a hack, the avstream parser should not be used
377 
379 
380  int64_t min_pts; /* pts with the smallest value in a current stream */
381  int64_t max_pts; /* pts with the higher value in a current stream */
382 
383  // when forcing constant input framerate through -r,
384  // this contains the pts that will be given to the next decoded frame
385  int64_t cfr_next_pts;
386 
387  int64_t nb_samples; /* number of samples in the last decoded audio frame before looping */
388 
389  double ts_scale;
392  AVRational framerate; /* framerate forced with -r */
395 
397 
399  struct { /* previous decoded subtitle and related variables */
401  int ret;
403  } prev_sub;
404 
405  struct sub2video {
406  int64_t last_pts;
407  int64_t end_pts;
408  AVFifo *sub_queue; ///< queue of AVSubtitle* before filter init
410  int w, h;
411  unsigned int initialize; ///< marks if sub2video_update should force an initialization
412  } sub2video;
413 
414  /* decoded data from this stream goes into all those filters
415  * currently video and audio only */
418 
420 
421  /* hwaccel options */
426 
429 
430  /* stats */
431  // combined size of all the packets read
432  uint64_t data_size;
433  /* number of packets successfully read for this stream */
434  uint64_t nb_packets;
435  // number of frames/samples retrieved from the decoder
436  uint64_t frames_decoded;
437  uint64_t samples_decoded;
438 
439  int64_t *dts_buffer;
441 
442  int got_output;
443 } InputStream;
444 
445 typedef struct LastFrameDuration {
447  int64_t duration;
449 
450 typedef struct InputFile {
451  int index;
452 
454  int eof_reached; /* true if eof reached */
455  int eagain; /* true if last read attempt returned EAGAIN */
458  /**
459  * Effective format start time based on enabled streams.
460  */
462  int64_t ts_offset;
463  /**
464  * Extra timestamp offset added by discontinuity handling.
465  */
467  int64_t last_ts;
468  int64_t start_time; /* user-specified start time in AV_TIME_BASE or AV_NOPTS_VALUE */
469  int64_t recording_time;
470 
471  /* streams that ffmpeg is aware of;
472  * there may be extra streams in ctx that are not mapped to an InputStream
473  * if new streams appear dynamically during demuxing */
476 
477  int rate_emu;
478  float readrate;
480 
481  /* when looping the input file, this queue is used by decoders to report
482  * the last frame duration back to the demuxer thread */
485 } InputFile;
486 
494 };
495 
496 #define ABORT_ON_FLAG_EMPTY_OUTPUT (1 << 0)
497 #define ABORT_ON_FLAG_EMPTY_OUTPUT_STREAM (1 << 1)
498 
518 };
519 
520 typedef struct EncStatsComponent {
522 
523  uint8_t *str;
524  size_t str_len;
526 
527 typedef struct EncStats {
530 
532 } EncStats;
533 
534 extern const char *const forced_keyframes_const_names[];
535 
536 typedef enum {
539 } OSTFinished ;
540 
541 enum {
544 };
545 
546 typedef struct KeyframeForceCtx {
547  int type;
548 
549  int64_t ref_pts;
550 
551  // timestamps of the forced keyframes, in AV_TIME_BASE_Q
552  int64_t *pts;
553  int nb_pts;
554  int index;
555 
558 
561 
562 typedef struct OutputStream {
563  const AVClass *class;
564 
565  int file_index; /* file index */
566  int index; /* stream index in the output file */
567 
568  /* input stream that is the source for this output stream;
569  * may be NULL for streams with no well-defined source, e.g.
570  * attachments or outputs from complex filtergraphs */
572 
573  AVStream *st; /* stream in the output file */
574  /* number of frames emitted by the video-encoding sync code */
576  /* predicted pts of the next frame to be encoded
577  * audio/video encoding only */
578  int64_t next_pts;
579  /* dts of the last packet sent to the muxing queue, in AV_TIME_BASE_Q */
580  int64_t last_mux_dts;
581  /* pts of the last frame received from the filters, in AV_TIME_BASE_Q */
583 
584  // timestamp from which the streamcopied streams should start,
585  // in AV_TIME_BASE_Q;
586  // everything before it should be discarded
587  int64_t ts_copy_start;
588 
589  // the timebase of the packets sent to the muxer
592 
598  int64_t last_dropped;
599  int64_t last_nb0_frames[3];
600 
601  /* video only */
605  int is_cfr;
608 #if FFMPEG_ROTATION_METADATA
610 #endif
612  int bitexact;
614 #if FFMPEG_ROTATION_METADATA
616 #endif
617 
619 
621 
622  /* audio only */
623 #if FFMPEG_OPT_MAP_CHANNEL
624  int *audio_channels_map; /* list of the channels id to pick from the source stream */
625  int audio_channels_mapped; /* number of channels in audio_channels_map */
626 #endif
627 
629  FILE *logfile;
630 
632  char *avfilter;
633  char *filters; ///< filtergraph associated to the -filter option
634  char *filters_script; ///< filtergraph script associated to the -filter_script option
635 
639  char *apad;
640  OSTFinished finished; /* no more packets should be written for this stream */
641  int unavailable; /* true if the steram is unavailable (possibly temporarily) */
642 
643  // init_output_stream() has been called for this stream
644  // The encoder and the bitstream filters have been initialized and the stream
645  // parameters are set in the AVStream.
647 
649 
650  const char *attachment_filename;
654 
656 
657  /* stats */
658  // combined size of all the packets sent to the muxer
659  uint64_t data_size_mux;
660  // combined size of all the packets received from the encoder
661  uint64_t data_size_enc;
662  // number of packets send to the muxer
664  // number of frames/samples sent to the encoder
665  uint64_t frames_encoded;
666  uint64_t samples_encoded;
667  // number of packets received from the encoder
668  uint64_t packets_encoded;
669 
670  /* packet quality factor */
671  int quality;
672 
673  /* packet picture type */
675 
676  /* frame encode sum of squared error values */
677  int64_t error[4];
678 
681 
684 
685  /*
686  * bool on whether this stream should be utilized for splitting
687  * subtitles utilizing fix_sub_duration at random access points.
688  */
690 } OutputStream;
691 
692 typedef struct OutputFile {
693  const AVClass *class;
694 
695  int index;
696 
698  const char *url;
699 
702 
704 
705  int64_t recording_time; ///< desired length of the resulting file in microseconds == AV_TIME_BASE units
706  int64_t start_time; ///< start time in microseconds == AV_TIME_BASE units
707 
708  int shortest;
709  int bitexact;
710 } OutputFile;
711 
712 extern InputFile **input_files;
713 extern int nb_input_files;
714 
715 extern OutputFile **output_files;
716 extern int nb_output_files;
717 
718 extern FilterGraph **filtergraphs;
719 extern int nb_filtergraphs;
720 
721 extern char *vstats_filename;
722 extern char *sdp_filename;
723 
724 extern float audio_drift_threshold;
725 extern float dts_delta_threshold;
726 extern float dts_error_threshold;
727 
729 extern float frame_drop_threshold;
730 extern int do_benchmark;
731 extern int do_benchmark_all;
732 extern int do_hex_dump;
733 extern int do_pkt_dump;
734 extern int copy_ts;
735 extern int start_at_zero;
736 extern int copy_tb;
737 extern int debug_ts;
738 extern int exit_on_error;
739 extern int abort_on_flags;
740 extern int print_stats;
741 extern int64_t stats_period;
742 extern int qp_hist;
743 extern int stdin_interaction;
744 extern AVIOContext *progress_avio;
745 extern float max_error_rate;
746 
747 extern char *filter_nbthreads;
748 extern int filter_complex_nbthreads;
749 extern int vstats_version;
750 extern int auto_conversion_filters;
751 
752 extern const AVIOInterruptCB int_cb;
753 
754 extern const OptionDef options[];
755 extern HWDevice *filter_hw_device;
756 
757 extern unsigned nb_output_dumped;
758 extern int main_return_code;
759 
760 extern int ignore_unknown_streams;
761 extern int copy_unknown_streams;
762 
763 extern int recast_media;
764 
765 #if FFMPEG_OPT_PSNR
766 extern int do_psnr;
767 #endif
768 
769 void term_init(void);
770 void term_exit(void);
771 
772 void show_usage(void);
773 
776 
777 void assert_file_overwrite(const char *filename);
778 char *file_read(const char *filename);
780 const AVCodec *find_codec_or_die(void *logctx, const char *name,
781  enum AVMediaType type, int encoder);
782 int parse_and_set_vsync(const char *arg, int *vsync_var, int file_idx, int st_idx, int is_global);
783 
785 void check_filter_outputs(void);
789 
790 void sub2video_update(InputStream *ist, int64_t heartbeat_pts, AVSubtitle *sub);
791 
793 
794 int ffmpeg_parse_options(int argc, char **argv);
795 
797  const AVFrame *frame, const AVPacket *pkt,
798  uint64_t frame_num);
799 
800 HWDevice *hw_device_get_by_name(const char *name);
801 int hw_device_init_from_string(const char *arg, HWDevice **dev);
802 void hw_device_free_all(void);
803 
807 
809 
810 /*
811  * Initialize muxing state for the given stream, should be called
812  * after the codec/streamcopy setup has been done.
813  *
814  * Open the muxer once all the streams have been initialized.
815  */
818 int of_open(const OptionsContext *o, const char *filename);
819 void of_close(OutputFile **pof);
820 
821 void of_enc_stats_close(void);
822 
823 /*
824  * Send a single packet to the output, applying any bitstream filters
825  * associated with the output stream. This may result in any number
826  * of packets actually being written, depending on what bitstream
827  * filters are applied. The supplied packet is consumed and will be
828  * blank (as if newly-allocated) when this function returns.
829  *
830  * If eof is set, instead indicate EOF to all bitstream filters and
831  * therefore flush any delayed packets to the output. A blank packet
832  * must be supplied in this case.
833  */
834 void of_output_packet(OutputFile *of, AVPacket *pkt, OutputStream *ost, int eof);
835 int64_t of_filesize(OutputFile *of);
836 
837 int ifile_open(const OptionsContext *o, const char *filename);
838 void ifile_close(InputFile **f);
839 
840 /**
841  * Get next input packet from the demuxer.
842  *
843  * @param pkt the packet is written here when this function returns 0
844  * @return
845  * - 0 when a packet has been read successfully
846  * - 1 when stream end was reached, but the stream is looped;
847  * caller should flush decoders and read from this demuxer again
848  * - a negative error code on failure
849  */
851 
852 /* iterate over all input streams in all input files;
853  * pass NULL to start iteration */
855 
856 #define SPECIFIER_OPT_FMT_str "%s"
857 #define SPECIFIER_OPT_FMT_i "%i"
858 #define SPECIFIER_OPT_FMT_i64 "%"PRId64
859 #define SPECIFIER_OPT_FMT_ui64 "%"PRIu64
860 #define SPECIFIER_OPT_FMT_f "%f"
861 #define SPECIFIER_OPT_FMT_dbl "%lf"
862 
863 #define WARN_MULTIPLE_OPT_USAGE(name, type, so, st)\
864 {\
865  char namestr[128] = "";\
866  const char *spec = so->specifier && so->specifier[0] ? so->specifier : "";\
867  for (int _i = 0; opt_name_##name[_i]; _i++)\
868  av_strlcatf(namestr, sizeof(namestr), "-%s%s", opt_name_##name[_i], opt_name_##name[_i+1] ? (opt_name_##name[_i+2] ? ", " : " or ") : "");\
869  av_log(NULL, AV_LOG_WARNING, "Multiple %s options specified for stream %d, only the last option '-%s%s%s "SPECIFIER_OPT_FMT_##type"' will be used.\n",\
870  namestr, st->index, opt_name_##name[0], spec[0] ? ":" : "", spec, so->u.type);\
871 }
872 
873 #define MATCH_PER_STREAM_OPT(name, type, outvar, fmtctx, st)\
874 {\
875  int _ret, _matches = 0;\
876  SpecifierOpt *so;\
877  for (int _i = 0; _i < o->nb_ ## name; _i++) {\
878  char *spec = o->name[_i].specifier;\
879  if ((_ret = check_stream_specifier(fmtctx, st, spec)) > 0) {\
880  outvar = o->name[_i].u.type;\
881  so = &o->name[_i];\
882  _matches++;\
883  } else if (_ret < 0)\
884  exit_program(1);\
885  }\
886  if (_matches > 1)\
887  WARN_MULTIPLE_OPT_USAGE(name, type, so, st);\
888 }
889 
890 #define MATCH_PER_TYPE_OPT(name, type, outvar, fmtctx, mediatype)\
891 {\
892  int i;\
893  for (i = 0; i < o->nb_ ## name; i++) {\
894  char *spec = o->name[i].specifier;\
895  if (!strcmp(spec, mediatype))\
896  outvar = o->name[i].u.type;\
897  }\
898 }
899 
900 extern const char * const opt_name_codec_names[];
901 extern const char * const opt_name_codec_tags[];
902 extern const char * const opt_name_frame_rates[];
903 extern const char * const opt_name_top_field_first[];
904 
905 #endif /* FFTOOLS_FFMPEG_H */
OptionsContext::readrate
float readrate
Definition: ffmpeg.h:126
AVSubtitle
Definition: avcodec.h:2330
OptionsContext::nb_hwaccels
int nb_hwaccels
Definition: ffmpeg.h:137
KeyframeForceCtx::pts
int64_t * pts
Definition: ffmpeg.h:552
OptionsContext::nb_codec_names
int nb_codec_names
Definition: ffmpeg.h:106
InputFilter::sample_aspect_ratio
AVRational sample_aspect_ratio
Definition: ffmpeg.h:284
AVCodec
AVCodec.
Definition: codec.h:184
OptionsContext::input_ts_offset
int64_t input_ts_offset
Definition: ffmpeg.h:123
of_open
int of_open(const OptionsContext *o, const char *filename)
Definition: ffmpeg_mux_init.c:2207
OptionsContext::enc_stats_post_fmt
SpecifierOpt * enc_stats_post_fmt
Definition: ffmpeg.h:265
InputFile::start_time
int64_t start_time
Definition: ffmpeg.h:468
AVPixelFormat
AVPixelFormat
Pixel format.
Definition: pixfmt.h:64
name
it s the only field you need to keep assuming you have a context There is some magic you don t need to care about around this just let it vf default minimum maximum flags name is the option name
Definition: writing_filters.txt:88
OptionsContext::stop_time
int64_t stop_time
Definition: ffmpeg.h:158
StreamMap::file_index
int file_index
Definition: ffmpeg.h:84
KeyframeForceCtx::dropped_keyframe
int dropped_keyframe
Definition: ffmpeg.h:559
OutputStream::sq_idx_mux
int sq_idx_mux
Definition: ffmpeg.h:680
OutputFilter::graph
struct FilterGraph * graph
Definition: ffmpeg.h:298
FKF_PREV_FORCED_T
@ FKF_PREV_FORCED_T
Definition: ffmpeg.h:491
OptionsContext::canvas_sizes
SpecifierOpt * canvas_sizes
Definition: ffmpeg.h:229
InputStream::hwaccel_device
char * hwaccel_device
Definition: ffmpeg.h:424
VSYNC_VFR
@ VSYNC_VFR
Definition: ffmpeg.h:62
EncStatsComponent::type
enum EncStatsType type
Definition: ffmpeg.h:521
OptionsContext::dump_attachment
SpecifierOpt * dump_attachment
Definition: ffmpeg.h:134
OutputStream::attachment_filename
const char * attachment_filename
Definition: ffmpeg.h:650
OutputFilter::ch_layouts
const AVChannelLayout * ch_layouts
Definition: ffmpeg.h:315
configure_filtergraph
int configure_filtergraph(FilterGraph *fg)
Definition: ffmpeg_filter.c:1112
OutputStream::ts_copy_start
int64_t ts_copy_start
Definition: ffmpeg.h:587
OptionsContext::nb_audio_sample_rate
int nb_audio_sample_rate
Definition: ffmpeg.h:112
nb_filtergraphs
int nb_filtergraphs
Definition: ffmpeg.c:150
OptionsContext::nb_max_frame_rates
int nb_max_frame_rates
Definition: ffmpeg.h:116
OptionsContext::intra_matrices
SpecifierOpt * intra_matrices
Definition: ffmpeg.h:203
InputStream::framerate_guessed
AVRational framerate_guessed
Definition: ffmpeg.h:358
InputFilter::width
int width
Definition: ffmpeg.h:283
OptionsContext::nb_time_bases
int nb_time_bases
Definition: ffmpeg.h:250
InputFilter::displaymatrix
int32_t * displaymatrix
Definition: ffmpeg.h:290
ENC_STATS_PTS
@ ENC_STATS_PTS
Definition: ffmpeg.h:507
OptionsContext::nb_mux_stats
int nb_mux_stats
Definition: ffmpeg.h:262
ENC_STATS_FRAME_NUM_IN
@ ENC_STATS_FRAME_NUM_IN
Definition: ffmpeg.h:504
KF_FORCE_SOURCE_NO_DROP
@ KF_FORCE_SOURCE_NO_DROP
Definition: ffmpeg.h:543
FKF_PREV_FORCED_N
@ FKF_PREV_FORCED_N
Definition: ffmpeg.h:490
OptionsContext::nb_audio_ch_layouts
int nb_audio_ch_layouts
Definition: ffmpeg.h:108
FilterGraph::graph_desc
const char * graph_desc
Definition: ffmpeg.h:321
AVCodecParameters
This struct describes the properties of an encoded stream.
Definition: codec_par.h:54
InputStream::data_size
uint64_t data_size
Definition: ffmpeg.h:432
OutputStream::enc_ctx
AVCodecContext * enc_ctx
Definition: ffmpeg.h:593
OptionsContext::nb_rc_overrides
int nb_rc_overrides
Definition: ffmpeg.h:202
sub
static float sub(float src0, float src1)
Definition: dnn_backend_native_layer_mathbinary.c:31
thread.h
FilterGraph::inputs
InputFilter ** inputs
Definition: ffmpeg.h:329
ENC_STATS_DTS
@ ENC_STATS_DTS
Definition: ffmpeg.h:511
OptionsContext::hwaccels
SpecifierOpt * hwaccels
Definition: ffmpeg.h:136
OptionsContext::apad
SpecifierOpt * apad
Definition: ffmpeg.h:241
KeyframeForceCtx::nb_pts
int nb_pts
Definition: ffmpeg.h:553
frame_drop_threshold
float frame_drop_threshold
Definition: ffmpeg_opt.c:71
rational.h
InputStream::dec_ctx
AVCodecContext * dec_ctx
Definition: ffmpeg.h:353
InputStream::user_set_discard
int user_set_discard
Definition: ffmpeg.h:339
OptionsContext::rc_overrides
SpecifierOpt * rc_overrides
Definition: ffmpeg.h:201
OutputStream::packets_written
atomic_uint_least64_t packets_written
Definition: ffmpeg.h:663
OptionsContext::nb_metadata
int nb_metadata
Definition: ffmpeg.h:176
OptionsContext::nb_hwaccel_devices
int nb_hwaccel_devices
Definition: ffmpeg.h:139
ENC_STATS_AVG_BITRATE
@ ENC_STATS_AVG_BITRATE
Definition: ffmpeg.h:517
InputFile::readrate
float readrate
Definition: ffmpeg.h:478
OutputStream::keep_pix_fmt
int keep_pix_fmt
Definition: ffmpeg.h:655
parse_and_set_vsync
int parse_and_set_vsync(const char *arg, int *vsync_var, int file_idx, int st_idx, int is_global)
Definition: ffmpeg_opt.c:184
OptionsContext::nb_attachments
int nb_attachments
Definition: ffmpeg.h:153
OutputFile::start_time
int64_t start_time
start time in microseconds == AV_TIME_BASE units
Definition: ffmpeg.h:706
OptionsContext::frame_aspect_ratios
SpecifierOpt * frame_aspect_ratios
Definition: ffmpeg.h:193
progress_avio
AVIOContext * progress_avio
Definition: ffmpeg.c:141
InputFile::index
int index
Definition: ffmpeg.h:451
InputFilter::ch_layout
AVChannelLayout ch_layout
Definition: ffmpeg.h:287
ffmpeg_parse_options
int ffmpeg_parse_options(int argc, char **argv)
AVFrame
This structure describes decoded (raw) audio or video data.
Definition: frame.h:330
InputFile::rate_emu
int rate_emu
Definition: ffmpeg.h:477
of_filesize
int64_t of_filesize(OutputFile *of)
Definition: ffmpeg_mux.c:747
OutputStream::unavailable
int unavailable
Definition: ffmpeg.h:641
OptionsContext::mux_max_delay
float mux_max_delay
Definition: ffmpeg.h:161
OptionsContext::nb_chroma_intra_matrices
int nb_chroma_intra_matrices
Definition: ffmpeg.h:208
OptionsContext::nb_pass
int nb_pass
Definition: ffmpeg.h:232
OutputStream::rotate_overridden
int rotate_overridden
Definition: ffmpeg.h:609
FKF_T
@ FKF_T
Definition: ffmpeg.h:492
sync_queue.h
LastFrameDuration::stream_idx
int stream_idx
Definition: ffmpeg.h:446
ENC_STATS_LITERAL
@ ENC_STATS_LITERAL
Definition: ffmpeg.h:500
OptionsContext::subtitle_disable
int subtitle_disable
Definition: ffmpeg.h:168
OptionsContext::nb_apad
int nb_apad
Definition: ffmpeg.h:242
OptionsContext::qscale
SpecifierOpt * qscale
Definition: ffmpeg.h:185
OutputStream::index
int index
Definition: ffmpeg.h:566
b
#define b
Definition: input.c:41
FilterGraph::index
int index
Definition: ffmpeg.h:320
OptionsContext::inter_matrices
SpecifierOpt * inter_matrices
Definition: ffmpeg.h:205
AudioChannelMap::stream_idx
int stream_idx
Definition: ffmpeg.h:91
KeyframeForceCtx::type
int type
Definition: ffmpeg.h:547
InputStream::nb_filters
int nb_filters
Definition: ffmpeg.h:417
int_cb
const AVIOInterruptCB int_cb
Definition: ffmpeg.c:500
OutputStream::sws_dict
AVDictionary * sws_dict
Definition: ffmpeg.h:637
nb_output_files
int nb_output_files
Definition: ffmpeg.c:147
show_usage
void show_usage(void)
Definition: ffmpeg_opt.c:1206
FilterGraph::nb_inputs
int nb_inputs
Definition: ffmpeg.h:330
OptionsContext::bitexact
int bitexact
Definition: ffmpeg.h:164
OptionsContext::audio_channels
SpecifierOpt * audio_channels
Definition: ffmpeg.h:109
OptionsContext::nb_frame_rates
int nb_frame_rates
Definition: ffmpeg.h:114
AVDictionary
Definition: dict.c:32
HWDevice
Definition: ffmpeg.h:75
hw_device_init_from_string
int hw_device_init_from_string(const char *arg, HWDevice **dev)
Definition: ffmpeg_hw.c:94
nb_input_files
int nb_input_files
Definition: ffmpeg.c:144
enc_stats_write
void enc_stats_write(OutputStream *ost, EncStats *es, const AVFrame *frame, const AVPacket *pkt, uint64_t frame_num)
Definition: ffmpeg.c:811
LastFrameDuration
Definition: ffmpeg.h:445
InputStream::decoding_needed
int decoding_needed
Definition: ffmpeg.h:340
OptionsContext::format
const char * format
Definition: ffmpeg.h:103
InputFile::input_sync_ref
int input_sync_ref
Definition: ffmpeg.h:457
OutputStream::rotate_override_value
double rotate_override_value
Definition: ffmpeg.h:615
ost
static AVStream * ost
Definition: vaapi_transcode.c:42
OutputStream::last_dropped
int64_t last_dropped
Definition: ffmpeg.h:598
OptionsContext::nb_disposition
int nb_disposition
Definition: ffmpeg.h:246
OutputStream::fix_sub_duration_heartbeat
unsigned int fix_sub_duration_heartbeat
Definition: ffmpeg.h:689
qp_hist
int qp_hist
Definition: ffmpeg_opt.c:83
OutputStream::ist
InputStream * ist
Definition: ffmpeg.h:571
ENC_STATS_TIMEBASE_IN
@ ENC_STATS_TIMEBASE_IN
Definition: ffmpeg.h:506
AVIOInterruptCB
Callback for checking whether to abort blocking functions.
Definition: avio.h:59
OptionDef
Definition: cmdutils.h:146
InputFilter::ist
struct InputStream * ist
Definition: ffmpeg.h:273
init_simple_filtergraph
int init_simple_filtergraph(InputStream *ist, OutputStream *ost)
Definition: ffmpeg_filter.c:179
OptionsContext::display_rotations
SpecifierOpt * display_rotations
Definition: ffmpeg.h:195
OptionsContext::nb_guess_layout_max
int nb_guess_layout_max
Definition: ffmpeg.h:240
OutputFile::nb_streams
int nb_streams
Definition: ffmpeg.h:701
InputFile::eof_reached
int eof_reached
Definition: ffmpeg.h:454
OutputStream::sq_frame
AVFrame * sq_frame
Definition: ffmpeg.h:596
InputStream
Definition: ffmpeg.h:335
filter_nbthreads
char * filter_nbthreads
Definition: ffmpeg_opt.c:86
OptionsContext::chapters_input_file
int chapters_input_file
Definition: ffmpeg.h:155
debug_ts
int debug_ts
Definition: ffmpeg_opt.c:79
OptionsContext::nb_presets
int nb_presets
Definition: ffmpeg.h:214
stats_period
int64_t stats_period
Definition: ffmpeg_opt.c:90
OptionsContext::rate_emu
int rate_emu
Definition: ffmpeg.h:125
OutputStream::vsync_method
enum VideoSyncMethod vsync_method
Definition: ffmpeg.h:604
dts_delta_threshold
float dts_delta_threshold
Definition: ffmpeg_opt.c:67
fifo.h
InputFile::audio_duration_queue_size
int audio_duration_queue_size
Definition: ffmpeg.h:484
OutputStream::filters
char * filters
filtergraph associated to the -filter option
Definition: ffmpeg.h:633
bsf.h
vstats_version
int vstats_version
Definition: ffmpeg_opt.c:88
assert_file_overwrite
void assert_file_overwrite(const char *filename)
Definition: ffmpeg_opt.c:656
OutputStream::initialized
int initialized
Definition: ffmpeg.h:646
opt_name_codec_names
const char *const opt_name_codec_names[]
Definition: ffmpeg_opt.c:56
OptionsContext::nb_dump_attachment
int nb_dump_attachment
Definition: ffmpeg.h:135
OptionsContext::g
OptionGroup * g
Definition: ffmpeg.h:97
InputStream::sub2video
struct InputStream::sub2video sub2video
OptionsContext::nb_display_vflips
int nb_display_vflips
Definition: ffmpeg.h:200
OutputStream::vsync_frame_number
int64_t vsync_frame_number
Definition: ffmpeg.h:575
InputFilter::type
enum AVMediaType type
Definition: ffmpeg.h:276
StreamMap::disabled
int disabled
Definition: ffmpeg.h:83
AudioChannelMap::ostream_idx
int ostream_idx
Definition: ffmpeg.h:92
OutputStream::logfile_prefix
char * logfile_prefix
Definition: ffmpeg.h:628
EncStatsComponent::str_len
size_t str_len
Definition: ffmpeg.h:524
OptionsContext::nb_top_field_first
int nb_top_field_first
Definition: ffmpeg.h:210
OutputStream::next_pts
int64_t next_pts
Definition: mux.c:58
InputStream::decoder_opts
AVDictionary * decoder_opts
Definition: ffmpeg.h:391
OptionsContext::nb_autorotate
int nb_autorotate
Definition: ffmpeg.h:143
InputStream::filter_in_rescale_delta_last
int64_t filter_in_rescale_delta_last
Definition: ffmpeg.h:378
KeyframeForceCtx::ref_pts
int64_t ref_pts
Definition: ffmpeg.h:549
OptionsContext::nb_reinit_filters
int nb_reinit_filters
Definition: ffmpeg.h:224
InputStream::nb_packets
uint64_t nb_packets
Definition: ffmpeg.h:434
OutputFilter::sample_rate
int sample_rate
Definition: ffmpeg.h:309
type
it s the only field you need to keep assuming you have a context There is some magic you don t need to care about around this just let it vf type
Definition: writing_filters.txt:86
hw_device_setup_for_decode
int hw_device_setup_for_decode(InputStream *ist)
Definition: ffmpeg_hw.c:317
OptionsContext
Definition: ffmpeg.h:96
assert_avoptions
void assert_avoptions(AVDictionary *m)
Definition: ffmpeg.c:629
OptionsContext::time_bases
SpecifierOpt * time_bases
Definition: ffmpeg.h:249
InputStream::sub2video::last_pts
int64_t last_pts
Definition: ffmpeg.h:406
do_pkt_dump
int do_pkt_dump
Definition: ffmpeg_opt.c:75
OptionsContext::nb_audio_channel_maps
int nb_audio_channel_maps
Definition: ffmpeg.h:150
InputFile
Definition: ffmpeg.h:450
OptionsContext::recording_time
int64_t recording_time
Definition: ffmpeg.h:157
input_files
InputFile ** input_files
Definition: ffmpeg.c:143
InputStream::last_pkt_repeat_pict
int last_pkt_repeat_pict
Definition: ffmpeg.h:376
OptionsContext::pass
SpecifierOpt * pass
Definition: ffmpeg.h:231
OutputStream::copy_initial_nonkeyframes
int copy_initial_nonkeyframes
Definition: ffmpeg.h:652
OutputFilter::sample_rates
const int * sample_rates
Definition: ffmpeg.h:316
InputFile::ts_offset_discont
int64_t ts_offset_discont
Extra timestamp offset added by discontinuity handling.
Definition: ffmpeg.h:466
OptionsContext::nb_stream_maps
int nb_stream_maps
Definition: ffmpeg.h:147
OptionsContext::audio_disable
int audio_disable
Definition: ffmpeg.h:167
InputStream::first_dts
int64_t first_dts
dts of the first packet read for this stream (in AV_TIME_BASE units)
Definition: ffmpeg.h:365
InputStream::hwaccel_pix_fmt
enum AVPixelFormat hwaccel_pix_fmt
Definition: ffmpeg.h:428
OutputFile::shortest
int shortest
Definition: ffmpeg.h:708
InputStream::dts
int64_t dts
dts of the last packet read for this stream (in AV_TIME_BASE units)
Definition: ffmpeg.h:366
OptionsContext::enc_stats_post
SpecifierOpt * enc_stats_post
Definition: ffmpeg.h:259
OptionsContext::nb_enc_stats_pre_fmt
int nb_enc_stats_pre_fmt
Definition: ffmpeg.h:264
pkt
AVPacket * pkt
Definition: movenc.c:59
AudioChannelMap
Definition: ffmpeg.h:90
OptionsContext::presets
SpecifierOpt * presets
Definition: ffmpeg.h:213
OptionsContext::copy_initial_nonkeyframes
SpecifierOpt * copy_initial_nonkeyframes
Definition: ffmpeg.h:215
OptionsContext::codec_names
SpecifierOpt * codec_names
Definition: ffmpeg.h:105
ENC_STATS_PTS_IN
@ ENC_STATS_PTS_IN
Definition: ffmpeg.h:509
term_init
void term_init(void)
Definition: ffmpeg.c:395
OptionsContext::nb_program
int nb_program
Definition: ffmpeg.h:248
StreamMap::linklabel
char * linklabel
Definition: ffmpeg.h:86
OutputFilter::width
int width
Definition: ffmpeg.h:306
HWACCEL_GENERIC
@ HWACCEL_GENERIC
Definition: ffmpeg.h:72
VSYNC_VSCFR
@ VSYNC_VSCFR
Definition: ffmpeg.h:63
EncStats::components
EncStatsComponent * components
Definition: ffmpeg.h:528
InputStream::cfr_next_pts
int64_t cfr_next_pts
Definition: ffmpeg.h:385
s
#define s(width, name)
Definition: cbs_vp9.c:256
FilterGraph::outputs
OutputFilter ** outputs
Definition: ffmpeg.h:331
vstats_filename
char * vstats_filename
Definition: ffmpeg_opt.c:63
OutputStream::frame_aspect_ratio
AVRational frame_aspect_ratio
Definition: ffmpeg.h:618
InputStream::framerate
AVRational framerate
Definition: ffmpeg.h:392
do_psnr
int do_psnr
Definition: ffmpeg_opt.c:96
OutputStream::mux_timebase
AVRational mux_timebase
Definition: ffmpeg.h:590
OptionsContext::nb_bits_per_raw_sample
int nb_bits_per_raw_sample
Definition: ffmpeg.h:256
ENC_STATS_FILE_IDX
@ ENC_STATS_FILE_IDX
Definition: ffmpeg.h:501
ENCODER_FINISHED
@ ENCODER_FINISHED
Definition: ffmpeg.h:537
OptionsContext::limit_filesize
int64_t limit_filesize
Definition: ffmpeg.h:159
OutputStream::audio_channels_mapped
int audio_channels_mapped
Definition: ffmpeg.h:625
InputFilter
Definition: ffmpeg.h:271
OutputStream::copy_prior_start
int copy_prior_start
Definition: ffmpeg.h:653
OptionsContext::audio_ch_layouts
SpecifierOpt * audio_ch_layouts
Definition: ffmpeg.h:107
ENC_STATS_BITRATE
@ ENC_STATS_BITRATE
Definition: ffmpeg.h:516
AVHWDeviceType
AVHWDeviceType
Definition: hwcontext.h:27
OutputFilter::ost
struct OutputStream * ost
Definition: ffmpeg.h:297
OptionsContext::nb_enc_stats_post
int nb_enc_stats_post
Definition: ffmpeg.h:260
forced_keyframes_const
forced_keyframes_const
Definition: ffmpeg.h:487
ignore_unknown_streams
int ignore_unknown_streams
Definition: ffmpeg_opt.c:98
MUXER_FINISHED
@ MUXER_FINISHED
Definition: ffmpeg.h:538
OutputStream::avfilter
char * avfilter
Definition: ffmpeg.h:632
audio_drift_threshold
float audio_drift_threshold
Definition: ffmpeg_opt.c:66
InputStream::filters
InputFilter ** filters
Definition: ffmpeg.h:416
OptionsContext::nb_copy_initial_nonkeyframes
int nb_copy_initial_nonkeyframes
Definition: ffmpeg.h:216
max_error_rate
float max_error_rate
Definition: ffmpeg_opt.c:85
AVExpr
Definition: eval.c:157
OptionsContext::sample_fmts
SpecifierOpt * sample_fmts
Definition: ffmpeg.h:183
OptionsContext::shortest
int shortest
Definition: ffmpeg.h:163
InputStream::hwaccel_retrieve_data
int(* hwaccel_retrieve_data)(AVCodecContext *s, AVFrame *frame)
Definition: ffmpeg.h:427
InputFilter::graph
struct FilterGraph * graph
Definition: ffmpeg.h:274
AVThreadMessageQueue
Definition: threadmessage.c:27
OptionsContext::accurate_seek
int accurate_seek
Definition: ffmpeg.h:127
OutputStream::last_frame
AVFrame * last_frame
Definition: ffmpeg.h:595
OutputStream::enc_stats_pre
EncStats enc_stats_pre
Definition: ffmpeg.h:682
OptionsContext::nb_canvas_sizes
int nb_canvas_sizes
Definition: ffmpeg.h:230
OptionsContext::nb_max_muxing_queue_size
int nb_max_muxing_queue_size
Definition: ffmpeg.h:236
OutputStream::bitexact
int bitexact
Definition: ffmpeg.h:612
arg
const char * arg
Definition: jacosubdec.c:67
KeyframeForceCtx::expr_const_values
double expr_const_values[FKF_NB]
Definition: ffmpeg.h:557
of_enc_stats_close
void of_enc_stats_close(void)
Definition: ffmpeg_mux_init.c:218
OutputStream::streamcopy_started
int streamcopy_started
Definition: ffmpeg.h:651
OutputStream::encoder_opts
AVDictionary * encoder_opts
Definition: ffmpeg.h:636
OptionsContext::start_time
int64_t start_time
Definition: ffmpeg.h:100
InputStream::pts
int64_t pts
current pts of the decoded frame (in AV_TIME_BASE units)
Definition: ffmpeg.h:369
AVFormatContext
Format I/O context.
Definition: avformat.h:1104
OutputFilter::height
int height
Definition: ffmpeg.h:306
OptionsContext::nb_filter_scripts
int nb_filter_scripts
Definition: ffmpeg.h:222
OptionsContext::reinit_filters
SpecifierOpt * reinit_filters
Definition: ffmpeg.h:223
AVClass
Describe the class of an AVClass context structure.
Definition: log.h:66
OutputFilter::name
uint8_t * name
Definition: ffmpeg.h:299
InputStream::sub2video::w
int w
Definition: ffmpeg.h:410
InputStream::top_field_first
int top_field_first
Definition: ffmpeg.h:393
InputStream::st
AVStream * st
Definition: ffmpeg.h:337
OptionsContext::nb_fix_sub_duration_heartbeat
int nb_fix_sub_duration_heartbeat
Definition: ffmpeg.h:228
forced_keyframes_const_names
const char *const forced_keyframes_const_names[]
Definition: ffmpeg_mux_init.c:2030
OptionsContext::filters
SpecifierOpt * filters
Definition: ffmpeg.h:219
OptionsContext::frame_sizes
SpecifierOpt * frame_sizes
Definition: ffmpeg.h:117
InputFile::start_time_effective
int64_t start_time_effective
Effective format start time based on enabled streams.
Definition: ffmpeg.h:461
ENC_STATS_PTS_TIME
@ ENC_STATS_PTS_TIME
Definition: ffmpeg.h:508
of_close
void of_close(OutputFile **pof)
Definition: ffmpeg_mux.c:720
AVRational
Rational number (pair of numerator and denominator).
Definition: rational.h:58
OptionsContext::fix_sub_duration
SpecifierOpt * fix_sub_duration
Definition: ffmpeg.h:225
OptionsContext::codec_tags
SpecifierOpt * codec_tags
Definition: ffmpeg.h:181
InputStream::next_pts
int64_t next_pts
synthetic pts for the next decode frame (in AV_TIME_BASE units)
Definition: ffmpeg.h:368
OptionsContext::force_fps
SpecifierOpt * force_fps
Definition: ffmpeg.h:191
OptionsContext::nb_intra_matrices
int nb_intra_matrices
Definition: ffmpeg.h:204
OutputStream::audio_channels_map
int * audio_channels_map
Definition: ffmpeg.h:624
InputStream::hwaccel_id
enum HWAccelID hwaccel_id
Definition: ffmpeg.h:422
EncStats
Definition: ffmpeg.h:527
OutputStream::frame_rate
AVRational frame_rate
Definition: ffmpeg.h:602
copy_unknown_streams
int copy_unknown_streams
Definition: ffmpeg_opt.c:99
ifile_get_packet
int ifile_get_packet(InputFile *f, AVPacket **pkt)
Get next input packet from the demuxer.
Definition: ffmpeg_demux.c:410
InputFilter::eof
int eof
Definition: ffmpeg.h:292
InputStream::fix_sub_duration
int fix_sub_duration
Definition: ffmpeg.h:398
OutputStream::top_field_first
int top_field_first
Definition: ffmpeg.h:607
InputStream::hwaccel_output_format
enum AVPixelFormat hwaccel_output_format
Definition: ffmpeg.h:425
opt_name_top_field_first
const char *const opt_name_top_field_first[]
Definition: ffmpeg_opt.c:59
OptionsContext::max_frames
SpecifierOpt * max_frames
Definition: ffmpeg.h:177
AVFilterGraph
Definition: avfilter.h:855
do_benchmark_all
int do_benchmark_all
Definition: ffmpeg_opt.c:73
filtergraphs
FilterGraph ** filtergraphs
Definition: ffmpeg.c:149
OptionsContext::nb_display_hflips
int nb_display_hflips
Definition: ffmpeg.h:198
OptionsContext::input_sync_ref
int input_sync_ref
Definition: ffmpeg.h:129
InputStream::min_pts
int64_t min_pts
Definition: ffmpeg.h:380
OutputFile::index
int index
Definition: ffmpeg.h:695
OptionGroup
Definition: cmdutils.h:250
OptionsContext::program
SpecifierOpt * program
Definition: ffmpeg.h:247
OptionsContext::nb_enc_stats_pre
int nb_enc_stats_pre
Definition: ffmpeg.h:258
InputStream::sub2video::sub_queue
AVFifo * sub_queue
queue of AVSubtitle* before filter init
Definition: ffmpeg.h:408
ENC_STATS_PTS_TIME_IN
@ ENC_STATS_PTS_TIME_IN
Definition: ffmpeg.h:510
FilterGraph::nb_outputs
int nb_outputs
Definition: ffmpeg.h:332
OutputStream::logfile
FILE * logfile
Definition: ffmpeg.h:629
swresample.h
InputStream::sub2video::initialize
unsigned int initialize
marks if sub2video_update should force an initialization
Definition: ffmpeg.h:411
OptionsContext::nb_metadata_map
int nb_metadata_map
Definition: ffmpeg.h:212
InputStream::par
AVCodecParameters * par
Codec parameters - to be used by the decoding/streamcopy code.
Definition: ffmpeg.h:352
OptionsContext::nb_filters
int nb_filters
Definition: ffmpeg.h:220
OutputFile::streams
OutputStream ** streams
Definition: ffmpeg.h:700
InputStream::frames_decoded
uint64_t frames_decoded
Definition: ffmpeg.h:436
recast_media
int recast_media
Definition: ffmpeg_opt.c:100
OptionsContext::nb_fps_mode
int nb_fps_mode
Definition: ffmpeg.h:190
InputStream::next_dts
int64_t next_dts
Definition: ffmpeg.h:364
FilterGraph
Definition: ffmpeg.h:319
OptionsContext::display_hflips
SpecifierOpt * display_hflips
Definition: ffmpeg.h:197
print_stats
int print_stats
Definition: ffmpeg_opt.c:82
InputFilter::filter
AVFilterContext * filter
Definition: ffmpeg.h:272
nb_output_dumped
unsigned nb_output_dumped
Definition: ffmpeg.c:138
options
const OptionDef options[]
VideoSyncMethod
VideoSyncMethod
Definition: ffmpeg.h:58
eval.h
OutputStream::force_fps
int force_fps
Definition: ffmpeg.h:606
OptionsContext::nb_frame_aspect_ratios
int nb_frame_aspect_ratios
Definition: ffmpeg.h:194
OutputStream::filter
OutputFilter * filter
Definition: ffmpeg.h:631
f
f
Definition: af_crystalizer.c:122
AVIOContext
Bytestream IO Context.
Definition: avio.h:166
sub2video_update
void sub2video_update(InputStream *ist, int64_t heartbeat_pts, AVSubtitle *sub)
Definition: ffmpeg.c:228
InputStream::hwaccel_device_type
enum AVHWDeviceType hwaccel_device_type
Definition: ffmpeg.h:423
OptionsContext::thread_queue_size
int thread_queue_size
Definition: ffmpeg.h:128
AVMediaType
AVMediaType
Definition: avutil.h:199
InputStream::decoded_frame
AVFrame * decoded_frame
Definition: ffmpeg.h:355
AVFifo
Definition: fifo.c:35
InputStream::wrap_correction_done
int wrap_correction_done
Definition: ffmpeg.h:370
InputStream::start
int64_t start
Definition: ffmpeg.h:361
AVChannelLayout
An AVChannelLayout holds information about the channel layout of audio data.
Definition: channel_layout.h:301
threadmessage.h
OutputStream::error
int64_t error[4]
Definition: ffmpeg.h:677
InputStream::file_index
int file_index
Definition: ffmpeg.h:336
OutputStream::data_size_enc
uint64_t data_size_enc
Definition: ffmpeg.h:661
InputFile::last_ts
int64_t last_ts
Definition: ffmpeg.h:467
FilterGraph::graph
AVFilterGraph * graph
Definition: ffmpeg.h:323
EncStatsType
EncStatsType
Definition: ffmpeg.h:499
InputStream::pkt
AVPacket * pkt
Definition: ffmpeg.h:356
InputStream::got_output
int got_output
Definition: ffmpeg.h:400
StreamMap
Definition: ffmpeg.h:82
ENC_STATS_NB_SAMPLES
@ ENC_STATS_NB_SAMPLES
Definition: ffmpeg.h:514
copy_ts
int copy_ts
Definition: ffmpeg_opt.c:76
OptionsContext::filter_scripts
SpecifierOpt * filter_scripts
Definition: ffmpeg.h:221
OutputStream::packets_encoded
uint64_t packets_encoded
Definition: ffmpeg.h:668
avio.h
copy_tb
int copy_tb
Definition: ffmpeg_opt.c:78
OptionsContext::seek_timestamp
int seek_timestamp
Definition: ffmpeg.h:102
hwaccel_decode_init
int hwaccel_decode_init(AVCodecContext *avctx)
Definition: ffmpeg_hw.c:542
OptionsContext::top_field_first
SpecifierOpt * top_field_first
Definition: ffmpeg.h:209
HWDevice::device_ref
AVBufferRef * device_ref
Definition: ffmpeg.h:78
OutputFile::url
const char * url
Definition: ffmpeg.h:698
OptionsContext::nb_discard
int nb_discard
Definition: ffmpeg.h:244
OSTFinished
OSTFinished
Definition: ffmpeg.h:536
OutputFilter::filter
AVFilterContext * filter
Definition: ffmpeg.h:296
a
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:41
InputStream::samples_decoded
uint64_t samples_decoded
Definition: ffmpeg.h:437
OptionsContext::find_stream_info
int find_stream_info
Definition: ffmpeg.h:130
strip_specifiers
AVDictionary * strip_specifiers(const AVDictionary *dict)
Definition: ffmpeg_opt.c:167
check_filter_outputs
void check_filter_outputs(void)
Definition: ffmpeg_filter.c:798
OptionsContext::metadata
SpecifierOpt * metadata
Definition: ffmpeg.h:175
OutputStream::kf
KeyframeForceCtx kf
Definition: ffmpeg.h:620
InputStream::max_pts
int64_t max_pts
Definition: ffmpeg.h:381
do_benchmark
int do_benchmark
Definition: ffmpeg_opt.c:72
OptionsContext::nb_autoscale
int nb_autoscale
Definition: ffmpeg.h:254
OutputFile::sq_encode
SyncQueue * sq_encode
Definition: ffmpeg.h:703
KF_FORCE_SOURCE
@ KF_FORCE_SOURCE
Definition: ffmpeg.h:542
OutputStream::pict_type
int pict_type
Definition: ffmpeg.h:674
OptionsContext::frame_rates
SpecifierOpt * frame_rates
Definition: ffmpeg.h:113
ENC_STATS_FRAME_NUM
@ ENC_STATS_FRAME_NUM
Definition: ffmpeg.h:503
KeyframeForceCtx
Definition: ffmpeg.h:546
OutputFilter::type
enum AVMediaType type
Definition: ffmpeg.h:303
HWACCEL_AUTO
@ HWACCEL_AUTO
Definition: ffmpeg.h:71
OptionsContext::autorotate
SpecifierOpt * autorotate
Definition: ffmpeg.h:142
OutputStream::max_frame_rate
AVRational max_frame_rate
Definition: ffmpeg.h:603
InputStream::guess_layout_max
int guess_layout_max
Definition: ffmpeg.h:394
OutputStream::filters_script
char * filters_script
filtergraph script associated to the -filter_script option
Definition: ffmpeg.h:634
OutputStream::pkt
AVPacket * pkt
Definition: ffmpeg.h:597
OutputStream::apad
char * apad
Definition: ffmpeg.h:639
OptionsContext::nb_hwaccel_output_formats
int nb_hwaccel_output_formats
Definition: ffmpeg.h:141
init_complex_filtergraph
int init_complex_filtergraph(FilterGraph *fg)
Definition: ffmpeg_filter.c:467
OptionsContext::forced_key_frames
SpecifierOpt * forced_key_frames
Definition: ffmpeg.h:187
of_output_packet
void of_output_packet(OutputFile *of, AVPacket *pkt, OutputStream *ost, int eof)
Definition: ffmpeg_mux.c:329
AVOutputFormat
Definition: avformat.h:507
OptionsContext::mux_stats_fmt
SpecifierOpt * mux_stats_fmt
Definition: ffmpeg.h:267
OutputStream::data_size_mux
uint64_t data_size_mux
Definition: ffmpeg.h:659
OptionsContext::metadata_map
SpecifierOpt * metadata_map
Definition: ffmpeg.h:211
InputStream::ret
int ret
Definition: ffmpeg.h:401
InputStream::want_frame_data
int want_frame_data
Definition: ffmpeg.h:345
OptionsContext::enc_stats_pre
SpecifierOpt * enc_stats_pre
Definition: ffmpeg.h:257
StreamMap::stream_index
int stream_index
Definition: ffmpeg.h:85
OptionsContext::nb_qscale
int nb_qscale
Definition: ffmpeg.h:186
OptionsContext::mux_stats
SpecifierOpt * mux_stats
Definition: ffmpeg.h:261
OptionsContext::stream_maps
StreamMap * stream_maps
Definition: ffmpeg.h:146
OptionsContext::nb_ts_scale
int nb_ts_scale
Definition: ffmpeg.h:133
find_codec_or_die
const AVCodec * find_codec_or_die(void *logctx, const char *name, enum AVMediaType type, int encoder)
Definition: ffmpeg_opt.c:626
OptionsContext::audio_sample_rate
SpecifierOpt * audio_sample_rate
Definition: ffmpeg.h:111
OptionsContext::start_time_eof
int64_t start_time_eof
Definition: ffmpeg.h:101
VSYNC_CFR
@ VSYNC_CFR
Definition: ffmpeg.h:61
OptionsContext::shortest_buf_duration
float shortest_buf_duration
Definition: ffmpeg.h:162
OutputFile::bitexact
int bitexact
Definition: ffmpeg.h:709
OptionsContext::nb_fix_sub_duration
int nb_fix_sub_duration
Definition: ffmpeg.h:226
exit_on_error
int exit_on_error
Definition: ffmpeg_opt.c:80
output_files
OutputFile ** output_files
Definition: ffmpeg.c:146
OutputStream::last_nb0_frames
int64_t last_nb0_frames[3]
Definition: ffmpeg.h:599
OptionsContext::nb_frame_pix_fmts
int nb_frame_pix_fmts
Definition: ffmpeg.h:120
InputStream::processing_needed
int processing_needed
Definition: ffmpeg.h:343
hw_device_setup_for_filter
int hw_device_setup_for_filter(FilterGraph *fg)
Definition: ffmpeg_hw.c:551
InputFile::ctx
AVFormatContext * ctx
Definition: ffmpeg.h:453
InputFile::accurate_seek
int accurate_seek
Definition: ffmpeg.h:479
OptionsContext::nb_copy_prior_start
int nb_copy_prior_start
Definition: ffmpeg.h:218
ENC_STATS_STREAM_IDX
@ ENC_STATS_STREAM_IDX
Definition: ffmpeg.h:502
OptionsContext::bits_per_raw_sample
SpecifierOpt * bits_per_raw_sample
Definition: ffmpeg.h:255
ENC_STATS_SAMPLE_NUM
@ ENC_STATS_SAMPLE_NUM
Definition: ffmpeg.h:513
OptionsContext::bitstream_filters
SpecifierOpt * bitstream_filters
Definition: ffmpeg.h:179
OptionsContext::streamid_map
int * streamid_map
Definition: ffmpeg.h:172
InputFile::recording_time
int64_t recording_time
Definition: ffmpeg.h:469
avcodec.h
OptionsContext::passlogfiles
SpecifierOpt * passlogfiles
Definition: ffmpeg.h:233
SpecifierOpt
Definition: cmdutils.h:134
OptionsContext::autoscale
SpecifierOpt * autoscale
Definition: ffmpeg.h:253
AVStream
Stream structure.
Definition: avformat.h:838
OptionsContext::nb_bitstream_filters
int nb_bitstream_filters
Definition: ffmpeg.h:180
pixfmt.h
abort_on_flags
int abort_on_flags
Definition: ffmpeg_opt.c:81
frame
these buffered frames must be flushed immediately if a new input produces new the filter must not call request_frame to get more It must just process the frame or queue it The task of requesting more frames is left to the filter s request_frame method or the application If a filter has several the filter must be ready for frames arriving randomly on any input any filter with several inputs will most likely require some kind of queuing mechanism It is perfectly acceptable to have a limited queue and to drop frames when the inputs are too unbalanced request_frame For filters that do not use the this method is called when a frame is wanted on an output For a it should directly call filter_frame on the corresponding output For a if there are queued frames already one of these frames should be pushed If the filter should request a frame on one of its repeatedly until at least one frame has been pushed Return or at least make progress towards producing a frame
Definition: filter_design.txt:264
InputFilter::name
uint8_t * name
Definition: ffmpeg.h:275
OptionsContext::nb_streamid_map
int nb_streamid_map
Definition: ffmpeg.h:173
VSYNC_DROP
@ VSYNC_DROP
Definition: ffmpeg.h:64
sdp_filename
char * sdp_filename
Definition: ffmpeg_opt.c:64
OutputFilter::ch_layout
AVChannelLayout ch_layout
Definition: ffmpeg.h:310
OptionsContext::audio_channel_maps
AudioChannelMap * audio_channel_maps
Definition: ffmpeg.h:149
InputFile::streams
InputStream ** streams
Definition: ffmpeg.h:474
InputStream::reinit_filters
int reinit_filters
Definition: ffmpeg.h:419
hw_device_free_all
void hw_device_free_all(void)
Definition: ffmpeg_hw.c:288
avformat.h
InputFile::eagain
int eagain
Definition: ffmpeg.h:455
HWAccelID
HWAccelID
Definition: ffmpeg.h:69
dict.h
OptionsContext::nb_mux_stats_fmt
int nb_mux_stats_fmt
Definition: ffmpeg.h:268
OptionsContext::nb_sample_fmts
int nb_sample_fmts
Definition: ffmpeg.h:184
InputFilter::sample_rate
int sample_rate
Definition: ffmpeg.h:286
OptionsContext::nb_enc_time_bases
int nb_enc_time_bases
Definition: ffmpeg.h:252
SyncQueue
Definition: sync_queue.c:45
ifile_close
void ifile_close(InputFile **f)
Definition: ffmpeg_demux.c:479
OptionsContext::nb_max_frames
int nb_max_frames
Definition: ffmpeg.h:178
OptionsContext::disposition
SpecifierOpt * disposition
Definition: ffmpeg.h:245
ifilter_parameters_from_frame
int ifilter_parameters_from_frame(InputFilter *ifilter, const AVFrame *frame)
Definition: ffmpeg_filter.c:1275
OutputFilter::format
int format
Definition: ffmpeg.h:308
ifile_open
int ifile_open(const OptionsContext *o, const char *filename)
Definition: ffmpeg_demux.c:842
filter_hw_device
HWDevice * filter_hw_device
Definition: ffmpeg_opt.c:61
AVCodecContext
main external API structure.
Definition: avcodec.h:426
hw_device_setup_for_encode
int hw_device_setup_for_encode(OutputStream *ost)
Definition: ffmpeg_hw.c:445
OptionsContext::mux_preload
float mux_preload
Definition: ffmpeg.h:160
HWDevice::name
const char * name
Definition: ffmpeg.h:76
InputFilter::format
int format
Definition: ffmpeg.h:281
OutputStream::finished
OSTFinished finished
Definition: ffmpeg.h:640
OptionsContext::nb_audio_channels
int nb_audio_channels
Definition: ffmpeg.h:110
InputStream::prev_pkt_pts
int64_t prev_pkt_pts
Definition: ffmpeg.h:360
OptionsContext::fix_sub_duration_heartbeat
SpecifierOpt * fix_sub_duration_heartbeat
Definition: ffmpeg.h:227
InputFile::audio_duration_queue
AVThreadMessageQueue * audio_duration_queue
Definition: ffmpeg.h:483
OptionsContext::guess_layout_max
SpecifierOpt * guess_layout_max
Definition: ffmpeg.h:239
KeyframeForceCtx::index
int index
Definition: ffmpeg.h:554
OptionsContext::enc_time_bases
SpecifierOpt * enc_time_bases
Definition: ffmpeg.h:251
avfilter.h
OutputFilter::formats
const int * formats
Definition: ffmpeg.h:314
FilterGraph::is_meta
int is_meta
Definition: ffmpeg.h:327
OutputStream::last_mux_dts
int64_t last_mux_dts
Definition: ffmpeg.h:580
OptionsContext::video_disable
int video_disable
Definition: ffmpeg.h:166
InputStream::prev_sub
struct InputStream::@3 prev_sub
OutputStream::quality
int quality
Definition: ffmpeg.h:671
OptionsContext::nb_forced_key_frames
int nb_forced_key_frames
Definition: ffmpeg.h:188
OutputStream::bits_per_raw_sample
int bits_per_raw_sample
Definition: ffmpeg.h:613
OptionsContext::max_frame_rates
SpecifierOpt * max_frame_rates
Definition: ffmpeg.h:115
OutputStream::enc_stats_post
EncStats enc_stats_post
Definition: ffmpeg.h:683
InputStream::nb_samples
int64_t nb_samples
Definition: ffmpeg.h:387
InputFilter::height
int height
Definition: ffmpeg.h:283
OptionsContext::frame_pix_fmts
SpecifierOpt * frame_pix_fmts
Definition: ffmpeg.h:119
video_sync_method
enum VideoSyncMethod video_sync_method
Definition: ffmpeg_opt.c:70
OutputStream::frames_encoded
uint64_t frames_encoded
Definition: ffmpeg.h:665
HWACCEL_NONE
@ HWACCEL_NONE
Definition: ffmpeg.h:70
InputFile::ts_offset
int64_t ts_offset
Definition: ffmpeg.h:462
OptionsContext::nb_frame_sizes
int nb_frame_sizes
Definition: ffmpeg.h:118
OptionsContext::hwaccel_devices
SpecifierOpt * hwaccel_devices
Definition: ffmpeg.h:138
InputStream::discard
int discard
Definition: ffmpeg.h:338
OptionsContext::max_muxing_queue_size
SpecifierOpt * max_muxing_queue_size
Definition: ffmpeg.h:235
AVFilterContext
An instance of a filter.
Definition: avfilter.h:392
remove_avoptions
void remove_avoptions(AVDictionary **a, AVDictionary *b)
Definition: ffmpeg.c:620
VSYNC_AUTO
@ VSYNC_AUTO
Definition: ffmpeg.h:59
OutputFilter
Definition: ffmpeg.h:295
InputStream::sub2video::frame
AVFrame * frame
Definition: ffmpeg.h:409
OptionsContext::nb_muxing_queue_data_threshold
int nb_muxing_queue_data_threshold
Definition: ffmpeg.h:238
OptionsContext::nb_inter_matrices
int nb_inter_matrices
Definition: ffmpeg.h:206
OutputStream::last_filter_pts
int64_t last_filter_pts
Definition: ffmpeg.h:582
OptionsContext::enc_stats_pre_fmt
SpecifierOpt * enc_stats_pre_fmt
Definition: ffmpeg.h:263
OptionsContext::muxing_queue_data_threshold
SpecifierOpt * muxing_queue_data_threshold
Definition: ffmpeg.h:237
avutil.h
start_at_zero
int start_at_zero
Definition: ffmpeg_opt.c:77
AVBufferRef
A reference to a data buffer.
Definition: buffer.h:82
OutputStream::file_index
int file_index
Definition: ffmpeg.h:565
OptionsContext::copy_prior_start
SpecifierOpt * copy_prior_start
Definition: ffmpeg.h:217
InputStream::sub2video
Definition: ffmpeg.h:405
ist_iter
InputStream * ist_iter(InputStream *prev)
Definition: ffmpeg.c:604
OptionsContext::fps_mode
SpecifierOpt * fps_mode
Definition: ffmpeg.h:189
OutputFilter::out_tmp
AVFilterInOut * out_tmp
Definition: ffmpeg.h:302
auto_conversion_filters
int auto_conversion_filters
Definition: ffmpeg_opt.c:89
InputStream::sub2video::h
int h
Definition: ffmpeg.h:410
OptionsContext::nb_passlogfiles
int nb_passlogfiles
Definition: ffmpeg.h:234
KeyframeForceCtx::pexpr
AVExpr * pexpr
Definition: ffmpeg.h:556
opt_name_frame_rates
const char *const opt_name_frame_rates[]
Definition: ffmpeg_opt.c:57
OutputStream::is_cfr
int is_cfr
Definition: ffmpeg.h:605
OutputStream::autoscale
int autoscale
Definition: ffmpeg.h:611
InputFilter::hw_frames_ctx
AVBufferRef * hw_frames_ctx
Definition: ffmpeg.h:289
FKF_N_FORCED
@ FKF_N_FORCED
Definition: ffmpeg.h:489
OptionsContext::attachments
const char ** attachments
Definition: ffmpeg.h:152
InputStream::sub2video::end_pts
int64_t end_pts
Definition: ffmpeg.h:407
stdin_interaction
int stdin_interaction
Definition: ffmpeg_opt.c:84
do_hex_dump
int do_hex_dump
Definition: ffmpeg_opt.c:74
OptionsContext::nb_enc_stats_post_fmt
int nb_enc_stats_post_fmt
Definition: ffmpeg.h:266
LastFrameDuration::duration
int64_t duration
Definition: ffmpeg.h:447
InputStream::ts_scale
double ts_scale
Definition: ffmpeg.h:389
OptionsContext::ts_scale
SpecifierOpt * ts_scale
Definition: ffmpeg.h:132
AVPacket
This structure stores compressed data.
Definition: packet.h:351
main_return_code
int main_return_code
Definition: ffmpeg.c:334
EncStatsComponent
Definition: ffmpeg.h:520
OptionsContext::chroma_intra_matrices
SpecifierOpt * chroma_intra_matrices
Definition: ffmpeg.h:207
FilterGraph::reconfiguration
int reconfiguration
Definition: ffmpeg.h:324
HWDevice::type
enum AVHWDeviceType type
Definition: ffmpeg.h:77
cmdutils.h
InputFile::input_ts_offset
int64_t input_ts_offset
Definition: ffmpeg.h:456
file_read
char * file_read(const char *filename)
Definition: ffmpeg_opt.c:700
EncStats::nb_components
int nb_components
Definition: ffmpeg.h:529
OptionsContext::data_disable
int data_disable
Definition: ffmpeg.h:169
InputStream::dts_buffer
int64_t * dts_buffer
Definition: ffmpeg.h:439
InputFilter::frame_queue
AVFifo * frame_queue
Definition: ffmpeg.h:278
int32_t
int32_t
Definition: audioconvert.c:56
FKF_NB
@ FKF_NB
Definition: ffmpeg.h:493
ENC_STATS_PKT_SIZE
@ ENC_STATS_PKT_SIZE
Definition: ffmpeg.h:515
OutputStream
Definition: mux.c:53
OptionsContext::nb_display_rotations
int nb_display_rotations
Definition: ffmpeg.h:196
hwcontext.h
OutputStream::sq_idx_encode
int sq_idx_encode
Definition: ffmpeg.h:679
OutputStream::st
AVStream * st
Definition: mux.c:54
EncStatsComponent::str
uint8_t * str
Definition: ffmpeg.h:523
dts_error_threshold
float dts_error_threshold
Definition: ffmpeg_opt.c:68
OptionsContext::hwaccel_output_formats
SpecifierOpt * hwaccel_output_formats
Definition: ffmpeg.h:140
OutputFile::format
const AVOutputFormat * format
Definition: ffmpeg.h:697
InputStream::nb_dts_buffer
int nb_dts_buffer
Definition: ffmpeg.h:440
InputStream::saw_first_ts
int saw_first_ts
Definition: ffmpeg.h:390
OutputStream::swr_opts
AVDictionary * swr_opts
Definition: ffmpeg.h:638
OutputFilter::frame_rate
AVRational frame_rate
Definition: ffmpeg.h:307
OutputStream::filtered_frame
AVFrame * filtered_frame
Definition: ffmpeg.h:594
InputFile::nb_streams
int nb_streams
Definition: ffmpeg.h:475
opt_name_codec_tags
const char *const opt_name_codec_tags[]
Definition: ffmpeg_opt.c:58
FKF_N
@ FKF_N
Definition: ffmpeg.h:488
ENC_STATS_DTS_TIME
@ ENC_STATS_DTS_TIME
Definition: ffmpeg.h:512
OutputFile::recording_time
int64_t recording_time
desired length of the resulting file in microseconds == AV_TIME_BASE units
Definition: ffmpeg.h:705
int
int
Definition: ffmpeg_filter.c:156
OutputStream::samples_encoded
uint64_t samples_encoded
Definition: ffmpeg.h:666
OutputStream::inputs_done
int inputs_done
Definition: ffmpeg.h:648
of_stream_init
int of_stream_init(OutputFile *of, OutputStream *ost)
Definition: ffmpeg_mux.c:583
hw_device_get_by_name
HWDevice * hw_device_get_by_name(const char *name)
Definition: ffmpeg_hw.c:44
OptionsContext::nb_codec_tags
int nb_codec_tags
Definition: ffmpeg.h:182
AVFilterInOut
A linked-list of the inputs/outputs of the filter chain.
Definition: avfilter.h:1015
VSYNC_PASSTHROUGH
@ VSYNC_PASSTHROUGH
Definition: ffmpeg.h:60
InputStream::dec
const AVCodec * dec
Definition: ffmpeg.h:354
EncStats::io
AVIOContext * io
Definition: ffmpeg.h:531
OptionsContext::discard
SpecifierOpt * discard
Definition: ffmpeg.h:243
InputStream::subtitle
AVSubtitle subtitle
Definition: ffmpeg.h:402
of_write_trailer
int of_write_trailer(OutputFile *of)
Definition: ffmpeg_mux.c:604
filtergraph_is_simple
int filtergraph_is_simple(FilterGraph *fg)
Definition: ffmpeg_filter.c:1307
OptionsContext::display_vflips
SpecifierOpt * display_vflips
Definition: ffmpeg.h:199
atomic_uint_least64_t
intptr_t atomic_uint_least64_t
Definition: stdatomic.h:69
ENC_STATS_TIMEBASE
@ ENC_STATS_TIMEBASE
Definition: ffmpeg.h:505
term_exit
void term_exit(void)
Definition: ffmpeg.c:324
filter_complex_nbthreads
int filter_complex_nbthreads
Definition: ffmpeg_opt.c:87
OutputFile
Definition: ffmpeg.h:692
OptionsContext::loop
int loop
Definition: ffmpeg.h:124
InputStream::autorotate
int autorotate
Definition: ffmpeg.h:396
OutputStream::enc_timebase
AVRational enc_timebase
Definition: ffmpeg.h:591
OptionsContext::nb_force_fps
int nb_force_fps
Definition: ffmpeg.h:192