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