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 #define FFMPEG_OPT_QPHIST 1
58 #define FFMPEG_OPT_ADRIFT_THRESHOLD 1
59 
61  VSYNC_AUTO = -1,
67 };
68 
69 #define MAX_STREAMS 1024 /* arbitrary sanity check value */
70 
71 enum HWAccelID {
75 };
76 
77 typedef struct HWDevice {
78  const char *name;
81 } HWDevice;
82 
83 /* select an input stream for an output stream */
84 typedef struct StreamMap {
85  int disabled; /* 1 is this mapping is disabled by a negative map */
88  char *linklabel; /* name of an output link, for mapping lavfi outputs */
89 } StreamMap;
90 
91 #if FFMPEG_OPT_MAP_CHANNEL
92 typedef struct {
93  int file_idx, stream_idx, channel_idx; // input
94  int ofile_idx, ostream_idx; // output
96 #endif
97 
98 typedef struct DemuxPktData {
99  // estimated dts in AV_TIME_BASE_Q,
100  // to be used when real dts is missing
101  int64_t dts_est;
102 } DemuxPktData;
103 
104 typedef struct OptionsContext {
106 
107  /* input/output options */
108  int64_t start_time;
109  int64_t start_time_eof;
111  const char *format;
112 
129 
130  /* input options */
132  int loop;
133  int rate_emu;
134  float readrate;
140 
153 
154  /* output options */
157 #if FFMPEG_OPT_MAP_CHANNEL
158  AudioChannelMap *audio_channel_maps; /* one info entry per -map_channel */
159  int nb_audio_channel_maps; /* number of (valid) -map_channel settings */
160 #endif
161  const char **attachments;
163 
165 
166  int64_t recording_time;
167  int64_t stop_time;
168  int64_t limit_filesize;
169  float mux_preload;
172  int shortest;
173  int bitexact;
174 
179 
180  /* indexed by output file stream index */
183 
241  int nb_pass;
251  int nb_apad;
279 
280 typedef struct InputFilter {
282  uint8_t *name;
283 } InputFilter;
284 
285 typedef struct OutputFilter {
287  struct OutputStream *ost;
289  uint8_t *name;
290 
291  /* for filters that are not yet bound to an output stream,
292  * this stores the output linklabel, if any */
293  uint8_t *linklabel;
294 
296 
297  /* desired output stream properties */
298  int width, height;
299  int format;
302 
303  // those are only set if no format is specified and the encoder gives us multiple options
304  // They point directly to the relevant lists of the encoder.
305  const int *formats;
307  const int *sample_rates;
308 
309  /* pts of the last frame received from this filter, in AV_TIME_BASE_Q */
310  int64_t last_pts;
311 } OutputFilter;
312 
313 typedef struct FilterGraph {
314  int index;
315 
317  // true when the filtergraph contains only meta filters
318  // that do not modify the frame data
319  int is_meta;
320 
325 } FilterGraph;
326 
327 typedef struct Decoder Decoder;
328 
329 typedef struct InputStream {
330  const AVClass *class;
331 
333  int index;
334 
336  int discard; /* true if stream data should be discarded */
338  int decoding_needed; /* non zero if the packets must be decoded in 'raw_fifo', see DECODING_FOR_* */
339 #define DECODING_FOR_OST 1
340 #define DECODING_FOR_FILTER 2
341  // should attach FrameData as opaque_ref after decoding
343 
344  /**
345  * Codec parameters - to be used by the decoding/streamcopy code.
346  * st->codecpar should not be accessed, because it may be modified
347  * concurrently by the demuxing thread.
348  */
352  const AVCodec *dec;
354 
356 
357  int64_t nb_samples; /* number of samples in the last decoded audio frame before looping */
358 
360  AVRational framerate; /* framerate forced with -r */
362 
364 
366  struct { /* previous decoded subtitle and related variables */
368  int ret;
370  } prev_sub;
371 
372  struct sub2video {
373  int w, h;
374  } sub2video;
375 
376  /* decoded data from this stream goes into all those filters
377  * currently video and audio only */
380 
381  /*
382  * Output targets that do not go through lavfi, i.e. subtitles or
383  * streamcopy. Those two cases are distinguished by the OutputStream
384  * having an encoder or not.
385  */
388 
390 
391  /* hwaccel options */
396 
399 
400  /* stats */
401  // number of frames/samples retrieved from the decoder
402  uint64_t frames_decoded;
403  uint64_t samples_decoded;
404  uint64_t decode_errors;
405 } InputStream;
406 
407 typedef struct LastFrameDuration {
409  int64_t duration;
411 
412 typedef struct InputFile {
413  const AVClass *class;
414 
415  int index;
416 
417  // input format has no timestamps
419 
421  int eof_reached; /* true if eof reached */
422  int eagain; /* true if last read attempt returned EAGAIN */
425  /**
426  * Effective format start time based on enabled streams.
427  */
429  int64_t ts_offset;
430  int64_t start_time; /* user-specified start time in AV_TIME_BASE or AV_NOPTS_VALUE */
431  int64_t recording_time;
432 
433  /* streams that ffmpeg is aware of;
434  * there may be extra streams in ctx that are not mapped to an InputStream
435  * if new streams appear dynamically during demuxing */
438 
439  float readrate;
441 
442  /* when looping the input file, this queue is used by decoders to report
443  * the last frame duration back to the demuxer thread */
446 } InputFile;
447 
455 };
456 
457 #define ABORT_ON_FLAG_EMPTY_OUTPUT (1 << 0)
458 #define ABORT_ON_FLAG_EMPTY_OUTPUT_STREAM (1 << 1)
459 
479 };
480 
481 typedef struct EncStatsComponent {
483 
484  uint8_t *str;
485  size_t str_len;
487 
488 typedef struct EncStats {
491 
493 } EncStats;
494 
495 extern const char *const forced_keyframes_const_names[];
496 
497 typedef enum {
500 } OSTFinished ;
501 
502 enum {
505 };
506 
507 typedef struct KeyframeForceCtx {
508  int type;
509 
510  int64_t ref_pts;
511 
512  // timestamps of the forced keyframes, in AV_TIME_BASE_Q
513  int64_t *pts;
514  int nb_pts;
515  int index;
516 
519 
522 
523 typedef struct Encoder Encoder;
524 
525 typedef struct OutputStream {
526  const AVClass *class;
527 
529 
530  int file_index; /* file index */
531  int index; /* stream index in the output file */
532 
533  /**
534  * Codec parameters for packets submitted to the muxer (i.e. before
535  * bitstream filtering, if any).
536  */
538 
539  /* input stream that is the source for this output stream;
540  * may be NULL for streams with no well-defined source, e.g.
541  * attachments or outputs from complex filtergraphs */
543 
544  AVStream *st; /* stream in the output file */
545  /* dts of the last packet sent to the muxing queue, in AV_TIME_BASE_Q */
546  int64_t last_mux_dts;
547 
548  // the timebase of the packets sent to the muxer
551 
554 
555  uint64_t nb_frames_dup;
556  uint64_t nb_frames_drop;
557  int64_t last_dropped;
558 
559  /* video only */
563  int is_cfr;
566 #if FFMPEG_ROTATION_METADATA
568 #endif
570  int bitexact;
572 #if FFMPEG_ROTATION_METADATA
574 #endif
575 
577 
579 
580  /* audio only */
581 #if FFMPEG_OPT_MAP_CHANNEL
582  int *audio_channels_map; /* list of the channels id to pick from the source stream */
583  int audio_channels_mapped; /* number of channels in audio_channels_map */
584 #endif
585 
587  FILE *logfile;
588 
590 
594  char *apad;
595  OSTFinished finished; /* no more packets should be written for this stream */
596  int unavailable; /* true if the steram is unavailable (possibly temporarily) */
597 
598  // init_output_stream() has been called for this stream
599  // The encoder and the bitstream filters have been initialized and the stream
600  // parameters are set in the AVStream.
602 
604 
605  const char *attachment_filename;
606 
608 
609  /* stats */
610  // number of packets send to the muxer
612  // number of frames/samples sent to the encoder
613  uint64_t frames_encoded;
614  uint64_t samples_encoded;
615 
616  /* packet quality factor */
617  int quality;
618 
621 
624 
625  /*
626  * bool on whether this stream should be utilized for splitting
627  * subtitles utilizing fix_sub_duration at random access points.
628  */
630 } OutputStream;
631 
632 typedef struct OutputFile {
633  const AVClass *class;
634 
635  int index;
636 
638  const char *url;
639 
642 
644 
645  int64_t recording_time; ///< desired length of the resulting file in microseconds == AV_TIME_BASE units
646  int64_t start_time; ///< start time in microseconds == AV_TIME_BASE units
647 
648  int shortest;
649  int bitexact;
650 } OutputFile;
651 
652 // optionally attached as opaque_ref to decoded AVFrames
653 typedef struct FrameData {
654  uint64_t idx;
655  int64_t pts;
657 
659 } FrameData;
660 
661 extern InputFile **input_files;
662 extern int nb_input_files;
663 
664 extern OutputFile **output_files;
665 extern int nb_output_files;
666 
667 extern FilterGraph **filtergraphs;
668 extern int nb_filtergraphs;
669 
670 extern char *vstats_filename;
671 extern char *sdp_filename;
672 
673 extern float dts_delta_threshold;
674 extern float dts_error_threshold;
675 
677 extern float frame_drop_threshold;
678 extern int do_benchmark;
679 extern int do_benchmark_all;
680 extern int do_hex_dump;
681 extern int do_pkt_dump;
682 extern int copy_ts;
683 extern int start_at_zero;
684 extern int copy_tb;
685 extern int debug_ts;
686 extern int exit_on_error;
687 extern int abort_on_flags;
688 extern int print_stats;
689 extern int64_t stats_period;
690 extern int stdin_interaction;
691 extern AVIOContext *progress_avio;
692 extern float max_error_rate;
693 
694 extern char *filter_nbthreads;
695 extern int filter_complex_nbthreads;
696 extern int vstats_version;
697 extern int auto_conversion_filters;
698 
699 extern const AVIOInterruptCB int_cb;
700 
701 extern const OptionDef options[];
702 extern HWDevice *filter_hw_device;
703 
704 extern unsigned nb_output_dumped;
705 
706 extern int ignore_unknown_streams;
707 extern int copy_unknown_streams;
708 
709 extern int recast_media;
710 
711 extern FILE *vstats_file;
712 
713 #if FFMPEG_OPT_PSNR
714 extern int do_psnr;
715 #endif
716 
717 void term_init(void);
718 void term_exit(void);
719 
720 void show_usage(void);
721 
724 
725 void assert_file_overwrite(const char *filename);
726 char *file_read(const char *filename);
728 const AVCodec *find_codec_or_die(void *logctx, const char *name,
729  enum AVMediaType type, int encoder);
730 int parse_and_set_vsync(const char *arg, int *vsync_var, int file_idx, int st_idx, int is_global);
731 
733 void check_filter_outputs(void);
734 int filtergraph_is_simple(const FilterGraph *fg);
736  char *graph_desc);
738 
739 int copy_av_subtitle(AVSubtitle *dst, const AVSubtitle *src);
740 
741 /**
742  * Get our axiliary frame data attached to the frame, allocating it
743  * if needed.
744  */
746 
747 int ifilter_send_frame(InputFilter *ifilter, AVFrame *frame, int keep_reference);
748 int ifilter_send_eof(InputFilter *ifilter, int64_t pts, AVRational tb);
749 int ifilter_sub2video(InputFilter *ifilter, const AVSubtitle *sub);
750 void ifilter_sub2video_heartbeat(InputFilter *ifilter, int64_t pts, AVRational tb);
751 
752 /**
753  * Set up fallback filtering parameters from a decoder context. They will only
754  * be used if no frames are ever sent on this input, otherwise the actual
755  * parameters are taken from the frame.
756  */
757 int ifilter_parameters_from_dec(InputFilter *ifilter, const AVCodecContext *dec);
758 
760 
761 /**
762  * Create a new filtergraph in the global filtergraph list.
763  *
764  * @param graph_desc Graph description; an av_malloc()ed string, filtergraph
765  * takes ownership of it.
766  */
767 FilterGraph *fg_create(char *graph_desc);
768 
769 void fg_free(FilterGraph **pfg);
770 
771 /**
772  * Perform a step of transcoding for the specified filter graph.
773  *
774  * @param[in] graph filter graph to consider
775  * @param[out] best_ist input stream where a frame would allow to continue
776  * @return 0 for success, <0 for error
777  */
778 int fg_transcode_step(FilterGraph *graph, InputStream **best_ist);
779 
780 /**
781  * Get and encode new output from any of the filtergraphs, without causing
782  * activity.
783  *
784  * @return 0 for success, <0 for severe errors
785  */
786 int reap_filters(int flush);
787 
788 int ffmpeg_parse_options(int argc, char **argv);
789 
791  const AVFrame *frame, const AVPacket *pkt,
792  uint64_t frame_num);
793 
794 HWDevice *hw_device_get_by_name(const char *name);
796 int hw_device_init_from_string(const char *arg, HWDevice **dev);
798  const char *device,
799  HWDevice **dev_out);
800 void hw_device_free_all(void);
801 
802 /**
803  * Get a hardware device to be used with this filtergraph.
804  * The returned reference is owned by the callee, the caller
805  * must ref it explicitly for long-term use.
806  */
808 
810 
811 int dec_open(InputStream *ist);
812 void dec_free(Decoder **pdec);
813 
814 /**
815  * Submit a packet for decoding
816  *
817  * When pkt==NULL and no_eof=0, there will be no more input. Flush decoders and
818  * mark all downstreams as finished.
819  *
820  * When pkt==NULL and no_eof=1, the stream was reset (e.g. after a seek). Flush
821  * decoders and await further input.
822  */
823 int dec_packet(InputStream *ist, const AVPacket *pkt, int no_eof);
824 
825 int enc_alloc(Encoder **penc, const AVCodec *codec);
826 void enc_free(Encoder **penc);
827 
831 void enc_flush(void);
832 
833 /*
834  * Initialize muxing state for the given stream, should be called
835  * after the codec/streamcopy setup has been done.
836  *
837  * Open the muxer once all the streams have been initialized.
838  */
841 int of_open(const OptionsContext *o, const char *filename);
842 void of_close(OutputFile **pof);
843 
844 void of_enc_stats_close(void);
845 
847 
848 /**
849  * @param dts predicted packet dts in AV_TIME_BASE_Q
850  */
851 void of_streamcopy(OutputStream *ost, const AVPacket *pkt, int64_t dts);
852 
853 int64_t of_filesize(OutputFile *of);
854 
855 int ifile_open(const OptionsContext *o, const char *filename);
856 void ifile_close(InputFile **f);
857 
858 /**
859  * Get next input packet from the demuxer.
860  *
861  * @param pkt the packet is written here when this function returns 0
862  * @return
863  * - 0 when a packet has been read successfully
864  * - 1 when stream end was reached, but the stream is looped;
865  * caller should flush decoders and read from this demuxer again
866  * - a negative error code on failure
867  */
869 
871 int ist_filter_add(InputStream *ist, InputFilter *ifilter, int is_simple);
872 
873 /**
874  * Find an unused input stream of given type.
875  */
877 
878 /* iterate over all input streams in all input files;
879  * pass NULL to start iteration */
881 
882 /* iterate over all output streams in all output files;
883  * pass NULL to start iteration */
885 
888 int process_subtitle(InputStream *ist, AVSubtitle *subtitle, int *got_output);
889 void update_benchmark(const char *fmt, ...);
890 
891 /**
892  * Merge two return codes - return one of the error codes if at least one of
893  * them was negative, 0 otherwise.
894  * Currently just picks the first one, eventually we might want to do something
895  * more sophisticated, like sorting them by priority.
896  */
897 static inline int err_merge(int err0, int err1)
898 {
899  return (err0 < 0) ? err0 : FFMIN(err1, 0);
900 }
901 
902 #define SPECIFIER_OPT_FMT_str "%s"
903 #define SPECIFIER_OPT_FMT_i "%i"
904 #define SPECIFIER_OPT_FMT_i64 "%"PRId64
905 #define SPECIFIER_OPT_FMT_ui64 "%"PRIu64
906 #define SPECIFIER_OPT_FMT_f "%f"
907 #define SPECIFIER_OPT_FMT_dbl "%lf"
908 
909 #define WARN_MULTIPLE_OPT_USAGE(name, type, so, st)\
910 {\
911  char namestr[128] = "";\
912  const char *spec = so->specifier && so->specifier[0] ? so->specifier : "";\
913  for (int _i = 0; opt_name_##name[_i]; _i++)\
914  av_strlcatf(namestr, sizeof(namestr), "-%s%s", opt_name_##name[_i], opt_name_##name[_i+1] ? (opt_name_##name[_i+2] ? ", " : " or ") : "");\
915  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",\
916  namestr, st->index, opt_name_##name[0], spec[0] ? ":" : "", spec, so->u.type);\
917 }
918 
919 #define MATCH_PER_STREAM_OPT(name, type, outvar, fmtctx, st)\
920 {\
921  int _ret, _matches = 0;\
922  SpecifierOpt *so;\
923  for (int _i = 0; _i < o->nb_ ## name; _i++) {\
924  char *spec = o->name[_i].specifier;\
925  if ((_ret = check_stream_specifier(fmtctx, st, spec)) > 0) {\
926  outvar = o->name[_i].u.type;\
927  so = &o->name[_i];\
928  _matches++;\
929  } else if (_ret < 0)\
930  exit_program(1);\
931  }\
932  if (_matches > 1)\
933  WARN_MULTIPLE_OPT_USAGE(name, type, so, st);\
934 }
935 
936 #define MATCH_PER_TYPE_OPT(name, type, outvar, fmtctx, mediatype)\
937 {\
938  int i;\
939  for (i = 0; i < o->nb_ ## name; i++) {\
940  char *spec = o->name[i].specifier;\
941  if (!strcmp(spec, mediatype))\
942  outvar = o->name[i].u.type;\
943  }\
944 }
945 
946 extern const char * const opt_name_codec_names[];
947 extern const char * const opt_name_codec_tags[];
948 extern const char * const opt_name_frame_rates[];
949 extern const char * const opt_name_top_field_first[];
950 
951 #endif /* FFTOOLS_FFMPEG_H */
OptionsContext::readrate
float readrate
Definition: ffmpeg.h:134
AVSubtitle
Definition: avcodec.h:2384
OptionsContext::nb_hwaccels
int nb_hwaccels
Definition: ffmpeg.h:146
KeyframeForceCtx::pts
int64_t * pts
Definition: ffmpeg.h:513
OptionsContext::nb_codec_names
int nb_codec_names
Definition: ffmpeg.h:114
InputFile::format_nots
int format_nots
Definition: ffmpeg.h:418
AVCodec
AVCodec.
Definition: codec.h:187
OptionsContext::input_ts_offset
int64_t input_ts_offset
Definition: ffmpeg.h:131
OutputStream::nb_frames_drop
uint64_t nb_frames_drop
Definition: ffmpeg.h:556
of_open
int of_open(const OptionsContext *o, const char *filename)
Definition: ffmpeg_mux_init.c:2365
OutputFilter::last_pts
int64_t last_pts
Definition: ffmpeg.h:310
OptionsContext::enc_stats_post_fmt
SpecifierOpt * enc_stats_post_fmt
Definition: ffmpeg.h:274
InputFile::start_time
int64_t start_time
Definition: ffmpeg.h:430
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:167
StreamMap::file_index
int file_index
Definition: ffmpeg.h:86
KeyframeForceCtx::dropped_keyframe
int dropped_keyframe
Definition: ffmpeg.h:520
OutputStream::sq_idx_mux
int sq_idx_mux
Definition: ffmpeg.h:620
OutputFilter::graph
struct FilterGraph * graph
Definition: ffmpeg.h:288
FKF_PREV_FORCED_T
@ FKF_PREV_FORCED_T
Definition: ffmpeg.h:452
OptionsContext::canvas_sizes
SpecifierOpt * canvas_sizes
Definition: ffmpeg.h:238
InputStream::hwaccel_device
char * hwaccel_device
Definition: ffmpeg.h:394
VSYNC_VFR
@ VSYNC_VFR
Definition: ffmpeg.h:64
EncStatsComponent::type
enum EncStatsType type
Definition: ffmpeg.h:482
OptionsContext::dump_attachment
SpecifierOpt * dump_attachment
Definition: ffmpeg.h:143
ofilter_bind_ost
void ofilter_bind_ost(OutputFilter *ofilter, OutputStream *ost)
Definition: ffmpeg_filter.c:647
OutputStream::attachment_filename
const char * attachment_filename
Definition: ffmpeg.h:605
OutputFilter::ch_layouts
const AVChannelLayout * ch_layouts
Definition: ffmpeg.h:306
configure_filtergraph
int configure_filtergraph(FilterGraph *fg)
Definition: ffmpeg_filter.c:1468
OptionsContext::nb_audio_sample_rate
int nb_audio_sample_rate
Definition: ffmpeg.h:120
nb_filtergraphs
int nb_filtergraphs
Definition: ffmpeg.c:134
OptionsContext::nb_max_frame_rates
int nb_max_frame_rates
Definition: ffmpeg.h:124
OptionsContext::intra_matrices
SpecifierOpt * intra_matrices
Definition: ffmpeg.h:212
InputStream::framerate_guessed
AVRational framerate_guessed
Definition: ffmpeg.h:355
FrameData
Definition: ffmpeg.h:653
OptionsContext::nb_time_bases
int nb_time_bases
Definition: ffmpeg.h:259
ENC_STATS_PTS
@ ENC_STATS_PTS
Definition: ffmpeg.h:468
OptionsContext::nb_mux_stats
int nb_mux_stats
Definition: ffmpeg.h:271
ENC_STATS_FRAME_NUM_IN
@ ENC_STATS_FRAME_NUM_IN
Definition: ffmpeg.h:465
KF_FORCE_SOURCE_NO_DROP
@ KF_FORCE_SOURCE_NO_DROP
Definition: ffmpeg.h:504
FKF_PREV_FORCED_N
@ FKF_PREV_FORCED_N
Definition: ffmpeg.h:451
OptionsContext::nb_audio_ch_layouts
int nb_audio_ch_layouts
Definition: ffmpeg.h:116
AVCodecParameters
This struct describes the properties of an encoded stream.
Definition: codec_par.h:54
OutputStream::enc_ctx
AVCodecContext * enc_ctx
Definition: ffmpeg.h:553
OutputStream::nb_frames_dup
uint64_t nb_frames_dup
Definition: ffmpeg.h:555
OptionsContext::nb_rc_overrides
int nb_rc_overrides
Definition: ffmpeg.h:211
thread.h
FilterGraph::inputs
InputFilter ** inputs
Definition: ffmpeg.h:321
ENC_STATS_DTS
@ ENC_STATS_DTS
Definition: ffmpeg.h:472
fg_free
void fg_free(FilterGraph **pfg)
Definition: ffmpeg_filter.c:724
vstats_file
FILE * vstats_file
Definition: ffmpeg.c:111
OptionsContext::hwaccels
SpecifierOpt * hwaccels
Definition: ffmpeg.h:145
OptionsContext::apad
SpecifierOpt * apad
Definition: ffmpeg.h:250
OutputStream::par_in
AVCodecParameters * par_in
Codec parameters for packets submitted to the muxer (i.e.
Definition: ffmpeg.h:537
InputStream::outputs
struct OutputStream ** outputs
Definition: ffmpeg.h:386
KeyframeForceCtx::nb_pts
int nb_pts
Definition: ffmpeg.h:514
frame_drop_threshold
float frame_drop_threshold
Definition: ffmpeg_opt.c:71
rational.h
InputStream::dec_ctx
AVCodecContext * dec_ctx
Definition: ffmpeg.h:351
InputStream::user_set_discard
int user_set_discard
Definition: ffmpeg.h:337
OptionsContext::rc_overrides
SpecifierOpt * rc_overrides
Definition: ffmpeg.h:210
OutputStream::packets_written
atomic_uint_least64_t packets_written
Definition: ffmpeg.h:611
OptionsContext::nb_metadata
int nb_metadata
Definition: ffmpeg.h:185
OptionsContext::nb_hwaccel_devices
int nb_hwaccel_devices
Definition: ffmpeg.h:148
ENC_STATS_AVG_BITRATE
@ ENC_STATS_AVG_BITRATE
Definition: ffmpeg.h:478
InputFile::readrate
float readrate
Definition: ffmpeg.h:439
OutputStream::keep_pix_fmt
int keep_pix_fmt
Definition: ffmpeg.h:607
process_subtitle
int process_subtitle(InputStream *ist, AVSubtitle *subtitle, int *got_output)
Definition: ffmpeg_dec.c:331
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:183
OptionsContext::nb_attachments
int nb_attachments
Definition: ffmpeg.h:162
OutputFile::start_time
int64_t start_time
start time in microseconds == AV_TIME_BASE units
Definition: ffmpeg.h:646
OptionsContext::frame_aspect_ratios
SpecifierOpt * frame_aspect_ratios
Definition: ffmpeg.h:202
progress_avio
AVIOContext * progress_avio
Definition: ffmpeg.c:125
InputFile::index
int index
Definition: ffmpeg.h:415
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
of_filesize
int64_t of_filesize(OutputFile *of)
Definition: ffmpeg_mux.c:942
OutputStream::unavailable
int unavailable
Definition: ffmpeg.h:596
OptionsContext::mux_max_delay
float mux_max_delay
Definition: ffmpeg.h:170
OptionsContext::nb_chroma_intra_matrices
int nb_chroma_intra_matrices
Definition: ffmpeg.h:217
OptionsContext::nb_pass
int nb_pass
Definition: ffmpeg.h:241
OutputStream::rotate_overridden
int rotate_overridden
Definition: ffmpeg.h:567
FKF_T
@ FKF_T
Definition: ffmpeg.h:453
sync_queue.h
LastFrameDuration::stream_idx
int stream_idx
Definition: ffmpeg.h:408
ENC_STATS_LITERAL
@ ENC_STATS_LITERAL
Definition: ffmpeg.h:461
OptionsContext::subtitle_disable
int subtitle_disable
Definition: ffmpeg.h:177
ifilter_parameters_from_dec
int ifilter_parameters_from_dec(InputFilter *ifilter, const AVCodecContext *dec)
Set up fallback filtering parameters from a decoder context.
Definition: ffmpeg_filter.c:1598
OptionsContext::nb_apad
int nb_apad
Definition: ffmpeg.h:251
OptionsContext::qscale
SpecifierOpt * qscale
Definition: ffmpeg.h:194
OutputStream::index
int index
Definition: ffmpeg.h:531
b
#define b
Definition: input.c:41
FilterGraph::index
int index
Definition: ffmpeg.h:314
OptionsContext::inter_matrices
SpecifierOpt * inter_matrices
Definition: ffmpeg.h:214
AudioChannelMap::stream_idx
int stream_idx
Definition: ffmpeg.h:93
KeyframeForceCtx::type
int type
Definition: ffmpeg.h:508
InputStream::nb_filters
int nb_filters
Definition: ffmpeg.h:379
int_cb
const AVIOInterruptCB int_cb
Definition: ffmpeg.c:350
OutputStream::sws_dict
AVDictionary * sws_dict
Definition: ffmpeg.h:592
nb_output_files
int nb_output_files
Definition: ffmpeg.c:131
show_usage
void show_usage(void)
Definition: ffmpeg_opt.c:1201
FilterGraph::nb_inputs
int nb_inputs
Definition: ffmpeg.h:322
OptionsContext::bitexact
int bitexact
Definition: ffmpeg.h:173
OptionsContext::audio_channels
SpecifierOpt * audio_channels
Definition: ffmpeg.h:117
OptionsContext::nb_frame_rates
int nb_frame_rates
Definition: ffmpeg.h:122
AVDictionary
Definition: dict.c:32
HWDevice
Definition: ffmpeg.h:77
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:128
of_output_packet
void of_output_packet(OutputFile *of, OutputStream *ost, AVPacket *pkt)
Definition: ffmpeg_mux.c:327
enc_stats_write
void enc_stats_write(OutputStream *ost, EncStats *es, const AVFrame *frame, const AVPacket *pkt, uint64_t frame_num)
Definition: ffmpeg_enc.c:548
LastFrameDuration
Definition: ffmpeg.h:407
InputStream::decoding_needed
int decoding_needed
Definition: ffmpeg.h:338
OptionsContext::format
const char * format
Definition: ffmpeg.h:111
InputFile::input_sync_ref
int input_sync_ref
Definition: ffmpeg.h:424
OutputStream::rotate_override_value
double rotate_override_value
Definition: ffmpeg.h:573
ost
static AVStream * ost
Definition: vaapi_transcode.c:42
OutputStream::last_dropped
int64_t last_dropped
Definition: ffmpeg.h:557
OptionsContext::nb_disposition
int nb_disposition
Definition: ffmpeg.h:255
OutputStream::fix_sub_duration_heartbeat
unsigned int fix_sub_duration_heartbeat
Definition: ffmpeg.h:629
ist_filter_add
int ist_filter_add(InputStream *ist, InputFilter *ifilter, int is_simple)
Definition: ffmpeg_demux.c:890
OutputStream::ist
InputStream * ist
Definition: ffmpeg.h:542
ENC_STATS_TIMEBASE_IN
@ ENC_STATS_TIMEBASE_IN
Definition: ffmpeg.h:467
AVIOInterruptCB
Callback for checking whether to abort blocking functions.
Definition: avio.h:59
OptionDef
Definition: cmdutils.h:146
InputStream::nb_outputs
int nb_outputs
Definition: ffmpeg.h:387
OptionsContext::display_rotations
SpecifierOpt * display_rotations
Definition: ffmpeg.h:204
OptionsContext::nb_guess_layout_max
int nb_guess_layout_max
Definition: ffmpeg.h:249
OutputFile::nb_streams
int nb_streams
Definition: ffmpeg.h:641
InputFile::eof_reached
int eof_reached
Definition: ffmpeg.h:421
InputStream
Definition: ffmpeg.h:329
filter_nbthreads
char * filter_nbthreads
Definition: ffmpeg_opt.c:85
OptionsContext::chapters_input_file
int chapters_input_file
Definition: ffmpeg.h:164
debug_ts
int debug_ts
Definition: ffmpeg_opt.c:79
OptionsContext::nb_presets
int nb_presets
Definition: ffmpeg.h:223
stats_period
int64_t stats_period
Definition: ffmpeg_opt.c:89
OptionsContext::rate_emu
int rate_emu
Definition: ffmpeg.h:133
OutputStream::vsync_method
enum VideoSyncMethod vsync_method
Definition: ffmpeg.h:562
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:445
bsf.h
vstats_version
int vstats_version
Definition: ffmpeg_opt.c:87
trigger_fix_sub_duration_heartbeat
int trigger_fix_sub_duration_heartbeat(OutputStream *ost, const AVPacket *pkt)
Definition: ffmpeg.c:750
assert_file_overwrite
void assert_file_overwrite(const char *filename)
Definition: ffmpeg_opt.c:655
OutputStream::initialized
int initialized
Definition: ffmpeg.h:601
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:144
OptionsContext::g
OptionGroup * g
Definition: ffmpeg.h:105
InputStream::sub2video
struct InputStream::sub2video sub2video
OptionsContext::nb_display_vflips
int nb_display_vflips
Definition: ffmpeg.h:209
StreamMap::disabled
int disabled
Definition: ffmpeg.h:85
AudioChannelMap::ostream_idx
int ostream_idx
Definition: ffmpeg.h:94
OutputStream::logfile_prefix
char * logfile_prefix
Definition: ffmpeg.h:586
EncStatsComponent::str_len
size_t str_len
Definition: ffmpeg.h:485
OptionsContext::nb_top_field_first
int nb_top_field_first
Definition: ffmpeg.h:219
InputStream::decoder_opts
AVDictionary * decoder_opts
Definition: ffmpeg.h:359
OptionsContext::nb_autorotate
int nb_autorotate
Definition: ffmpeg.h:152
KeyframeForceCtx::ref_pts
int64_t ref_pts
Definition: ffmpeg.h:510
OptionsContext::nb_reinit_filters
int nb_reinit_filters
Definition: ffmpeg.h:233
OutputFilter::sample_rate
int sample_rate
Definition: ffmpeg.h:300
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
DemuxPktData
Definition: ffmpeg.h:98
pts
static int64_t pts
Definition: transcode_aac.c:643
OptionsContext
Definition: ffmpeg.h:104
assert_avoptions
void assert_avoptions(AVDictionary *m)
Definition: ffmpeg.c:454
OptionsContext::time_bases
SpecifierOpt * time_bases
Definition: ffmpeg.h:258
FrameData::tb
AVRational tb
Definition: ffmpeg.h:656
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:159
InputFile
Definition: ffmpeg.h:412
OptionsContext::recording_time
int64_t recording_time
Definition: ffmpeg.h:166
input_files
InputFile ** input_files
Definition: ffmpeg.c:127
OptionsContext::pass
SpecifierOpt * pass
Definition: ffmpeg.h:240
OutputFilter::sample_rates
const int * sample_rates
Definition: ffmpeg.h:307
OptionsContext::nb_stream_maps
int nb_stream_maps
Definition: ffmpeg.h:156
OptionsContext::audio_disable
int audio_disable
Definition: ffmpeg.h:176
InputStream::hwaccel_pix_fmt
enum AVPixelFormat hwaccel_pix_fmt
Definition: ffmpeg.h:398
OutputFile::shortest
int shortest
Definition: ffmpeg.h:648
FrameData::frame_rate_filter
AVRational frame_rate_filter
Definition: ffmpeg.h:658
InputStream::codec_desc
const AVCodecDescriptor * codec_desc
Definition: ffmpeg.h:353
OptionsContext::enc_stats_post
SpecifierOpt * enc_stats_post
Definition: ffmpeg.h:268
OptionsContext::nb_enc_stats_pre_fmt
int nb_enc_stats_pre_fmt
Definition: ffmpeg.h:273
pkt
AVPacket * pkt
Definition: movenc.c:59
AudioChannelMap
Definition: ffmpeg.h:92
OptionsContext::presets
SpecifierOpt * presets
Definition: ffmpeg.h:222
OptionsContext::copy_initial_nonkeyframes
SpecifierOpt * copy_initial_nonkeyframes
Definition: ffmpeg.h:224
OutputStream::enc
Encoder * enc
Definition: ffmpeg.h:552
OptionsContext::codec_names
SpecifierOpt * codec_names
Definition: ffmpeg.h:113
ENC_STATS_PTS_IN
@ ENC_STATS_PTS_IN
Definition: ffmpeg.h:470
term_init
void term_init(void)
Definition: ffmpeg.c:245
OptionsContext::nb_program
int nb_program
Definition: ffmpeg.h:257
fg_transcode_step
int fg_transcode_step(FilterGraph *graph, InputStream **best_ist)
Perform a step of transcoding for the specified filter graph.
Definition: ffmpeg_filter.c:1939
StreamMap::linklabel
char * linklabel
Definition: ffmpeg.h:88
OutputFilter::width
int width
Definition: ffmpeg.h:298
HWACCEL_GENERIC
@ HWACCEL_GENERIC
Definition: ffmpeg.h:74
VSYNC_VSCFR
@ VSYNC_VSCFR
Definition: ffmpeg.h:65
EncStats::components
EncStatsComponent * components
Definition: ffmpeg.h:489
AVCodecDescriptor
This struct describes the properties of a single codec described by an AVCodecID.
Definition: codec_desc.h:38
s
#define s(width, name)
Definition: cbs_vp9.c:256
FilterGraph::outputs
OutputFilter ** outputs
Definition: ffmpeg.h:323
vstats_filename
char * vstats_filename
Definition: ffmpeg_opt.c:63
OutputStream::frame_aspect_ratio
AVRational frame_aspect_ratio
Definition: ffmpeg.h:576
ifilter_sub2video_heartbeat
void ifilter_sub2video_heartbeat(InputFilter *ifilter, int64_t pts, AVRational tb)
Definition: ffmpeg_filter.c:1732
InputStream::framerate
AVRational framerate
Definition: ffmpeg.h:360
do_psnr
int do_psnr
Definition: ffmpeg_opt.c:95
OutputStream::mux_timebase
AVRational mux_timebase
Definition: ffmpeg.h:549
OptionsContext::nb_bits_per_raw_sample
int nb_bits_per_raw_sample
Definition: ffmpeg.h:265
ENC_STATS_FILE_IDX
@ ENC_STATS_FILE_IDX
Definition: ffmpeg.h:462
ENCODER_FINISHED
@ ENCODER_FINISHED
Definition: ffmpeg.h:498
OptionsContext::limit_filesize
int64_t limit_filesize
Definition: ffmpeg.h:168
OutputFilter::linklabel
uint8_t * linklabel
Definition: ffmpeg.h:293
OutputStream::audio_channels_mapped
int audio_channels_mapped
Definition: ffmpeg.h:583
InputFilter
Definition: ffmpeg.h:280
OptionsContext::audio_ch_layouts
SpecifierOpt * audio_ch_layouts
Definition: ffmpeg.h:115
ENC_STATS_BITRATE
@ ENC_STATS_BITRATE
Definition: ffmpeg.h:477
AVHWDeviceType
AVHWDeviceType
Definition: hwcontext.h:27
OutputFilter::ost
struct OutputStream * ost
Definition: ffmpeg.h:287
OptionsContext::nb_enc_stats_post
int nb_enc_stats_post
Definition: ffmpeg.h:269
forced_keyframes_const
forced_keyframes_const
Definition: ffmpeg.h:448
ignore_unknown_streams
int ignore_unknown_streams
Definition: ffmpeg_opt.c:97
MUXER_FINISHED
@ MUXER_FINISHED
Definition: ffmpeg.h:499
InputStream::filters
InputFilter ** filters
Definition: ffmpeg.h:378
OptionsContext::nb_copy_initial_nonkeyframes
int nb_copy_initial_nonkeyframes
Definition: ffmpeg.h:225
max_error_rate
float max_error_rate
Definition: ffmpeg_opt.c:84
AVExpr
Definition: eval.c:157
OptionsContext::sample_fmts
SpecifierOpt * sample_fmts
Definition: ffmpeg.h:192
OptionsContext::shortest
int shortest
Definition: ffmpeg.h:172
InputStream::hwaccel_retrieve_data
int(* hwaccel_retrieve_data)(AVCodecContext *s, AVFrame *frame)
Definition: ffmpeg.h:397
InputFilter::graph
struct FilterGraph * graph
Definition: ffmpeg.h:281
AVThreadMessageQueue
Definition: threadmessage.c:27
OptionsContext::accurate_seek
int accurate_seek
Definition: ffmpeg.h:136
OutputStream::enc_stats_pre
EncStats enc_stats_pre
Definition: ffmpeg.h:622
OptionsContext::nb_canvas_sizes
int nb_canvas_sizes
Definition: ffmpeg.h:239
OptionsContext::nb_max_muxing_queue_size
int nb_max_muxing_queue_size
Definition: ffmpeg.h:245
OutputStream::bitexact
int bitexact
Definition: ffmpeg.h:570
dec_open
int dec_open(InputStream *ist)
Definition: ffmpeg_dec.c:731
arg
const char * arg
Definition: jacosubdec.c:67
KeyframeForceCtx::expr_const_values
double expr_const_values[FKF_NB]
Definition: ffmpeg.h:518
of_enc_stats_close
void of_enc_stats_close(void)
Definition: ffmpeg_mux_init.c:230
OutputStream::encoder_opts
AVDictionary * encoder_opts
Definition: ffmpeg.h:591
OptionsContext::start_time
int64_t start_time
Definition: ffmpeg.h:108
AVFormatContext
Format I/O context.
Definition: avformat.h:1104
OutputFilter::height
int height
Definition: ffmpeg.h:298
OptionsContext::nb_filter_scripts
int nb_filter_scripts
Definition: ffmpeg.h:231
OptionsContext::reinit_filters
SpecifierOpt * reinit_filters
Definition: ffmpeg.h:232
AVClass
Describe the class of an AVClass context structure.
Definition: log.h:66
OutputFilter::name
uint8_t * name
Definition: ffmpeg.h:289
InputStream::sub2video::w
int w
Definition: ffmpeg.h:373
InputStream::top_field_first
int top_field_first
Definition: ffmpeg.h:361
InputStream::st
AVStream * st
Definition: ffmpeg.h:335
OptionsContext::nb_fix_sub_duration_heartbeat
int nb_fix_sub_duration_heartbeat
Definition: ffmpeg.h:237
forced_keyframes_const_names
const char *const forced_keyframes_const_names[]
Definition: ffmpeg_mux_init.c:2171
OptionsContext::filters
SpecifierOpt * filters
Definition: ffmpeg.h:228
OptionsContext::frame_sizes
SpecifierOpt * frame_sizes
Definition: ffmpeg.h:125
InputFile::start_time_effective
int64_t start_time_effective
Effective format start time based on enabled streams.
Definition: ffmpeg.h:428
Decoder
Definition: ffmpeg_dec.c:34
ENC_STATS_PTS_TIME
@ ENC_STATS_PTS_TIME
Definition: ffmpeg.h:469
hw_device_init_from_type
int hw_device_init_from_type(enum AVHWDeviceType type, const char *device, HWDevice **dev_out)
Definition: ffmpeg_hw.c:245
of_close
void of_close(OutputFile **pof)
Definition: ffmpeg_mux.c:915
AVRational
Rational number (pair of numerator and denominator).
Definition: rational.h:58
OptionsContext::fix_sub_duration
SpecifierOpt * fix_sub_duration
Definition: ffmpeg.h:234
OptionsContext::codec_tags
SpecifierOpt * codec_tags
Definition: ffmpeg.h:190
OptionsContext::force_fps
SpecifierOpt * force_fps
Definition: ffmpeg.h:200
DemuxPktData::dts_est
int64_t dts_est
Definition: ffmpeg.h:101
OptionsContext::nb_intra_matrices
int nb_intra_matrices
Definition: ffmpeg.h:213
OutputStream::audio_channels_map
int * audio_channels_map
Definition: ffmpeg.h:582
InputStream::hwaccel_id
enum HWAccelID hwaccel_id
Definition: ffmpeg.h:392
EncStats
Definition: ffmpeg.h:488
OutputStream::frame_rate
AVRational frame_rate
Definition: ffmpeg.h:560
copy_unknown_streams
int copy_unknown_streams
Definition: ffmpeg_opt.c:98
ifile_get_packet
int ifile_get_packet(InputFile *f, AVPacket **pkt)
Get next input packet from the demuxer.
Definition: ffmpeg_demux.c:745
InputStream::fix_sub_duration
int fix_sub_duration
Definition: ffmpeg.h:365
OutputStream::top_field_first
int top_field_first
Definition: ffmpeg.h:565
InputStream::hwaccel_output_format
enum AVPixelFormat hwaccel_output_format
Definition: ffmpeg.h:395
opt_name_top_field_first
const char *const opt_name_top_field_first[]
Definition: ffmpeg_opt.c:59
update_benchmark
void update_benchmark(const char *fmt,...)
Definition: ffmpeg.c:463
OptionsContext::max_frames
SpecifierOpt * max_frames
Definition: ffmpeg.h:186
AVFilterGraph
Definition: avfilter.h:864
do_benchmark_all
int do_benchmark_all
Definition: ffmpeg_opt.c:73
filtergraphs
FilterGraph ** filtergraphs
Definition: ffmpeg.c:133
OptionsContext::nb_display_hflips
int nb_display_hflips
Definition: ffmpeg.h:207
OptionsContext::input_sync_ref
int input_sync_ref
Definition: ffmpeg.h:138
OutputFile::index
int index
Definition: ffmpeg.h:635
OptionGroup
Definition: cmdutils.h:250
OptionsContext::program
SpecifierOpt * program
Definition: ffmpeg.h:256
OptionsContext::nb_enc_stats_pre
int nb_enc_stats_pre
Definition: ffmpeg.h:267
ENC_STATS_PTS_TIME_IN
@ ENC_STATS_PTS_TIME_IN
Definition: ffmpeg.h:471
FilterGraph::nb_outputs
int nb_outputs
Definition: ffmpeg.h:324
OutputStream::logfile
FILE * logfile
Definition: ffmpeg.h:587
swresample.h
OptionsContext::nb_metadata_map
int nb_metadata_map
Definition: ffmpeg.h:221
InputStream::par
AVCodecParameters * par
Codec parameters - to be used by the decoding/streamcopy code.
Definition: ffmpeg.h:349
OptionsContext::nb_filters
int nb_filters
Definition: ffmpeg.h:229
OutputFile::streams
OutputStream ** streams
Definition: ffmpeg.h:640
InputStream::frames_decoded
uint64_t frames_decoded
Definition: ffmpeg.h:402
recast_media
int recast_media
Definition: ffmpeg_opt.c:99
OptionsContext::nb_fps_mode
int nb_fps_mode
Definition: ffmpeg.h:199
FilterGraph
Definition: ffmpeg.h:313
OptionsContext::display_hflips
SpecifierOpt * display_hflips
Definition: ffmpeg.h:206
print_stats
int print_stats
Definition: ffmpeg_opt.c:82
nb_output_dumped
unsigned nb_output_dumped
Definition: ffmpeg.c:122
options
const OptionDef options[]
VideoSyncMethod
VideoSyncMethod
Definition: ffmpeg.h:60
eval.h
OutputStream::force_fps
int force_fps
Definition: ffmpeg.h:564
OptionsContext::nb_frame_aspect_ratios
int nb_frame_aspect_ratios
Definition: ffmpeg.h:203
OutputStream::filter
OutputFilter * filter
Definition: ffmpeg.h:589
f
f
Definition: af_crystalizer.c:122
AVIOContext
Bytestream IO Context.
Definition: avio.h:166
InputStream::hwaccel_device_type
enum AVHWDeviceType hwaccel_device_type
Definition: ffmpeg.h:393
OptionsContext::thread_queue_size
int thread_queue_size
Definition: ffmpeg.h:137
AVMediaType
AVMediaType
Definition: avutil.h:199
AVChannelLayout
An AVChannelLayout holds information about the channel layout of audio data.
Definition: channel_layout.h:301
threadmessage.h
InputStream::file_index
int file_index
Definition: ffmpeg.h:332
filtergraph_is_simple
int filtergraph_is_simple(const FilterGraph *fg)
Definition: ffmpeg_filter.c:1661
of_streamcopy
void of_streamcopy(OutputStream *ost, const AVPacket *pkt, int64_t dts)
Definition: ffmpeg_mux.c:386
FilterGraph::graph
AVFilterGraph * graph
Definition: ffmpeg.h:316
EncStatsType
EncStatsType
Definition: ffmpeg.h:460
ifilter_send_frame
int ifilter_send_frame(InputFilter *ifilter, AVFrame *frame, int keep_reference)
Definition: ffmpeg_filter.c:1842
InputStream::got_output
int got_output
Definition: ffmpeg.h:367
StreamMap
Definition: ffmpeg.h:84
ENC_STATS_NB_SAMPLES
@ ENC_STATS_NB_SAMPLES
Definition: ffmpeg.h:475
copy_ts
int copy_ts
Definition: ffmpeg_opt.c:76
OptionsContext::filter_scripts
SpecifierOpt * filter_scripts
Definition: ffmpeg.h:230
avio.h
copy_tb
int copy_tb
Definition: ffmpeg_opt.c:78
OptionsContext::seek_timestamp
int seek_timestamp
Definition: ffmpeg.h:110
reap_filters
int reap_filters(int flush)
Get and encode new output from any of the filtergraphs, without causing activity.
Definition: ffmpeg_filter.c:1667
hwaccel_decode_init
int hwaccel_decode_init(AVCodecContext *avctx)
Definition: ffmpeg_hw.c:342
OptionsContext::top_field_first
SpecifierOpt * top_field_first
Definition: ffmpeg.h:218
HWDevice::device_ref
AVBufferRef * device_ref
Definition: ffmpeg.h:80
OutputStream::type
enum AVMediaType type
Definition: ffmpeg.h:528
OutputFile::url
const char * url
Definition: ffmpeg.h:638
hw_device_get_by_type
HWDevice * hw_device_get_by_type(enum AVHWDeviceType type)
Definition: ffmpeg_hw.c:30
OptionsContext::nb_discard
int nb_discard
Definition: ffmpeg.h:253
FrameData::idx
uint64_t idx
Definition: ffmpeg.h:654
OptionsContext::readrate_initial_burst
double readrate_initial_burst
Definition: ffmpeg.h:135
OSTFinished
OSTFinished
Definition: ffmpeg.h:497
OutputFilter::filter
AVFilterContext * filter
Definition: ffmpeg.h:286
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
enc_alloc
int enc_alloc(Encoder **penc, const AVCodec *codec)
Definition: ffmpeg_enc.c:89
copy_av_subtitle
int copy_av_subtitle(AVSubtitle *dst, const AVSubtitle *src)
Definition: ffmpeg.c:651
InputStream::samples_decoded
uint64_t samples_decoded
Definition: ffmpeg.h:403
FrameData::pts
int64_t pts
Definition: ffmpeg.h:655
OptionsContext::find_stream_info
int find_stream_info
Definition: ffmpeg.h:139
strip_specifiers
AVDictionary * strip_specifiers(const AVDictionary *dict)
Definition: ffmpeg_opt.c:166
check_filter_outputs
void check_filter_outputs(void)
Definition: ffmpeg_filter.c:1214
OptionsContext::metadata
SpecifierOpt * metadata
Definition: ffmpeg.h:184
OutputStream::kf
KeyframeForceCtx kf
Definition: ffmpeg.h:578
do_benchmark
int do_benchmark
Definition: ffmpeg_opt.c:72
Encoder
Definition: ffmpeg_enc.c:46
OptionsContext::nb_autoscale
int nb_autoscale
Definition: ffmpeg.h:263
OutputFile::sq_encode
SyncQueue * sq_encode
Definition: ffmpeg.h:643
KF_FORCE_SOURCE
@ KF_FORCE_SOURCE
Definition: ffmpeg.h:503
close_output_stream
void close_output_stream(OutputStream *ost)
Definition: ffmpeg.c:484
OptionsContext::frame_rates
SpecifierOpt * frame_rates
Definition: ffmpeg.h:121
ENC_STATS_FRAME_NUM
@ ENC_STATS_FRAME_NUM
Definition: ffmpeg.h:464
KeyframeForceCtx
Definition: ffmpeg.h:507
OutputFilter::type
enum AVMediaType type
Definition: ffmpeg.h:295
HWACCEL_AUTO
@ HWACCEL_AUTO
Definition: ffmpeg.h:73
OptionsContext::autorotate
SpecifierOpt * autorotate
Definition: ffmpeg.h:151
OutputStream::max_frame_rate
AVRational max_frame_rate
Definition: ffmpeg.h:561
OutputStream::apad
char * apad
Definition: ffmpeg.h:594
OptionsContext::nb_hwaccel_output_formats
int nb_hwaccel_output_formats
Definition: ffmpeg.h:150
init_complex_filtergraph
int init_complex_filtergraph(FilterGraph *fg)
Definition: ffmpeg_filter.c:937
OptionsContext::forced_key_frames
SpecifierOpt * forced_key_frames
Definition: ffmpeg.h:196
AVOutputFormat
Definition: avformat.h:507
OptionsContext::mux_stats_fmt
SpecifierOpt * mux_stats_fmt
Definition: ffmpeg.h:276
OptionsContext::metadata_map
SpecifierOpt * metadata_map
Definition: ffmpeg.h:220
InputStream::ret
int ret
Definition: ffmpeg.h:368
InputStream::want_frame_data
int want_frame_data
Definition: ffmpeg.h:342
OptionsContext::enc_stats_pre
SpecifierOpt * enc_stats_pre
Definition: ffmpeg.h:266
StreamMap::stream_index
int stream_index
Definition: ffmpeg.h:87
OptionsContext::nb_qscale
int nb_qscale
Definition: ffmpeg.h:195
OptionsContext::mux_stats
SpecifierOpt * mux_stats
Definition: ffmpeg.h:270
OptionsContext::stream_maps
StreamMap * stream_maps
Definition: ffmpeg.h:155
OptionsContext::nb_ts_scale
int nb_ts_scale
Definition: ffmpeg.h:142
find_codec_or_die
const AVCodec * find_codec_or_die(void *logctx, const char *name, enum AVMediaType type, int encoder)
Definition: ffmpeg_opt.c:625
OptionsContext::audio_sample_rate
SpecifierOpt * audio_sample_rate
Definition: ffmpeg.h:119
OptionsContext::start_time_eof
int64_t start_time_eof
Definition: ffmpeg.h:109
VSYNC_CFR
@ VSYNC_CFR
Definition: ffmpeg.h:63
OptionsContext::shortest_buf_duration
float shortest_buf_duration
Definition: ffmpeg.h:171
OutputFile::bitexact
int bitexact
Definition: ffmpeg.h:649
OptionsContext::nb_fix_sub_duration
int nb_fix_sub_duration
Definition: ffmpeg.h:235
exit_on_error
int exit_on_error
Definition: ffmpeg_opt.c:80
output_files
OutputFile ** output_files
Definition: ffmpeg.c:130
OptionsContext::nb_frame_pix_fmts
int nb_frame_pix_fmts
Definition: ffmpeg.h:128
InputFile::ctx
AVFormatContext * ctx
Definition: ffmpeg.h:420
FFMIN
#define FFMIN(a, b)
Definition: macros.h:49
InputFile::accurate_seek
int accurate_seek
Definition: ffmpeg.h:440
ost_iter
OutputStream * ost_iter(OutputStream *prev)
Definition: ffmpeg.c:402
tb
#define tb
Definition: regdef.h:68
OptionsContext::nb_copy_prior_start
int nb_copy_prior_start
Definition: ffmpeg.h:227
ENC_STATS_STREAM_IDX
@ ENC_STATS_STREAM_IDX
Definition: ffmpeg.h:463
OptionsContext::bits_per_raw_sample
SpecifierOpt * bits_per_raw_sample
Definition: ffmpeg.h:264
enc_frame
void enc_frame(OutputStream *ost, AVFrame *frame)
Definition: ffmpeg_enc.c:1116
ENC_STATS_SAMPLE_NUM
@ ENC_STATS_SAMPLE_NUM
Definition: ffmpeg.h:474
OptionsContext::bitstream_filters
SpecifierOpt * bitstream_filters
Definition: ffmpeg.h:188
OptionsContext::streamid_map
int * streamid_map
Definition: ffmpeg.h:181
InputFile::recording_time
int64_t recording_time
Definition: ffmpeg.h:431
avcodec.h
OptionsContext::passlogfiles
SpecifierOpt * passlogfiles
Definition: ffmpeg.h:242
InputStream::decoder
Decoder * decoder
Definition: ffmpeg.h:350
SpecifierOpt
Definition: cmdutils.h:134
OptionsContext::autoscale
SpecifierOpt * autoscale
Definition: ffmpeg.h:262
AVStream
Stream structure.
Definition: avformat.h:838
dec_free
void dec_free(Decoder **pdec)
Definition: ffmpeg_dec.c:48
OptionsContext::nb_bitstream_filters
int nb_bitstream_filters
Definition: ffmpeg.h:189
enc_free
void enc_free(Encoder **penc)
Definition: ffmpeg_enc.c:74
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:282
OptionsContext::nb_streamid_map
int nb_streamid_map
Definition: ffmpeg.h:182
VSYNC_DROP
@ VSYNC_DROP
Definition: ffmpeg.h:66
sdp_filename
char * sdp_filename
Definition: ffmpeg_opt.c:64
dec_packet
int dec_packet(InputStream *ist, const AVPacket *pkt, int no_eof)
Submit a packet for decoding.
Definition: ffmpeg_dec.c:424
OutputFilter::ch_layout
AVChannelLayout ch_layout
Definition: ffmpeg.h:301
OptionsContext::audio_channel_maps
AudioChannelMap * audio_channel_maps
Definition: ffmpeg.h:158
InputFile::streams
InputStream ** streams
Definition: ffmpeg.h:436
InputStream::reinit_filters
int reinit_filters
Definition: ffmpeg.h:389
hw_device_free_all
void hw_device_free_all(void)
Definition: ffmpeg_hw.c:288
avformat.h
InputFile::eagain
int eagain
Definition: ffmpeg.h:422
HWAccelID
HWAccelID
Definition: ffmpeg.h:71
dict.h
OptionsContext::nb_mux_stats_fmt
int nb_mux_stats_fmt
Definition: ffmpeg.h:277
OptionsContext::nb_sample_fmts
int nb_sample_fmts
Definition: ffmpeg.h:193
OptionsContext::nb_enc_time_bases
int nb_enc_time_bases
Definition: ffmpeg.h:261
SyncQueue
A sync queue provides timestamp synchronization between multiple streams.
Definition: sync_queue.c:88
ifile_close
void ifile_close(InputFile **f)
Definition: ffmpeg_demux.c:830
OptionsContext::nb_max_frames
int nb_max_frames
Definition: ffmpeg.h:187
OptionsContext::disposition
SpecifierOpt * disposition
Definition: ffmpeg.h:254
OutputFilter::format
int format
Definition: ffmpeg.h:299
ifile_open
int ifile_open(const OptionsContext *o, const char *filename)
Definition: ffmpeg_demux.c:1328
filter_hw_device
HWDevice * filter_hw_device
Definition: ffmpeg_opt.c:61
AVCodecContext
main external API structure.
Definition: avcodec.h:435
init_simple_filtergraph
int init_simple_filtergraph(InputStream *ist, OutputStream *ost, char *graph_desc)
Definition: ffmpeg_filter.c:839
OptionsContext::mux_preload
float mux_preload
Definition: ffmpeg.h:169
HWDevice::name
const char * name
Definition: ffmpeg.h:78
ifilter_sub2video
int ifilter_sub2video(InputFilter *ifilter, const AVSubtitle *sub)
Definition: ffmpeg_filter.c:1758
OutputStream::finished
OSTFinished finished
Definition: ffmpeg.h:595
OptionsContext::nb_audio_channels
int nb_audio_channels
Definition: ffmpeg.h:118
OptionsContext::fix_sub_duration_heartbeat
SpecifierOpt * fix_sub_duration_heartbeat
Definition: ffmpeg.h:236
InputFile::audio_duration_queue
AVThreadMessageQueue * audio_duration_queue
Definition: ffmpeg.h:444
ist_output_add
int ist_output_add(InputStream *ist, OutputStream *ost)
Definition: ffmpeg_demux.c:876
OptionsContext::guess_layout_max
SpecifierOpt * guess_layout_max
Definition: ffmpeg.h:248
KeyframeForceCtx::index
int index
Definition: ffmpeg.h:515
OptionsContext::enc_time_bases
SpecifierOpt * enc_time_bases
Definition: ffmpeg.h:260
avfilter.h
OutputFilter::formats
const int * formats
Definition: ffmpeg.h:305
FilterGraph::is_meta
int is_meta
Definition: ffmpeg.h:319
enc_flush
void enc_flush(void)
Definition: ffmpeg_enc.c:1129
OutputStream::last_mux_dts
int64_t last_mux_dts
Definition: ffmpeg.h:546
OptionsContext::video_disable
int video_disable
Definition: ffmpeg.h:175
InputStream::prev_sub
struct InputStream::@3 prev_sub
OutputStream::quality
int quality
Definition: ffmpeg.h:617
OptionsContext::nb_forced_key_frames
int nb_forced_key_frames
Definition: ffmpeg.h:197
OutputStream::bits_per_raw_sample
int bits_per_raw_sample
Definition: ffmpeg.h:571
OptionsContext::max_frame_rates
SpecifierOpt * max_frame_rates
Definition: ffmpeg.h:123
OutputStream::enc_stats_post
EncStats enc_stats_post
Definition: ffmpeg.h:623
frame_data
FrameData * frame_data(AVFrame *frame)
Get our axiliary frame data attached to the frame, allocating it if needed.
Definition: ffmpeg.c:434
InputStream::nb_samples
int64_t nb_samples
Definition: ffmpeg.h:357
OptionsContext::frame_pix_fmts
SpecifierOpt * frame_pix_fmts
Definition: ffmpeg.h:127
video_sync_method
enum VideoSyncMethod video_sync_method
Definition: ffmpeg_opt.c:70
OutputStream::frames_encoded
uint64_t frames_encoded
Definition: ffmpeg.h:613
ifilter_send_eof
int ifilter_send_eof(InputFilter *ifilter, int64_t pts, AVRational tb)
Definition: ffmpeg_filter.c:1794
HWACCEL_NONE
@ HWACCEL_NONE
Definition: ffmpeg.h:72
InputFile::ts_offset
int64_t ts_offset
Definition: ffmpeg.h:429
OptionsContext::nb_frame_sizes
int nb_frame_sizes
Definition: ffmpeg.h:126
InputStream::decode_errors
uint64_t decode_errors
Definition: ffmpeg.h:404
OptionsContext::hwaccel_devices
SpecifierOpt * hwaccel_devices
Definition: ffmpeg.h:147
InputStream::discard
int discard
Definition: ffmpeg.h:336
OptionsContext::max_muxing_queue_size
SpecifierOpt * max_muxing_queue_size
Definition: ffmpeg.h:244
AVFilterContext
An instance of a filter.
Definition: avfilter.h:397
remove_avoptions
void remove_avoptions(AVDictionary **a, AVDictionary *b)
Definition: ffmpeg.c:445
VSYNC_AUTO
@ VSYNC_AUTO
Definition: ffmpeg.h:61
OutputFilter
Definition: ffmpeg.h:285
OptionsContext::nb_muxing_queue_data_threshold
int nb_muxing_queue_data_threshold
Definition: ffmpeg.h:247
OptionsContext::nb_inter_matrices
int nb_inter_matrices
Definition: ffmpeg.h:215
OptionsContext::enc_stats_pre_fmt
SpecifierOpt * enc_stats_pre_fmt
Definition: ffmpeg.h:272
OptionsContext::muxing_queue_data_threshold
SpecifierOpt * muxing_queue_data_threshold
Definition: ffmpeg.h:246
avutil.h
flush
void(* flush)(AVBSFContext *ctx)
Definition: dts2pts_bsf.c:367
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:530
OptionsContext::copy_prior_start
SpecifierOpt * copy_prior_start
Definition: ffmpeg.h:226
InputStream::sub2video
Definition: ffmpeg.h:372
ist_iter
InputStream * ist_iter(InputStream *prev)
Definition: ffmpeg.c:418
OptionsContext::fps_mode
SpecifierOpt * fps_mode
Definition: ffmpeg.h:198
auto_conversion_filters
int auto_conversion_filters
Definition: ffmpeg_opt.c:88
InputStream::sub2video::h
int h
Definition: ffmpeg.h:373
OptionsContext::nb_passlogfiles
int nb_passlogfiles
Definition: ffmpeg.h:243
KeyframeForceCtx::pexpr
AVExpr * pexpr
Definition: ffmpeg.h:517
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:563
OutputStream::autoscale
int autoscale
Definition: ffmpeg.h:569
InputStream::index
int index
Definition: ffmpeg.h:333
FKF_N_FORCED
@ FKF_N_FORCED
Definition: ffmpeg.h:450
OptionsContext::attachments
const char ** attachments
Definition: ffmpeg.h:161
stdin_interaction
int stdin_interaction
Definition: ffmpeg_opt.c:83
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:275
LastFrameDuration::duration
int64_t duration
Definition: ffmpeg.h:409
OptionsContext::ts_scale
SpecifierOpt * ts_scale
Definition: ffmpeg.h:141
AVPacket
This structure stores compressed data.
Definition: packet.h:351
EncStatsComponent
Definition: ffmpeg.h:481
OptionsContext::chroma_intra_matrices
SpecifierOpt * chroma_intra_matrices
Definition: ffmpeg.h:216
HWDevice::type
enum AVHWDeviceType type
Definition: ffmpeg.h:79
src
INIT_CLIP pixel * src
Definition: h264pred_template.c:418
cmdutils.h
enc_subtitle
void enc_subtitle(OutputFile *of, OutputStream *ost, AVSubtitle *sub)
Definition: ffmpeg_enc.c:464
InputFile::input_ts_offset
int64_t input_ts_offset
Definition: ffmpeg.h:423
file_read
char * file_read(const char *filename)
Definition: ffmpeg_opt.c:699
EncStats::nb_components
int nb_components
Definition: ffmpeg.h:490
OptionsContext::data_disable
int data_disable
Definition: ffmpeg.h:178
FKF_NB
@ FKF_NB
Definition: ffmpeg.h:454
ENC_STATS_PKT_SIZE
@ ENC_STATS_PKT_SIZE
Definition: ffmpeg.h:476
OutputStream
Definition: mux.c:53
OptionsContext::nb_display_rotations
int nb_display_rotations
Definition: ffmpeg.h:205
hwcontext.h
OutputStream::sq_idx_encode
int sq_idx_encode
Definition: ffmpeg.h:619
OutputStream::st
AVStream * st
Definition: mux.c:54
EncStatsComponent::str
uint8_t * str
Definition: ffmpeg.h:484
dts_error_threshold
float dts_error_threshold
Definition: ffmpeg_opt.c:68
OptionsContext::hwaccel_output_formats
SpecifierOpt * hwaccel_output_formats
Definition: ffmpeg.h:149
err_merge
static int err_merge(int err0, int err1)
Merge two return codes - return one of the error codes if at least one of them was negative,...
Definition: ffmpeg.h:897
OutputFile::format
const AVOutputFormat * format
Definition: ffmpeg.h:637
hw_device_for_filter
AVBufferRef * hw_device_for_filter(void)
Get a hardware device to be used with this filtergraph.
Definition: ffmpeg_hw.c:351
OutputStream::swr_opts
AVDictionary * swr_opts
Definition: ffmpeg.h:593
InputFile::nb_streams
int nb_streams
Definition: ffmpeg.h:437
opt_name_codec_tags
const char *const opt_name_codec_tags[]
Definition: ffmpeg_opt.c:58
FKF_N
@ FKF_N
Definition: ffmpeg.h:449
ENC_STATS_DTS_TIME
@ ENC_STATS_DTS_TIME
Definition: ffmpeg.h:473
OutputFile::recording_time
int64_t recording_time
desired length of the resulting file in microseconds == AV_TIME_BASE units
Definition: ffmpeg.h:645
int
int
Definition: ffmpeg_filter.c:354
OutputStream::samples_encoded
uint64_t samples_encoded
Definition: ffmpeg.h:614
OutputStream::inputs_done
int inputs_done
Definition: ffmpeg.h:603
of_stream_init
int of_stream_init(OutputFile *of, OutputStream *ost)
Definition: ffmpeg_mux.c:666
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:191
VSYNC_PASSTHROUGH
@ VSYNC_PASSTHROUGH
Definition: ffmpeg.h:62
InputStream::dec
const AVCodec * dec
Definition: ffmpeg.h:352
EncStats::io
AVIOContext * io
Definition: ffmpeg.h:492
enc_open
int enc_open(OutputStream *ost, AVFrame *frame)
Definition: ffmpeg_enc.c:191
OptionsContext::discard
SpecifierOpt * discard
Definition: ffmpeg.h:252
InputStream::subtitle
AVSubtitle subtitle
Definition: ffmpeg.h:369
of_write_trailer
int of_write_trailer(OutputFile *of)
Definition: ffmpeg_mux.c:794
ist_find_unused
InputStream * ist_find_unused(enum AVMediaType type)
Find an unused input stream of given type.
Definition: ffmpeg_demux.c:135
OptionsContext::display_vflips
SpecifierOpt * display_vflips
Definition: ffmpeg.h:208
atomic_uint_least64_t
intptr_t atomic_uint_least64_t
Definition: stdatomic.h:69
ENC_STATS_TIMEBASE
@ ENC_STATS_TIMEBASE
Definition: ffmpeg.h:466
fg_create
FilterGraph * fg_create(char *graph_desc)
Create a new filtergraph in the global filtergraph list.
Definition: ffmpeg_filter.c:778
term_exit
void term_exit(void)
Definition: ffmpeg.c:175
filter_complex_nbthreads
int filter_complex_nbthreads
Definition: ffmpeg_opt.c:86
OutputFile
Definition: ffmpeg.h:632
OptionsContext::loop
int loop
Definition: ffmpeg.h:132
InputStream::autorotate
int autorotate
Definition: ffmpeg.h:363
OutputStream::enc_timebase
AVRational enc_timebase
Definition: ffmpeg.h:550
OptionsContext::nb_force_fps
int nb_force_fps
Definition: ffmpeg.h:201