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