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 "ffmpeg_sched.h"
31 #include "sync_queue.h"
32 
33 #include "libavformat/avformat.h"
34 #include "libavformat/avio.h"
35 
36 #include "libavcodec/avcodec.h"
37 #include "libavcodec/bsf.h"
38 
39 #include "libavfilter/avfilter.h"
40 
41 #include "libavutil/avutil.h"
42 #include "libavutil/dict.h"
43 #include "libavutil/eval.h"
44 #include "libavutil/fifo.h"
45 #include "libavutil/hwcontext.h"
46 #include "libavutil/pixfmt.h"
47 #include "libavutil/rational.h"
48 #include "libavutil/thread.h"
50 
52 
53 // deprecated features
54 #define FFMPEG_OPT_QPHIST 1
55 #define FFMPEG_OPT_ADRIFT_THRESHOLD 1
56 #define FFMPEG_OPT_ENC_TIME_BASE_NUM 1
57 #define FFMPEG_OPT_TOP 1
58 #define FFMPEG_OPT_FORCE_KF_SOURCE_NO_DROP 1
59 #define FFMPEG_OPT_VSYNC_DROP 1
60 #define FFMPEG_OPT_VSYNC 1
61 #define FFMPEG_OPT_FILTER_SCRIPT 1
62 
63 #define FFMPEG_ERROR_RATE_EXCEEDED FFERRTAG('E', 'R', 'E', 'D')
64 
66  VSYNC_AUTO = -1,
71 #if FFMPEG_OPT_VSYNC_DROP
73 #endif
74 };
75 
79 };
80 
81 enum HWAccelID {
85 };
86 
91 };
92 
96 };
97 
107 };
108 
109 typedef struct HWDevice {
110  const char *name;
113 } HWDevice;
114 
115 /* select an input stream for an output stream */
116 typedef struct StreamMap {
117  int disabled; /* 1 is this mapping is disabled by a negative map */
120  char *linklabel; /* name of an output link, for mapping lavfi outputs */
121 } StreamMap;
122 
123 typedef struct OptionsContext {
125 
126  /* input/output options */
127  int64_t start_time;
128  int64_t start_time_eof;
130  const char *format;
131 
140 
141  /* input options */
143  int loop;
144  int rate_emu;
145  float readrate;
151 
158 
159  /* output options */
162  const char **attachments;
164 
166 
167  int64_t recording_time;
168  int64_t stop_time;
169  int64_t limit_filesize;
170  float mux_preload;
173  int shortest;
174  int bitexact;
175 
180 
181  // keys are stream indices
183 
201 #if FFMPEG_OPT_TOP
203 #endif
209 #if FFMPEG_OPT_FILTER_SCRIPT
211 #endif
237 
241  IFILTER_FLAG_CFR = (1 << 2),
242 };
243 
244 typedef struct InputFilterOptions {
245  int64_t trim_start_us;
246  int64_t trim_end_us;
247 
248  uint8_t *name;
249 
250  /* When IFILTER_FLAG_CFR is set, the stream is guaranteed to be CFR with
251  * this framerate.
252  *
253  * Otherwise, this is an estimate that should not be relied upon to be
254  * accurate */
256 
259 
260  // a combination of IFILTER_FLAG_*
261  unsigned flags;
262 
265 
268  // produce 24-bit audio
271 };
272 
273 typedef struct OutputFilterOptions {
274  // Caller-provided name for this output
275  char *name;
276 
277  // Codec used for encoding, may be NULL
278  const AVCodec *enc;
279  // Overrides encoder pixel formats when set.
280  const enum AVPixelFormat *pix_fmts;
281 
282  int64_t trim_start_us;
284  int64_t ts_offset;
285 
286  /* Desired output timebase.
287  * Numerator can be one of EncTimeBase values, or 0 when no preference.
288  */
290 
293 
294  const char *nb_threads;
295 
296  // A combination of OFilterFlags.
297  unsigned flags;
298 
299  int format;
300  int width;
301  int height;
302 
304 
308 
309 typedef struct InputFilter {
311  uint8_t *name;
312 } InputFilter;
313 
314 typedef struct OutputFilter {
315  const AVClass *class;
316 
318  uint8_t *name;
319 
320  /* for filters that are not yet bound to an output stream,
321  * this stores the output linklabel, if any */
322  int bound;
323  uint8_t *linklabel;
324 
325  char *apad;
326 
328 
331 } OutputFilter;
332 
333 typedef struct FilterGraph {
334  const AVClass *class;
335  int index;
336 
341 } FilterGraph;
342 
345  // input timestamps are unreliable (guessed by demuxer)
347  // decoder should override timestamps by fixed framerate
348  // from DecoderOpts.framerate
350 #if FFMPEG_OPT_TOP
352 #endif
354  // force bitexact decoding
356 };
357 
358 typedef struct DecoderOpts {
359  int flags;
360 
361  char *name;
362  void *log_parent;
363 
364  const AVCodec *codec;
366 
367  /* hwaccel options */
372 
374 
375  // Either forced (when DECODER_FLAG_FRAMERATE_FORCED is set) or
376  // estimated (otherwise) video framerate.
378 } DecoderOpts;
379 
380 typedef struct Decoder {
381  const AVClass *class;
382 
384 
385  const uint8_t *subtitle_header;
387 
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 } Decoder;
393 
394 typedef struct InputStream {
395  const AVClass *class;
396 
397  /* parent source */
398  struct InputFile *file;
399 
400  int index;
401 
404 
405  /**
406  * Codec parameters - to be used by the decoding/streamcopy code.
407  * st->codecpar should not be accessed, because it may be modified
408  * concurrently by the demuxing thread.
409  */
412  const AVCodec *dec;
413 
414  /* framerate forced with -r */
416 #if FFMPEG_OPT_TOP
418 #endif
419 
421 
422  /* decoded data from this stream goes into all those filters
423  * currently video and audio only */
426 
427  /*
428  * Output targets that do not go through lavfi, i.e. subtitles or
429  * streamcopy. Those two cases are distinguished by the OutputStream
430  * having an encoder or not.
431  */
434 } InputStream;
435 
436 typedef struct InputFile {
437  const AVClass *class;
438 
439  int index;
440 
444  /**
445  * Effective format start time based on enabled streams.
446  */
448  int64_t ts_offset;
449  /* user-specified start time in AV_TIME_BASE or AV_NOPTS_VALUE */
450  int64_t start_time;
451 
452  /* streams that ffmpeg is aware of;
453  * there may be extra streams in ctx that are not mapped to an InputStream
454  * if new streams appear dynamically during demuxing */
457 } InputFile;
458 
466 };
467 
468 #define ABORT_ON_FLAG_EMPTY_OUTPUT (1 << 0)
469 #define ABORT_ON_FLAG_EMPTY_OUTPUT_STREAM (1 << 1)
470 
491 };
492 
493 typedef struct EncStatsComponent {
495 
496  uint8_t *str;
497  size_t str_len;
499 
500 typedef struct EncStats {
503 
505 
508 } EncStats;
509 
510 extern const char *const forced_keyframes_const_names[];
511 
512 typedef enum {
515 } OSTFinished ;
516 
517 enum {
519 #if FFMPEG_OPT_FORCE_KF_SOURCE_NO_DROP
521 #endif
522 };
523 
524 typedef struct KeyframeForceCtx {
525  int type;
526 
527  int64_t ref_pts;
528 
529  // timestamps of the forced keyframes, in AV_TIME_BASE_Q
530  int64_t *pts;
531  int nb_pts;
532  int index;
533 
536 
539 
540 typedef struct Encoder Encoder;
541 
542 typedef struct OutputStream {
543  const AVClass *class;
544 
546 
547  /* parent muxer */
548  struct OutputFile *file;
549 
550  int index; /* stream index in the output file */
551 
552  /**
553  * Codec parameters for packets submitted to the muxer (i.e. before
554  * bitstream filtering, if any).
555  */
557 
558  /* input stream that is the source for this output stream;
559  * may be NULL for streams with no well-defined source, e.g.
560  * attachments or outputs from complex filtergraphs */
562 
563  AVStream *st; /* stream in the output file */
564 
567 
568  /* video only */
572 #if FFMPEG_OPT_TOP
574 #endif
575  int bitexact;
577 
579 
581 
583  FILE *logfile;
584 
585  // simple filtergraph feeding this stream, if any
588 
590 
592 
593  /* stats */
594  // number of packets send to the muxer
596  // number of frames/samples sent to the encoder
597  uint64_t frames_encoded;
598  uint64_t samples_encoded;
599 
600  /* packet quality factor */
602 
605 
606  /*
607  * bool on whether this stream should be utilized for splitting
608  * subtitles utilizing fix_sub_duration at random access points.
609  */
611 } OutputStream;
612 
613 typedef struct OutputFile {
614  const AVClass *class;
615 
616  int index;
617 
618  const char *url;
619 
622 
623  int64_t recording_time; ///< desired length of the resulting file in microseconds == AV_TIME_BASE units
624  int64_t start_time; ///< start time in microseconds == AV_TIME_BASE units
625 
626  int bitexact;
627 } OutputFile;
628 
629 // optionally attached as opaque_ref to decoded AVFrames
630 typedef struct FrameData {
631  // demuxer-estimated dts in AV_TIME_BASE_Q,
632  // to be used when real dts is missing
633  int64_t dts_est;
634 
635  // properties that come from the decoder
636  struct {
637  uint64_t frame_num;
638 
639  int64_t pts;
641  } dec;
642 
644 
646 
648 
650 } FrameData;
651 
652 extern InputFile **input_files;
653 extern int nb_input_files;
654 
655 extern OutputFile **output_files;
656 extern int nb_output_files;
657 
658 // complex filtergraphs
659 extern FilterGraph **filtergraphs;
660 extern int nb_filtergraphs;
661 
662 // standalone decoders (not tied to demuxed streams)
663 extern Decoder **decoders;
664 extern int nb_decoders;
665 
666 extern char *vstats_filename;
667 
668 extern float dts_delta_threshold;
669 extern float dts_error_threshold;
670 
672 extern float frame_drop_threshold;
673 extern int do_benchmark;
674 extern int do_benchmark_all;
675 extern int do_hex_dump;
676 extern int do_pkt_dump;
677 extern int copy_ts;
678 extern int start_at_zero;
679 extern int copy_tb;
680 extern int debug_ts;
681 extern int exit_on_error;
682 extern int abort_on_flags;
683 extern int print_stats;
684 extern int64_t stats_period;
685 extern int stdin_interaction;
686 extern AVIOContext *progress_avio;
687 extern float max_error_rate;
688 
689 extern char *filter_nbthreads;
690 extern int filter_complex_nbthreads;
691 extern int vstats_version;
692 extern int auto_conversion_filters;
693 
694 extern const AVIOInterruptCB int_cb;
695 
696 extern const OptionDef options[];
697 extern HWDevice *filter_hw_device;
698 
700 
701 extern int ignore_unknown_streams;
702 extern int copy_unknown_streams;
703 
704 extern int recast_media;
705 
706 extern FILE *vstats_file;
707 
708 void term_init(void);
709 void term_exit(void);
710 
711 void show_usage(void);
712 
713 int assert_file_overwrite(const char *filename);
715 int find_codec(void *logctx, const char *name,
716  enum AVMediaType type, int encoder, const AVCodec **codec);
717 int parse_and_set_vsync(const char *arg, int *vsync_var, int file_idx, int st_idx, int is_global);
718 
719 int filtergraph_is_simple(const FilterGraph *fg);
721  char *graph_desc,
722  Scheduler *sch, unsigned sch_idx_enc,
723  const OutputFilterOptions *opts);
724 int fg_finalise_bindings(void);
725 
726 /**
727  * Get our axiliary frame data attached to the frame, allocating it
728  * if needed.
729  */
731 
733 
736 
738  unsigned sched_idx_enc,
739  const OutputFilterOptions *opts);
740 
741 /**
742  * Create a new filtergraph in the global filtergraph list.
743  *
744  * @param graph_desc Graph description; an av_malloc()ed string, filtergraph
745  * takes ownership of it.
746  */
747 int fg_create(FilterGraph **pfg, char *graph_desc, Scheduler *sch);
748 
749 void fg_free(FilterGraph **pfg);
750 
751 void fg_send_command(FilterGraph *fg, double time, const char *target,
752  const char *command, const char *arg, int all_filters);
753 
754 int ffmpeg_parse_options(int argc, char **argv, Scheduler *sch);
755 
757  const AVFrame *frame, const AVPacket *pkt,
758  uint64_t frame_num);
759 
760 HWDevice *hw_device_get_by_name(const char *name);
762 int hw_device_init_from_string(const char *arg, HWDevice **dev);
764  const char *device,
765  HWDevice **dev_out);
766 void hw_device_free_all(void);
767 
768 /**
769  * Get a hardware device to be used with this filtergraph.
770  * The returned reference is owned by the callee, the caller
771  * must ref it explicitly for long-term use.
772  */
774 
775 /**
776  * Create a standalone decoder.
777  */
778 int dec_create(const OptionsContext *o, const char *arg, Scheduler *sch);
779 
780 /**
781  * @param dec_opts Dictionary filled with decoder options. Its ownership
782  * is transferred to the decoder.
783  * @param param_out If non-NULL, media properties after opening the decoder
784  * are written here.
785  *
786  * @retval ">=0" non-negative scheduler index on success
787  * @retval "<0" an error code on failure
788  */
789 int dec_init(Decoder **pdec, Scheduler *sch,
790  AVDictionary **dec_opts, const DecoderOpts *o,
791  AVFrame *param_out);
792 void dec_free(Decoder **pdec);
793 
794 /*
795  * Called by filters to connect decoder's output to given filtergraph input.
796  *
797  * @param opts filtergraph input options, to be filled by this function
798  */
800 
801 int enc_alloc(Encoder **penc, const AVCodec *codec,
802  Scheduler *sch, unsigned sch_idx);
803 void enc_free(Encoder **penc);
804 
805 int enc_open(void *opaque, const AVFrame *frame);
806 
807 int enc_loopback(Encoder *enc);
808 
809 /*
810  * Initialize muxing state for the given stream, should be called
811  * after the codec/streamcopy setup has been done.
812  *
813  * Open the muxer once all the streams have been initialized.
814  */
817 int of_open(const OptionsContext *o, const char *filename, Scheduler *sch);
818 void of_free(OutputFile **pof);
819 
820 void of_enc_stats_close(void);
821 
822 int64_t of_filesize(OutputFile *of);
823 
824 int ifile_open(const OptionsContext *o, const char *filename, Scheduler *sch);
825 void ifile_close(InputFile **f);
826 
828 int ist_filter_add(InputStream *ist, InputFilter *ifilter, int is_simple,
830 
831 /**
832  * Find an unused input stream of given type.
833  */
835 
836 /* iterate over all input streams in all input files;
837  * pass NULL to start iteration */
839 
840 /* iterate over all output streams in all output files;
841  * pass NULL to start iteration */
843 
844 void update_benchmark(const char *fmt, ...);
845 
846 #define SPECIFIER_OPT_FMT_str "%s"
847 #define SPECIFIER_OPT_FMT_i "%i"
848 #define SPECIFIER_OPT_FMT_i64 "%"PRId64
849 #define SPECIFIER_OPT_FMT_ui64 "%"PRIu64
850 #define SPECIFIER_OPT_FMT_f "%f"
851 #define SPECIFIER_OPT_FMT_dbl "%lf"
852 
853 #define WARN_MULTIPLE_OPT_USAGE(optname, type, idx, st)\
854 {\
855  char namestr[128] = "";\
856  const SpecifierOpt *so = &o->optname.opt[idx];\
857  const char *spec = so->specifier && so->specifier[0] ? so->specifier : "";\
858  snprintf(namestr, sizeof(namestr), "-%s", o->optname.opt_canon->name);\
859  if (o->optname.opt_canon->flags & OPT_HAS_ALT) {\
860  const char * const *names_alt = o->optname.opt_canon->u1.names_alt;\
861  for (int _i = 0; names_alt[_i]; _i++)\
862  av_strlcatf(namestr, sizeof(namestr), "/-%s", names_alt[_i]);\
863  }\
864  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",\
865  namestr, st->index, o->optname.opt_canon->name, spec[0] ? ":" : "", spec, so->u.type);\
866 }
867 
868 #define MATCH_PER_STREAM_OPT(name, type, outvar, fmtctx, st)\
869 {\
870  int _ret, _matches = 0, _match_idx;\
871  for (int _i = 0; _i < o->name.nb_opt; _i++) {\
872  char *spec = o->name.opt[_i].specifier;\
873  if ((_ret = check_stream_specifier(fmtctx, st, spec)) > 0) {\
874  outvar = o->name.opt[_i].u.type;\
875  _match_idx = _i;\
876  _matches++;\
877  } else if (_ret < 0)\
878  return _ret;\
879  }\
880  if (_matches > 1 && o->name.opt_canon)\
881  WARN_MULTIPLE_OPT_USAGE(name, type, _match_idx, st);\
882 }
883 
884 const char *opt_match_per_type_str(const SpecifierOptList *sol,
885  char mediatype);
886 
887 int muxer_thread(void *arg);
888 int encoder_thread(void *arg);
889 
890 #endif /* FFTOOLS_FFMPEG_H */
OptionsContext::readrate
float readrate
Definition: ffmpeg.h:145
KeyframeForceCtx::pts
int64_t * pts
Definition: ffmpeg.h:530
Decoder::subtitle_header
const uint8_t * subtitle_header
Definition: ffmpeg.h:385
pthread_mutex_t
_fmutex pthread_mutex_t
Definition: os2threads.h:53
FrameData::par_enc
AVCodecParameters * par_enc
Definition: ffmpeg.h:649
AVCodec
AVCodec.
Definition: codec.h:187
OptionsContext::input_ts_offset
int64_t input_ts_offset
Definition: ffmpeg.h:142
InputFile::start_time
int64_t start_time
Definition: ffmpeg.h:450
AVPixelFormat
AVPixelFormat
Pixel format.
Definition: pixfmt.h:71
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:168
StreamMap::file_index
int file_index
Definition: ffmpeg.h:118
KeyframeForceCtx::dropped_keyframe
int dropped_keyframe
Definition: ffmpeg.h:537
OutputFilter::graph
struct FilterGraph * graph
Definition: ffmpeg.h:317
FKF_PREV_FORCED_T
@ FKF_PREV_FORCED_T
Definition: ffmpeg.h:463
OptionsContext::force_fps
SpecifierOptList force_fps
Definition: ffmpeg.h:192
OptionsContext::forced_key_frames
SpecifierOptList forced_key_frames
Definition: ffmpeg.h:190
VSYNC_VFR
@ VSYNC_VFR
Definition: ffmpeg.h:69
EncStatsComponent::type
enum EncStatsType type
Definition: ffmpeg.h:494
OutputFilterOptions::ch_layout
AVChannelLayout ch_layout
Definition: ffmpeg.h:306
nb_filtergraphs
int nb_filtergraphs
Definition: ffmpeg.c:111
FrameData
Definition: ffmpeg.h:630
ENC_STATS_PTS
@ ENC_STATS_PTS
Definition: ffmpeg.h:479
OutputFilter::apad
char * apad
Definition: ffmpeg.h:325
ENC_STATS_FRAME_NUM_IN
@ ENC_STATS_FRAME_NUM_IN
Definition: ffmpeg.h:476
FKF_PREV_FORCED_N
@ FKF_PREV_FORCED_N
Definition: ffmpeg.h:462
DecoderOpts
Definition: ffmpeg.h:358
AVCodecParameters
This struct describes the properties of an encoded stream.
Definition: codec_par.h:47
OutputStream::enc_ctx
AVCodecContext * enc_ctx
Definition: ffmpeg.h:566
DECODER_FLAG_SEND_END_TS
@ DECODER_FLAG_SEND_END_TS
Definition: ffmpeg.h:353
thread.h
enc_open
int enc_open(void *opaque, const AVFrame *frame)
Definition: ffmpeg_enc.c:165
FilterGraph::inputs
InputFilter ** inputs
Definition: ffmpeg.h:337
ENC_STATS_DTS
@ ENC_STATS_DTS
Definition: ffmpeg.h:483
fg_free
void fg_free(FilterGraph **pfg)
Definition: ffmpeg_filter.c:990
FrameData::dts_est
int64_t dts_est
Definition: ffmpeg.h:633
LATENCY_PROBE_DEC_POST
@ LATENCY_PROBE_DEC_POST
Definition: ffmpeg.h:101
vstats_file
FILE * vstats_file
Definition: ffmpeg.c:88
OutputStream::par_in
AVCodecParameters * par_in
Codec parameters for packets submitted to the muxer (i.e.
Definition: ffmpeg.h:556
InputStream::outputs
struct OutputStream ** outputs
Definition: ffmpeg.h:432
KeyframeForceCtx::nb_pts
int nb_pts
Definition: ffmpeg.h:531
frame_drop_threshold
float frame_drop_threshold
Definition: ffmpeg_opt.c:61
rational.h
InputStream::user_set_discard
int user_set_discard
Definition: ffmpeg.h:403
OutputStream::packets_written
atomic_uint_least64_t packets_written
Definition: ffmpeg.h:595
OptionsContext::bits_per_raw_sample
SpecifierOptList bits_per_raw_sample
Definition: ffmpeg.h:229
ENC_STATS_AVG_BITRATE
@ ENC_STATS_AVG_BITRATE
Definition: ffmpeg.h:489
OptionsContext::audio_ch_layouts
SpecifierOptList audio_ch_layouts
Definition: ffmpeg.h:133
OptionsContext::qscale
SpecifierOptList qscale
Definition: ffmpeg.h:189
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:185
OptionsContext::nb_attachments
int nb_attachments
Definition: ffmpeg.h:163
OutputFile::start_time
int64_t start_time
start time in microseconds == AV_TIME_BASE units
Definition: ffmpeg.h:624
progress_avio
AVIOContext * progress_avio
Definition: ffmpeg.c:102
InputFile::index
int index
Definition: ffmpeg.h:439
OutputFilterOptions::flags
unsigned flags
Definition: ffmpeg.h:297
AVFrame
This structure describes decoded (raw) audio or video data.
Definition: frame.h:374
OptionsContext::presets
SpecifierOptList presets
Definition: ffmpeg.h:205
DECODER_FLAG_FRAMERATE_FORCED
@ DECODER_FLAG_FRAMERATE_FORCED
Definition: ffmpeg.h:349
of_filesize
int64_t of_filesize(OutputFile *of)
Definition: ffmpeg_mux.c:876
OptionsContext::mux_max_delay
float mux_max_delay
Definition: ffmpeg.h:171
OptionsContext::display_hflips
SpecifierOptList display_hflips
Definition: ffmpeg.h:195
DecoderOpts::par
const AVCodecParameters * par
Definition: ffmpeg.h:365
FKF_T
@ FKF_T
Definition: ffmpeg.h:464
sync_queue.h
ENC_STATS_LITERAL
@ ENC_STATS_LITERAL
Definition: ffmpeg.h:472
OptionsContext::subtitle_disable
int subtitle_disable
Definition: ffmpeg.h:178
OptionsContext::passlogfiles
SpecifierOptList passlogfiles
Definition: ffmpeg.h:217
OutputStream::index
int index
Definition: ffmpeg.h:550
FilterGraph::index
int index
Definition: ffmpeg.h:335
KeyframeForceCtx::type
int type
Definition: ffmpeg.h:525
OutputFilterOptions::sws_opts
AVDictionary * sws_opts
Definition: ffmpeg.h:291
DecoderOpts::hwaccel_id
enum HWAccelID hwaccel_id
Definition: ffmpeg.h:368
InputStream::nb_filters
int nb_filters
Definition: ffmpeg.h:425
int_cb
const AVIOInterruptCB int_cb
Definition: ffmpeg.c:306
atomic_int
intptr_t atomic_int
Definition: stdatomic.h:55
nb_output_files
int nb_output_files
Definition: ffmpeg.c:108
show_usage
void show_usage(void)
Definition: ffmpeg_opt.c:1165
fg_create
int fg_create(FilterGraph **pfg, char *graph_desc, Scheduler *sch)
Create a new filtergraph in the global filtergraph list.
Definition: ffmpeg_filter.c:1060
FilterGraph::nb_inputs
int nb_inputs
Definition: ffmpeg.h:338
OptionsContext::bitexact
int bitexact
Definition: ffmpeg.h:174
AVDictionary
Definition: dict.c:34
HWDevice
Definition: ffmpeg.h:109
hw_device_init_from_string
int hw_device_init_from_string(const char *arg, HWDevice **dev)
Definition: ffmpeg_hw.c:92
nb_input_files
int nb_input_files
Definition: ffmpeg.c:105
OutputFilterOptions::sample_rate
int sample_rate
Definition: ffmpeg.h:305
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:465
IFILTER_FLAG_AUTOROTATE
@ IFILTER_FLAG_AUTOROTATE
Definition: ffmpeg.h:239
LATENCY_PROBE_ENC_POST
@ LATENCY_PROBE_ENC_POST
Definition: ffmpeg.h:105
OptionsContext::format
const char * format
Definition: ffmpeg.h:130
InputFile::input_sync_ref
int input_sync_ref
Definition: ffmpeg.h:443
DECODER_FLAG_BITEXACT
@ DECODER_FLAG_BITEXACT
Definition: ffmpeg.h:355
ost
static AVStream * ost
Definition: vaapi_transcode.c:42
OutputStream::fix_sub_duration_heartbeat
unsigned int fix_sub_duration_heartbeat
Definition: ffmpeg.h:610
enc_loopback
int enc_loopback(Encoder *enc)
Definition: ffmpeg_enc.c:932
OutputStream::ist
InputStream * ist
Definition: ffmpeg.h:561
OptionsContext::frame_pix_fmts
SpecifierOptList frame_pix_fmts
Definition: ffmpeg.h:139
OutputStream::file
struct OutputFile * file
Definition: ffmpeg.h:548
OptionsContext::canvas_sizes
SpecifierOptList canvas_sizes
Definition: ffmpeg.h:215
ENC_STATS_TIMEBASE_IN
@ ENC_STATS_TIMEBASE_IN
Definition: ffmpeg.h:478
AVIOInterruptCB
Callback for checking whether to abort blocking functions.
Definition: avio.h:59
OptionDef
Definition: cmdutils.h:126
InputStream::nb_outputs
int nb_outputs
Definition: ffmpeg.h:433
FrameData::frame_num
uint64_t frame_num
Definition: ffmpeg.h:637
OutputFile::nb_streams
int nb_streams
Definition: ffmpeg.h:621
InputStream
Definition: ffmpeg.h:394
filter_nbthreads
char * filter_nbthreads
Definition: ffmpeg_opt.c:75
OptionsContext::chapters_input_file
int chapters_input_file
Definition: ffmpeg.h:165
DecoderOpts::hwaccel_output_format
enum AVPixelFormat hwaccel_output_format
Definition: ffmpeg.h:371
debug_ts
int debug_ts
Definition: ffmpeg_opt.c:69
OutputFilterOptions
Definition: ffmpeg.h:273
stats_period
int64_t stats_period
Definition: ffmpeg_opt.c:79
InputFilterOptions::trim_start_us
int64_t trim_start_us
Definition: ffmpeg.h:245
OptionsContext::rate_emu
int rate_emu
Definition: ffmpeg.h:144
InputFilterOptions::flags
unsigned flags
Definition: ffmpeg.h:261
OptionsContext::max_frame_rates
SpecifierOptList max_frame_rates
Definition: ffmpeg.h:137
dts_delta_threshold
float dts_delta_threshold
Definition: ffmpeg_opt.c:55
fifo.h
bsf.h
vstats_version
int vstats_version
Definition: ffmpeg_opt.c:77
FRAME_OPAQUE_SUB_HEARTBEAT
@ FRAME_OPAQUE_SUB_HEARTBEAT
Definition: ffmpeg.h:88
OptionsContext::g
OptionGroup * g
Definition: ffmpeg.h:124
Decoder::frames_decoded
uint64_t frames_decoded
Definition: ffmpeg.h:389
OptionsContext::enc_stats_pre_fmt
SpecifierOptList enc_stats_pre_fmt
Definition: ffmpeg.h:233
StreamMap::disabled
int disabled
Definition: ffmpeg.h:117
OutputStream::logfile_prefix
char * logfile_prefix
Definition: ffmpeg.h:582
OptionsContext::mux_stats_fmt
SpecifierOptList mux_stats_fmt
Definition: ffmpeg.h:235
EncStatsComponent::str_len
size_t str_len
Definition: ffmpeg.h:497
ifile_open
int ifile_open(const OptionsContext *o, const char *filename, Scheduler *sch)
Definition: ffmpeg_demux.c:1548
DecoderOpts::log_parent
void * log_parent
Definition: ffmpeg.h:362
LatencyProbe
LatencyProbe
Definition: ffmpeg.h:98
KeyframeForceCtx::ref_pts
int64_t ref_pts
Definition: ffmpeg.h:527
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
OptionsContext
Definition: ffmpeg.h:123
FrameData::tb
AVRational tb
Definition: ffmpeg.h:640
do_pkt_dump
int do_pkt_dump
Definition: ffmpeg_opt.c:65
OutputFilter::bound
int bound
Definition: ffmpeg.h:322
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:3031
LATENCY_PROBE_FILTER_PRE
@ LATENCY_PROBE_FILTER_PRE
Definition: ffmpeg.h:102
Decoder::samples_decoded
uint64_t samples_decoded
Definition: ffmpeg.h:390
InputFilterOptions::trim_end_us
int64_t trim_end_us
Definition: ffmpeg.h:246
InputFile
Definition: ffmpeg.h:436
OptionsContext::recording_time
int64_t recording_time
Definition: ffmpeg.h:167
input_files
InputFile ** input_files
Definition: ffmpeg.c:104
LATENCY_PROBE_DEMUX
@ LATENCY_PROBE_DEMUX
Definition: ffmpeg.h:99
OptionsContext::nb_stream_maps
int nb_stream_maps
Definition: ffmpeg.h:161
OptionsContext::audio_disable
int audio_disable
Definition: ffmpeg.h:177
FrameData::frame_rate_filter
AVRational frame_rate_filter
Definition: ffmpeg.h:643
pkt
AVPacket * pkt
Definition: movenc.c:60
OutputStream::enc
Encoder * enc
Definition: ffmpeg.h:565
OptionsContext::hwaccel_output_formats
SpecifierOptList hwaccel_output_formats
Definition: ffmpeg.h:156
ENC_STATS_PTS_IN
@ ENC_STATS_PTS_IN
Definition: ffmpeg.h:481
OptionsContext::metadata
SpecifierOptList metadata
Definition: ffmpeg.h:184
OptionsContext::filters
SpecifierOptList filters
Definition: ffmpeg.h:208
nb_output_dumped
atomic_uint nb_output_dumped
Definition: ffmpeg.c:99
term_init
void term_init(void)
Definition: ffmpeg.c:201
StreamMap::linklabel
char * linklabel
Definition: ffmpeg.h:120
init_simple_filtergraph
int init_simple_filtergraph(InputStream *ist, OutputStream *ost, char *graph_desc, Scheduler *sch, unsigned sch_idx_enc, const OutputFilterOptions *opts)
Definition: ffmpeg_filter.c:1192
of_free
void of_free(OutputFile **pof)
Definition: ffmpeg_mux.c:850
HWACCEL_GENERIC
@ HWACCEL_GENERIC
Definition: ffmpeg.h:84
OutputStream::fg_simple
FilterGraph * fg_simple
Definition: ffmpeg.h:586
VSYNC_VSCFR
@ VSYNC_VSCFR
Definition: ffmpeg.h:70
EncStats::components
EncStatsComponent * components
Definition: ffmpeg.h:501
assert_file_overwrite
int assert_file_overwrite(const char *filename)
Definition: ffmpeg_opt.c:607
OptionsContext::intra_matrices
SpecifierOptList intra_matrices
Definition: ffmpeg.h:198
OptionsContext::stream_groups
SpecifierOptList stream_groups
Definition: ffmpeg.h:225
FilterGraph::outputs
OutputFilter ** outputs
Definition: ffmpeg.h:339
vstats_filename
char * vstats_filename
Definition: ffmpeg_opt.c:52
OutputStream::frame_aspect_ratio
AVRational frame_aspect_ratio
Definition: ffmpeg.h:578
InputStream::framerate
AVRational framerate
Definition: ffmpeg.h:415
OutputStream::quality
atomic_int quality
Definition: ffmpeg.h:601
KF_FORCE_SOURCE_NO_DROP
@ KF_FORCE_SOURCE_NO_DROP
Definition: ffmpeg.h:520
dec_init
int dec_init(Decoder **pdec, Scheduler *sch, AVDictionary **dec_opts, const DecoderOpts *o, AVFrame *param_out)
Definition: ffmpeg_dec.c:1273
ENC_STATS_FILE_IDX
@ ENC_STATS_FILE_IDX
Definition: ffmpeg.h:473
ENCODER_FINISHED
@ ENCODER_FINISHED
Definition: ffmpeg.h:513
OptionsContext::limit_filesize
int64_t limit_filesize
Definition: ffmpeg.h:169
OptionsContext::hwaccel_devices
SpecifierOptList hwaccel_devices
Definition: ffmpeg.h:155
OptionsContext::autoscale
SpecifierOptList autoscale
Definition: ffmpeg.h:228
OutputFilter::linklabel
uint8_t * linklabel
Definition: ffmpeg.h:323
InputFilter
Definition: ffmpeg.h:309
ENC_STATS_BITRATE
@ ENC_STATS_BITRATE
Definition: ffmpeg.h:488
AVHWDeviceType
AVHWDeviceType
Definition: hwcontext.h:27
ist_filter_add
int ist_filter_add(InputStream *ist, InputFilter *ifilter, int is_simple, InputFilterOptions *opts)
Definition: ffmpeg_demux.c:984
OptionsContext::sample_fmts
SpecifierOptList sample_fmts
Definition: ffmpeg.h:188
LATENCY_PROBE_ENC_PRE
@ LATENCY_PROBE_ENC_PRE
Definition: ffmpeg.h:104
forced_keyframes_const
forced_keyframes_const
Definition: ffmpeg.h:459
ignore_unknown_streams
int ignore_unknown_streams
Definition: ffmpeg_opt.c:84
MUXER_FINISHED
@ MUXER_FINISHED
Definition: ffmpeg.h:514
FrameData::dec
struct FrameData::@4 dec
InputStream::filters
InputFilter ** filters
Definition: ffmpeg.h:424
OFILTER_FLAG_AUTOSCALE
@ OFILTER_FLAG_AUTOSCALE
Definition: ffmpeg.h:270
max_error_rate
float max_error_rate
Definition: ffmpeg_opt.c:74
KF_FORCE_SOURCE
@ KF_FORCE_SOURCE
Definition: ffmpeg.h:518
AVExpr
Definition: eval.c:158
OutputFilterOptions::swr_opts
AVDictionary * swr_opts
Definition: ffmpeg.h:292
encoder_thread
int encoder_thread(void *arg)
Definition: ffmpeg_enc.c:851
OptionsContext::fix_sub_duration
SpecifierOptList fix_sub_duration
Definition: ffmpeg.h:213
DecoderOpts::hwaccel_device
char * hwaccel_device
Definition: ffmpeg.h:370
InputFilterOptions::name
uint8_t * name
Definition: ffmpeg.h:248
OptionsContext::shortest
int shortest
Definition: ffmpeg.h:173
InputFilter::graph
struct FilterGraph * graph
Definition: ffmpeg.h:310
OptionsContext::accurate_seek
int accurate_seek
Definition: ffmpeg.h:147
OutputFilterOptions::width
int width
Definition: ffmpeg.h:300
OutputStream::enc_stats_pre
EncStats enc_stats_pre
Definition: ffmpeg.h:603
command
static int command(AVFilterContext *ctx, const char *cmd, const char *arg, char *res, int res_len, int flags)
Definition: vf_drawtext.c:1186
OutputStream::bitexact
int bitexact
Definition: ffmpeg.h:575
arg
const char * arg
Definition: jacosubdec.c:67
KeyframeForceCtx::expr_const_values
double expr_const_values[FKF_NB]
Definition: ffmpeg.h:535
of_enc_stats_close
void of_enc_stats_close(void)
Definition: ffmpeg_mux_init.c:196
OutputFilterOptions::format
int format
Definition: ffmpeg.h:299
OutputStream::encoder_opts
AVDictionary * encoder_opts
Definition: ffmpeg.h:589
OptionsContext::start_time
int64_t start_time
Definition: ffmpeg.h:127
AVFormatContext
Format I/O context.
Definition: avformat.h:1255
ENC_STATS_KEYFRAME
@ ENC_STATS_KEYFRAME
Definition: ffmpeg.h:490
opts
AVDictionary * opts
Definition: movenc.c:51
AVClass
Describe the class of an AVClass context structure.
Definition: log.h:66
dec_create
int dec_create(const OptionsContext *o, const char *arg, Scheduler *sch)
Create a standalone decoder.
Definition: ffmpeg_dec.c:1298
OutputFilter::name
uint8_t * name
Definition: ffmpeg.h:318
Decoder::decode_errors
uint64_t decode_errors
Definition: ffmpeg.h:391
InputStream::top_field_first
int top_field_first
Definition: ffmpeg.h:417
InputStream::st
AVStream * st
Definition: ffmpeg.h:402
dec_filter_add
int dec_filter_add(Decoder *dec, InputFilter *ifilter, InputFilterOptions *opts)
Definition: ffmpeg_dec.c:1370
forced_keyframes_const_names
const char *const forced_keyframes_const_names[]
Definition: ffmpeg_mux_init.c:2984
OptionsContext::audio_channels
SpecifierOptList audio_channels
Definition: ffmpeg.h:134
InputFile::start_time_effective
int64_t start_time_effective
Effective format start time based on enabled streams.
Definition: ffmpeg.h:447
Decoder
Definition: ffmpeg.h:380
ENC_STATS_PTS_TIME
@ ENC_STATS_PTS_TIME
Definition: ffmpeg.h:480
OptionsContext::fix_sub_duration_heartbeat
SpecifierOptList fix_sub_duration_heartbeat
Definition: ffmpeg.h:214
hw_device_init_from_type
int hw_device_init_from_type(enum AVHWDeviceType type, const char *device, HWDevice **dev_out)
Definition: ffmpeg_hw.c:243
AVRational
Rational number (pair of numerator and denominator).
Definition: rational.h:58
OFILTER_FLAG_AUDIO_24BIT
@ OFILTER_FLAG_AUDIO_24BIT
Definition: ffmpeg.h:269
EncStats::lock
pthread_mutex_t lock
Definition: ffmpeg.h:506
OptionsContext::copy_prior_start
SpecifierOptList copy_prior_start
Definition: ffmpeg.h:207
EncStats
Definition: ffmpeg.h:500
OptionsContext::program
SpecifierOptList program
Definition: ffmpeg.h:224
OutputStream::frame_rate
AVRational frame_rate
Definition: ffmpeg.h:569
copy_unknown_streams
int copy_unknown_streams
Definition: ffmpeg_opt.c:85
OptionsContext::frame_aspect_ratios
SpecifierOptList frame_aspect_ratios
Definition: ffmpeg.h:193
OptionsContext::reinit_filters
SpecifierOptList reinit_filters
Definition: ffmpeg.h:212
OptionsContext::dump_attachment
SpecifierOptList dump_attachment
Definition: ffmpeg.h:153
InputStream::fix_sub_duration
int fix_sub_duration
Definition: ffmpeg.h:420
OutputStream::top_field_first
int top_field_first
Definition: ffmpeg.h:573
FrameData::wallclock
int64_t wallclock[LATENCY_PROBE_NB]
Definition: ffmpeg.h:647
packet_data_c
const FrameData * packet_data_c(AVPacket *pkt)
Definition: ffmpeg.c:470
update_benchmark
void update_benchmark(const char *fmt,...)
Definition: ffmpeg.c:476
OptionsContext::display_vflips
SpecifierOptList display_vflips
Definition: ffmpeg.h:196
OptionsContext::max_frames
SpecifierOptList max_frames
Definition: ffmpeg.h:185
do_benchmark_all
int do_benchmark_all
Definition: ffmpeg_opt.c:63
filtergraphs
FilterGraph ** filtergraphs
Definition: ffmpeg.c:110
InputFilterOptions
Definition: ffmpeg.h:244
OptionsContext::input_sync_ref
int input_sync_ref
Definition: ffmpeg.h:149
OutputFile::index
int index
Definition: ffmpeg.h:616
OptionGroup
Definition: cmdutils.h:271
DECODER_FLAG_FIX_SUB_DURATION
@ DECODER_FLAG_FIX_SUB_DURATION
Definition: ffmpeg.h:344
ENC_STATS_PTS_TIME_IN
@ ENC_STATS_PTS_TIME_IN
Definition: ffmpeg.h:482
FilterGraph::nb_outputs
int nb_outputs
Definition: ffmpeg.h:340
OutputStream::logfile
FILE * logfile
Definition: ffmpeg.h:583
OutputFilterOptions::vsync_method
enum VideoSyncMethod vsync_method
Definition: ffmpeg.h:303
swresample.h
find_codec
int find_codec(void *logctx, const char *name, enum AVMediaType type, int encoder, const AVCodec **codec)
Definition: ffmpeg_opt.c:574
InputStream::par
AVCodecParameters * par
Codec parameters - to be used by the decoding/streamcopy code.
Definition: ffmpeg.h:410
OutputFile::streams
OutputStream ** streams
Definition: ffmpeg.h:620
Scheduler
Definition: ffmpeg_sched.c:269
recast_media
int recast_media
Definition: ffmpeg_opt.c:86
FilterGraph
Definition: ffmpeg.h:333
print_stats
int print_stats
Definition: ffmpeg_opt.c:72
OutputFilterOptions::nb_threads
const char * nb_threads
Definition: ffmpeg.h:294
ENC_TIME_BASE_DEMUX
@ ENC_TIME_BASE_DEMUX
Definition: ffmpeg.h:77
InputFilterOptions::sub2video_width
int sub2video_width
Definition: ffmpeg.h:257
OutputFilterOptions::pix_fmts
enum AVPixelFormat * pix_fmts
Definition: ffmpeg.h:280
OutputFilterOptions::name
char * name
Definition: ffmpeg.h:275
options
const OptionDef options[]
VideoSyncMethod
VideoSyncMethod
Definition: ffmpeg.h:65
eval.h
OutputStream::force_fps
int force_fps
Definition: ffmpeg.h:571
OptionsContext::discard
SpecifierOptList discard
Definition: ffmpeg.h:222
OptionsContext::apad
SpecifierOptList apad
Definition: ffmpeg.h:221
OptionsContext::enc_stats_post_fmt
SpecifierOptList enc_stats_post_fmt
Definition: ffmpeg.h:234
OutputStream::filter
OutputFilter * filter
Definition: ffmpeg.h:587
IFILTER_FLAG_REINIT
@ IFILTER_FLAG_REINIT
Definition: ffmpeg.h:240
f
f
Definition: af_crystalizer.c:121
AVIOContext
Bytestream IO Context.
Definition: avio.h:160
OptionsContext::thread_queue_size
int thread_queue_size
Definition: ffmpeg.h:148
AVMediaType
AVMediaType
Definition: avutil.h:199
FRAME_OPAQUE_SEND_COMMAND
@ FRAME_OPAQUE_SEND_COMMAND
Definition: ffmpeg.h:90
SpecifierOptList
Definition: cmdutils.h:117
AVChannelLayout
An AVChannelLayout holds information about the channel layout of audio data.
Definition: channel_layout.h:311
threadmessage.h
OptionsContext::enc_stats_pre
SpecifierOptList enc_stats_pre
Definition: ffmpeg.h:230
FFMPEG_OPT_TOP
#define FFMPEG_OPT_TOP
Definition: ffmpeg.h:57
filtergraph_is_simple
int filtergraph_is_simple(const FilterGraph *fg)
Definition: ffmpeg_filter.c:2025
EncStatsType
EncStatsType
Definition: ffmpeg.h:471
StreamMap
Definition: ffmpeg.h:116
ENC_STATS_NB_SAMPLES
@ ENC_STATS_NB_SAMPLES
Definition: ffmpeg.h:486
copy_ts
int copy_ts
Definition: ffmpeg_opt.c:66
avio.h
copy_tb
int copy_tb
Definition: ffmpeg_opt.c:68
OptionsContext::seek_timestamp
int seek_timestamp
Definition: ffmpeg.h:129
LATENCY_PROBE_NB
@ LATENCY_PROBE_NB
Definition: ffmpeg.h:106
OptionsContext::streamid
AVDictionary * streamid
Definition: ffmpeg.h:182
nb_decoders
int nb_decoders
Definition: ffmpeg.c:114
OptionsContext::pass
SpecifierOptList pass
Definition: ffmpeg.h:216
HWDevice::device_ref
AVBufferRef * device_ref
Definition: ffmpeg.h:112
OutputStream::type
enum AVMediaType type
Definition: ffmpeg.h:545
OutputFile::url
const char * url
Definition: ffmpeg.h:618
hw_device_get_by_type
HWDevice * hw_device_get_by_type(enum AVHWDeviceType type)
Definition: ffmpeg_hw.c:28
IFilterFlags
IFilterFlags
Definition: ffmpeg.h:238
OptionsContext::disposition
SpecifierOptList disposition
Definition: ffmpeg.h:223
fg_finalise_bindings
int fg_finalise_bindings(void)
Definition: ffmpeg_filter.c:1376
LATENCY_PROBE_DEC_PRE
@ LATENCY_PROBE_DEC_PRE
Definition: ffmpeg.h:100
OptionsContext::readrate_initial_burst
double readrate_initial_burst
Definition: ffmpeg.h:146
OSTFinished
OSTFinished
Definition: ffmpeg.h:512
FrameData::pts
int64_t pts
Definition: ffmpeg.h:639
OptionsContext::find_stream_info
int find_stream_info
Definition: ffmpeg.h:150
OptionsContext::display_rotations
SpecifierOptList display_rotations
Definition: ffmpeg.h:194
strip_specifiers
AVDictionary * strip_specifiers(const AVDictionary *dict)
Definition: ffmpeg_opt.c:155
OutputFilterOptions::enc
const AVCodec * enc
Definition: ffmpeg.h:278
OutputStream::kf
KeyframeForceCtx kf
Definition: ffmpeg.h:580
do_benchmark
int do_benchmark
Definition: ffmpeg_opt.c:62
InputFilterOptions::sub2video_height
int sub2video_height
Definition: ffmpeg.h:258
Encoder
Definition: ffmpeg_enc.c:41
OptionsContext::ts_scale
SpecifierOptList ts_scale
Definition: ffmpeg.h:152
ENC_STATS_FRAME_NUM
@ ENC_STATS_FRAME_NUM
Definition: ffmpeg.h:475
KeyframeForceCtx
Definition: ffmpeg.h:524
OutputFilter::type
enum AVMediaType type
Definition: ffmpeg.h:327
OptionsContext::chroma_intra_matrices
SpecifierOptList chroma_intra_matrices
Definition: ffmpeg.h:200
HWACCEL_AUTO
@ HWACCEL_AUTO
Definition: ffmpeg.h:83
OutputStream::max_frame_rate
AVRational max_frame_rate
Definition: ffmpeg.h:570
PacketOpaque
PacketOpaque
Definition: ffmpeg.h:93
FrameData::bits_per_raw_sample
int bits_per_raw_sample
Definition: ffmpeg.h:645
OptionsContext::frame_rates
SpecifierOptList frame_rates
Definition: ffmpeg.h:136
StreamMap::stream_index
int stream_index
Definition: ffmpeg.h:119
decoders
Decoder ** decoders
Definition: ffmpeg.c:113
OptionsContext::codec_names
SpecifierOptList codec_names
Definition: ffmpeg.h:132
OptionsContext::stream_maps
StreamMap * stream_maps
Definition: ffmpeg.h:160
ofilter_bind_ost
int ofilter_bind_ost(OutputFilter *ofilter, OutputStream *ost, unsigned sched_idx_enc, const OutputFilterOptions *opts)
Definition: ffmpeg_filter.c:800
OptionsContext::autorotate
SpecifierOptList autorotate
Definition: ffmpeg.h:157
OptionsContext::fps_mode
SpecifierOptList fps_mode
Definition: ffmpeg.h:191
DecoderOpts::time_base
AVRational time_base
Definition: ffmpeg.h:373
InputFilterOptions::fallback
AVFrame * fallback
Definition: ffmpeg.h:263
OptionsContext::start_time_eof
int64_t start_time_eof
Definition: ffmpeg.h:128
VSYNC_CFR
@ VSYNC_CFR
Definition: ffmpeg.h:68
OptionsContext::shortest_buf_duration
float shortest_buf_duration
Definition: ffmpeg.h:172
OutputFile::bitexact
int bitexact
Definition: ffmpeg.h:626
exit_on_error
int exit_on_error
Definition: ffmpeg_opt.c:70
OptionsContext::mux_stats
SpecifierOptList mux_stats
Definition: ffmpeg.h:232
output_files
OutputFile ** output_files
Definition: ffmpeg.c:107
OptionsContext::muxing_queue_data_threshold
SpecifierOptList muxing_queue_data_threshold
Definition: ffmpeg.h:219
FRAME_OPAQUE_EOF
@ FRAME_OPAQUE_EOF
Definition: ffmpeg.h:89
InputFile::ctx
AVFormatContext * ctx
Definition: ffmpeg.h:441
OptionsContext::hwaccels
SpecifierOptList hwaccels
Definition: ffmpeg.h:154
ost_iter
OutputStream * ost_iter(OutputStream *prev)
Definition: ffmpeg.c:359
OptionsContext::enc_stats_post
SpecifierOptList enc_stats_post
Definition: ffmpeg.h:231
OutputStream::attachment_filename
char * attachment_filename
Definition: ffmpeg.h:591
ENC_STATS_STREAM_IDX
@ ENC_STATS_STREAM_IDX
Definition: ffmpeg.h:474
ENC_STATS_SAMPLE_NUM
@ ENC_STATS_SAMPLE_NUM
Definition: ffmpeg.h:485
OFilterFlags
OFilterFlags
Definition: ffmpeg.h:266
avcodec.h
InputStream::decoder
Decoder * decoder
Definition: ffmpeg.h:411
OptionsContext::metadata_map
SpecifierOptList metadata_map
Definition: ffmpeg.h:204
AVStream
Stream structure.
Definition: avformat.h:743
dec_free
void dec_free(Decoder **pdec)
Definition: ffmpeg_dec.c:97
OutputFilterOptions::trim_start_us
int64_t trim_start_us
Definition: ffmpeg.h:282
enc_free
void enc_free(Encoder **penc)
Definition: ffmpeg_enc.c:61
pixfmt.h
abort_on_flags
int abort_on_flags
Definition: ffmpeg_opt.c:71
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:311
VSYNC_DROP
@ VSYNC_DROP
Definition: ffmpeg.h:72
packet_data
FrameData * packet_data(AVPacket *pkt)
Definition: ffmpeg.c:464
InputFile::streams
InputStream ** streams
Definition: ffmpeg.h:455
DECODER_FLAG_TOP_FIELD_FIRST
@ DECODER_FLAG_TOP_FIELD_FIRST
Definition: ffmpeg.h:351
hw_device_free_all
void hw_device_free_all(void)
Definition: ffmpeg_hw.c:286
avformat.h
HWAccelID
HWAccelID
Definition: ffmpeg.h:81
dict.h
ifile_close
void ifile_close(InputFile **f)
Definition: ffmpeg_demux.c:854
OptionsContext::max_muxing_queue_size
SpecifierOptList max_muxing_queue_size
Definition: ffmpeg.h:218
FrameOpaque
FrameOpaque
Definition: ffmpeg.h:87
filter_hw_device
HWDevice * filter_hw_device
Definition: ffmpeg_opt.c:50
AVCodecContext
main external API structure.
Definition: avcodec.h:445
OptionsContext::inter_matrices
SpecifierOptList inter_matrices
Definition: ffmpeg.h:199
OptionsContext::audio_sample_rate
SpecifierOptList audio_sample_rate
Definition: ffmpeg.h:135
OptionsContext::mux_preload
float mux_preload
Definition: ffmpeg.h:170
PKT_OPAQUE_SUB_HEARTBEAT
@ PKT_OPAQUE_SUB_HEARTBEAT
Definition: ffmpeg.h:94
HWDevice::name
const char * name
Definition: ffmpeg.h:110
ist_output_add
int ist_output_add(InputStream *ist, OutputStream *ost)
Definition: ffmpeg_demux.c:966
KeyframeForceCtx::index
int index
Definition: ffmpeg.h:532
frame_data_c
const FrameData * frame_data_c(AVFrame *frame)
Definition: ffmpeg.c:458
InputStream::file
struct InputFile * file
Definition: ffmpeg.h:398
avfilter.h
IFILTER_FLAG_CFR
@ IFILTER_FLAG_CFR
Definition: ffmpeg.h:241
OptionsContext::frame_sizes
SpecifierOptList frame_sizes
Definition: ffmpeg.h:138
OptionsContext::video_disable
int video_disable
Definition: ffmpeg.h:176
atomic_uint
intptr_t atomic_uint
Definition: stdatomic.h:56
OutputStream::bits_per_raw_sample
int bits_per_raw_sample
Definition: ffmpeg.h:576
OutputStream::enc_stats_post
EncStats enc_stats_post
Definition: ffmpeg.h:604
Decoder::subtitle_header_size
int subtitle_header_size
Definition: ffmpeg.h:386
frame_data
FrameData * frame_data(AVFrame *frame)
Get our axiliary frame data attached to the frame, allocating it if needed.
Definition: ffmpeg.c:452
ffmpeg_parse_options
int ffmpeg_parse_options(int argc, char **argv, Scheduler *sch)
EncStats::lock_initialized
int lock_initialized
Definition: ffmpeg.h:507
video_sync_method
enum VideoSyncMethod video_sync_method
Definition: ffmpeg_opt.c:59
OutputStream::frames_encoded
uint64_t frames_encoded
Definition: ffmpeg.h:597
HWACCEL_NONE
@ HWACCEL_NONE
Definition: ffmpeg.h:82
InputFile::ts_offset
int64_t ts_offset
Definition: ffmpeg.h:448
VSYNC_AUTO
@ VSYNC_AUTO
Definition: ffmpeg.h:66
OutputFilter
Definition: ffmpeg.h:314
OptionsContext::codec_tags
SpecifierOptList codec_tags
Definition: ffmpeg.h:187
OptionsContext::filter_scripts
SpecifierOptList filter_scripts
Definition: ffmpeg.h:210
DecoderOpts::flags
int flags
Definition: ffmpeg.h:359
OptionsContext::time_bases
SpecifierOptList time_bases
Definition: ffmpeg.h:226
avutil.h
start_at_zero
int start_at_zero
Definition: ffmpeg_opt.c:67
AVBufferRef
A reference to a data buffer.
Definition: buffer.h:82
OutputFilterOptions::height
int height
Definition: ffmpeg.h:301
EncTimeBase
EncTimeBase
Definition: ffmpeg.h:76
ist_iter
InputStream * ist_iter(InputStream *prev)
Definition: ffmpeg.c:375
DECODER_FLAG_TS_UNRELIABLE
@ DECODER_FLAG_TS_UNRELIABLE
Definition: ffmpeg.h:346
OutputFilter::nb_frames_drop
atomic_uint_least64_t nb_frames_drop
Definition: ffmpeg.h:330
auto_conversion_filters
int auto_conversion_filters
Definition: ffmpeg_opt.c:78
OptionsContext::rc_overrides
SpecifierOptList rc_overrides
Definition: ffmpeg.h:197
of_open
int of_open(const OptionsContext *o, const char *filename, Scheduler *sch)
Definition: ffmpeg_mux_init.c:3197
DecoderOpts::codec
const AVCodec * codec
Definition: ffmpeg.h:364
KeyframeForceCtx::pexpr
AVExpr * pexpr
Definition: ffmpeg.h:534
InputStream::index
int index
Definition: ffmpeg.h:400
ffmpeg_sched.h
OptionsContext::copy_initial_nonkeyframes
SpecifierOptList copy_initial_nonkeyframes
Definition: ffmpeg.h:206
FKF_N_FORCED
@ FKF_N_FORCED
Definition: ffmpeg.h:461
OptionsContext::attachments
const char ** attachments
Definition: ffmpeg.h:162
ENC_TIME_BASE_FILTER
@ ENC_TIME_BASE_FILTER
Definition: ffmpeg.h:78
stdin_interaction
int stdin_interaction
Definition: ffmpeg_opt.c:73
do_hex_dump
int do_hex_dump
Definition: ffmpeg_opt.c:64
AVPacket
This structure stores compressed data.
Definition: packet.h:497
EncStatsComponent
Definition: ffmpeg.h:493
OutputFilterOptions::trim_duration_us
int64_t trim_duration_us
Definition: ffmpeg.h:283
HWDevice::type
enum AVHWDeviceType type
Definition: ffmpeg.h:111
OutputFilterOptions::ts_offset
int64_t ts_offset
Definition: ffmpeg.h:284
OFILTER_FLAG_DISABLE_CONVERT
@ OFILTER_FLAG_DISABLE_CONVERT
Definition: ffmpeg.h:267
Decoder::type
enum AVMediaType type
Definition: ffmpeg.h:383
cmdutils.h
InputFile::input_ts_offset
int64_t input_ts_offset
Definition: ffmpeg.h:442
EncStats::nb_components
int nb_components
Definition: ffmpeg.h:502
OptionsContext::data_disable
int data_disable
Definition: ffmpeg.h:179
muxer_thread
int muxer_thread(void *arg)
Definition: ffmpeg_mux.c:408
enc_alloc
int enc_alloc(Encoder **penc, const AVCodec *codec, Scheduler *sch, unsigned sch_idx)
Definition: ffmpeg_enc.c:71
FKF_NB
@ FKF_NB
Definition: ffmpeg.h:465
ENC_STATS_PKT_SIZE
@ ENC_STATS_PKT_SIZE
Definition: ffmpeg.h:487
OutputStream
Definition: mux.c:53
hwcontext.h
OutputStream::st
AVStream * st
Definition: mux.c:54
DecoderOpts::framerate
AVRational framerate
Definition: ffmpeg.h:377
EncStatsComponent::str
uint8_t * str
Definition: ffmpeg.h:496
dts_error_threshold
float dts_error_threshold
Definition: ffmpeg_opt.c:56
hw_device_for_filter
AVBufferRef * hw_device_for_filter(void)
Get a hardware device to be used with this filtergraph.
Definition: ffmpeg_hw.c:298
OutputFilterOptions::output_tb
AVRational output_tb
Definition: ffmpeg.h:289
opt_match_per_type_str
const char * opt_match_per_type_str(const SpecifierOptList *sol, char mediatype)
Definition: ffmpeg_opt.c:172
InputFile::nb_streams
int nb_streams
Definition: ffmpeg.h:456
FKF_N
@ FKF_N
Definition: ffmpeg.h:460
OptionsContext::guess_layout_max
SpecifierOptList guess_layout_max
Definition: ffmpeg.h:220
ENC_STATS_DTS_TIME
@ ENC_STATS_DTS_TIME
Definition: ffmpeg.h:484
OutputFile::recording_time
int64_t recording_time
desired length of the resulting file in microseconds == AV_TIME_BASE units
Definition: ffmpeg.h:623
OutputStream::samples_encoded
uint64_t samples_encoded
Definition: ffmpeg.h:598
of_stream_init
int of_stream_init(OutputFile *of, OutputStream *ost)
Definition: ffmpeg_mux.c:612
hw_device_get_by_name
HWDevice * hw_device_get_by_name(const char *name)
Definition: ffmpeg_hw.c:42
VSYNC_PASSTHROUGH
@ VSYNC_PASSTHROUGH
Definition: ffmpeg.h:67
InputStream::dec
const AVCodec * dec
Definition: ffmpeg.h:412
PKT_OPAQUE_FIX_SUB_DURATION
@ PKT_OPAQUE_FIX_SUB_DURATION
Definition: ffmpeg.h:95
EncStats::io
AVIOContext * io
Definition: ffmpeg.h:504
DecoderOpts::hwaccel_device_type
enum AVHWDeviceType hwaccel_device_type
Definition: ffmpeg.h:369
of_write_trailer
int of_write_trailer(OutputFile *of)
Definition: ffmpeg_mux.c:741
ist_find_unused
InputStream * ist_find_unused(enum AVMediaType type)
Find an unused input stream of given type.
Definition: ffmpeg_demux.c:156
OptionsContext::bitstream_filters
SpecifierOptList bitstream_filters
Definition: ffmpeg.h:186
atomic_uint_least64_t
intptr_t atomic_uint_least64_t
Definition: stdatomic.h:69
OptionsContext::enc_time_bases
SpecifierOptList enc_time_bases
Definition: ffmpeg.h:227
ENC_STATS_TIMEBASE
@ ENC_STATS_TIMEBASE
Definition: ffmpeg.h:477
DecoderFlags
DecoderFlags
Definition: ffmpeg.h:343
OptionsContext::top_field_first
SpecifierOptList top_field_first
Definition: ffmpeg.h:202
term_exit
void term_exit(void)
Definition: ffmpeg.c:131
OutputFilter::nb_frames_dup
atomic_uint_least64_t nb_frames_dup
Definition: ffmpeg.h:329
filter_complex_nbthreads
int filter_complex_nbthreads
Definition: ffmpeg_opt.c:76
OutputFile
Definition: ffmpeg.h:613
InputFilterOptions::framerate
AVRational framerate
Definition: ffmpeg.h:255
OptionsContext::loop
int loop
Definition: ffmpeg.h:143
LATENCY_PROBE_FILTER_POST
@ LATENCY_PROBE_FILTER_POST
Definition: ffmpeg.h:103
DecoderOpts::name
char * name
Definition: ffmpeg.h:361