FFmpegKit iOS / macOS / tvOS API 5.1
fftools_ffmpeg.h
Go to the documentation of this file.
1/*
2 * This file is part of FFmpeg.
3 * Copyright (c) 2018 Taner Sener ( tanersener gmail com )
4 *
5 * FFmpeg is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2.1 of the License, or (at your option) any later version.
9 *
10 * FFmpeg is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
14 *
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with FFmpeg; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18 */
19
20/*
21 * This file is the modified version of ffmpeg.h file living in ffmpeg source code under the fftools folder. We
22 * manually update it each time we depend on a new ffmpeg version. Below you can see the list of changes applied
23 * by us to develop mobile-ffmpeg and later ffmpeg-kit libraries.
24 *
25 * mobile-ffmpeg / ffmpeg-kit changes by Taner Sener
26 *
27 * 09.2022
28 * --------------------------------------------------------
29 * - config.h include added back
30 * - volatile dropped from thread local variables
31 * - dropped signatures of ffmpeg_opt.c methods called by both ffmpeg and ffprobe
32 *
33 * 06.2020
34 * --------------------------------------------------------
35 * - cancel_operation() method signature updated with id
36 *
37 * 12.2019
38 * --------------------------------------------------------
39 * - concurrent execution support ("__thread" specifier added to variables used by multiple threads,
40 * signatures of ffmpeg_opt.c methods called by both ffmpeg and ffprobe added)
41 *
42 * 03.2019
43 * --------------------------------------------------------
44 * - config.h include removed
45 *
46 * 08.2018
47 * --------------------------------------------------------
48 * - fftools_ prefix added to file name and include guards
49 * - set_report_callback() method declared
50 * - cancel_operation() method declared
51 *
52 * 07.2018
53 * --------------------------------------------------------
54 * - include guards renamed
55 */
56
57#ifndef FFTOOLS_FFMPEG_H
58#define FFTOOLS_FFMPEG_H
59
60#include "config.h"
61
62#include <stdint.h>
63#include <stdio.h>
64#include <signal.h>
65
66#include "fftools_cmdutils.h"
67
68#include "libavformat/avformat.h"
69#include "libavformat/avio.h"
70
71#include "libavcodec/avcodec.h"
72#include "libavcodec/bsf.h"
73
74#include "libavfilter/avfilter.h"
75
76#include "libavutil/avutil.h"
77#include "libavutil/dict.h"
78#include "libavutil/eval.h"
79#include "libavutil/fifo.h"
80#include "libavutil/hwcontext.h"
81#include "libavutil/pixfmt.h"
82#include "libavutil/rational.h"
83#include "libavutil/thread.h"
84#include "libavutil/threadmessage.h"
85
86#include "libswresample/swresample.h"
87
95};
96
97#define MAX_STREAMS 1024 /* arbitrary sanity check value */
98
103};
104
105typedef struct HWDevice {
106 const char *name;
107 enum AVHWDeviceType type;
108 AVBufferRef *device_ref;
110
111/* select an input stream for an output stream */
112typedef struct StreamMap {
113 int disabled; /* 1 is this mapping is disabled by a negative map */
118 char *linklabel; /* name of an output link, for mapping lavfi outputs */
120
121typedef struct {
122 int file_idx, stream_idx, channel_idx; // input
123 int ofile_idx, ostream_idx; // output
125
126typedef struct OptionsContext {
128
129 /* input/output options */
130 int64_t start_time;
133 const char *format;
134
151
152 /* input options */
154 int loop;
156 float readrate;
160
173
174 /* output options */
177 AudioChannelMap *audio_channel_maps; /* one info entry per -map_channel */
178 int nb_audio_channel_maps; /* number of (valid) -map_channel settings */
182 const char **attachments;
184
186
188 int64_t stop_time;
194
199
200 /* indexed by output file stream index */
203
279
280typedef struct InputFilter {
281 AVFilterContext *filter;
284 uint8_t *name;
285 enum AVMediaType type; // AVMEDIA_TYPE_SUBTITLE for sub2video
286
287 AVFifo *frame_queue;
288
289 // parameters configured for this input
291
294
296 AVChannelLayout ch_layout;
297
298 AVBufferRef *hw_frames_ctx;
300
301 int eof;
303
304typedef struct OutputFilter {
305 AVFilterContext *filter;
308 uint8_t *name;
309
310 /* temporary storage until stream maps are processed */
311 AVFilterInOut *out_tmp;
312 enum AVMediaType type;
313
314 /* desired output stream properties */
316 AVRational frame_rate;
319 AVChannelLayout ch_layout;
320
321 // those are only set if no format is specified and the encoder gives us multiple options
322 // They point directly to the relevant lists of the encoder.
323 const int *formats;
324 const AVChannelLayout *ch_layouts;
325 const int *sample_rates;
327
328typedef struct FilterGraph {
329 int index;
330 const char *graph_desc;
331
332 AVFilterGraph *graph;
334 // true when the filtergraph contains only meta filters
335 // that do not modify the frame data
337
343
344typedef struct InputStream {
346 AVStream *st;
347 int discard; /* true if stream data should be discarded */
349 int decoding_needed; /* non zero if the packets must be decoded in 'raw_fifo', see DECODING_FOR_* */
350#define DECODING_FOR_OST 1
351#define DECODING_FOR_FILTER 2
352 int processing_needed; /* non zero if the packets must be processed */
353
354 AVCodecContext *dec_ctx;
355 const AVCodec *dec;
357 AVPacket *pkt;
358
360 int64_t start; /* time when read started */
361 /* predicted dts of the next packet read for this stream or (when there are
362 * several frames in a packet) of the next frame in current packet (in AV_TIME_BASE units) */
363 int64_t next_dts;
364 int64_t first_dts;
365 int64_t dts;
366
367 int64_t next_pts;
368 int64_t pts;
370
372
373 int64_t min_pts; /* pts with the smallest value in a current stream */
374 int64_t max_pts; /* pts with the higher value in a current stream */
375
376 // when forcing constant input framerate through -r,
377 // this contains the pts that will be given to the next decoded frame
379
380 int64_t nb_samples; /* number of samples in the last decoded audio frame before looping */
381
382 double ts_scale;
384 AVDictionary *decoder_opts;
385 AVRational framerate; /* framerate forced with -r */
388
390
392 struct { /* previous decoded subtitle and related variables */
394 int ret;
395 AVSubtitle subtitle;
397
398 struct sub2video {
399 int64_t last_pts;
400 int64_t end_pts;
401 AVFifo *sub_queue;
402 AVFrame *frame;
403 int w, h;
404 unsigned int initialize;
406
407 /* decoded data from this stream goes into all those filters
408 * currently video and audio only */
411
413
414 /* hwaccel options */
416 enum AVHWDeviceType hwaccel_device_type;
418 enum AVPixelFormat hwaccel_output_format;
419
420 /* hwaccel context */
422 void (*hwaccel_uninit)(AVCodecContext *s);
423 int (*hwaccel_retrieve_data)(AVCodecContext *s, AVFrame *frame);
424 enum AVPixelFormat hwaccel_pix_fmt;
425 enum AVPixelFormat hwaccel_retrieved_pix_fmt;
426
427 /* stats */
428 // combined size of all the packets read
429 uint64_t data_size;
430 /* number of packets successfully read for this stream */
431 uint64_t nb_packets;
432 // number of frames/samples retrieved from the decoder
435
436 int64_t *dts_buffer;
438
439 int got_output;
441
442typedef struct InputFile {
443 AVFormatContext *ctx;
444 int eof_reached; /* true if eof reached */
445 int eagain; /* true if last read attempt returned EAGAIN */
446 int ist_index; /* index of first stream in input_streams */
447 int loop; /* set number of times input stream should be looped */
448 int64_t duration; /* actual duration of the longest stream in a file
449 at the moment when looping happens */
450 AVRational time_base; /* time base of the duration */
453
454 int64_t ts_offset;
455 int64_t last_ts;
456 int64_t start_time; /* user-specified start time in AV_TIME_BASE or AV_NOPTS_VALUE */
458 int nb_streams; /* number of stream that ffmpeg is aware of; may be different
459 from ctx.nb_streams if new streams appear during av_read_frame() */
460 int nb_streams_warn; /* number of streams that the user was warned of */
462 float readrate;
464
465 AVPacket *pkt;
466
467#if HAVE_THREADS
468 AVThreadMessageQueue *in_thread_queue;
469 pthread_t thread; /* thread reading from this file */
470 int non_blocking; /* reading packets from the thread should not block */
471 int joined; /* the thread has been joined */
472 int thread_queue_size; /* maximum number of queued packets */
473#endif
475
482 FKF_NB
484
485#define ABORT_ON_FLAG_EMPTY_OUTPUT (1 << 0)
486#define ABORT_ON_FLAG_EMPTY_OUTPUT_STREAM (1 << 1)
487
488extern const char *const forced_keyframes_const_names[];
489
490typedef enum {
493} OSTFinished ;
494
495typedef struct OutputStream {
496 int file_index; /* file index */
497 int index; /* stream index in the output file */
498 int source_index; /* InputStream index */
499 AVStream *st; /* stream in the output file */
500 int encoding_needed; /* true if encoding needed for this stream */
502 /* input pts and corresponding output pts
503 for A/V sync */
504 struct InputStream *sync_ist; /* input stream to sync against */
505 int64_t sync_opts; /* output frame counter, could be changed to some true timestamp */ // FIXME look at frame_number
506 /* pts of the first frame encoded for this stream, used for limiting
507 * recording time */
508 int64_t first_pts;
509 /* dts of the last packet sent to the muxer */
511 // the timebase of the packets sent to the muxer
512 AVRational mux_timebase;
513 AVRational enc_timebase;
514
515 AVBSFContext *bsf_ctx;
516
517 AVCodecContext *enc_ctx;
518 AVCodecParameters *ref_par; /* associated input codec parameters with encoders options applied */
519 const AVCodec *enc;
520 int64_t max_frames;
522 AVFrame *last_frame;
523 AVPacket *pkt;
525 int64_t last_nb0_frames[3];
526
528
529 /* video only */
530 AVRational frame_rate;
531 AVRational max_frame_rate;
534 const char *fps_mode;
541
543
544 /* forced key frames */
553
554 /* audio only */
555 int *audio_channels_map; /* list of the channels id to pick from the source stream */
556 int audio_channels_mapped; /* number of channels in audio_channels_map */
557
559 FILE *logfile;
560
562 char *avfilter;
563 char *filters;
565
566 AVDictionary *encoder_opts;
567 AVDictionary *sws_dict;
568 AVDictionary *swr_opts;
569 char *apad;
570 OSTFinished finished; /* no more packets should be written for this stream */
571 int unavailable; /* true if the steram is unavailable (possibly temporarily) */
573
574 // init_output_stream() has been called for this stream
575 // The encoder and the bitstream filters have been initialized and the stream
576 // parameters are set in the AVStream.
578
580
586
588
589 /* stats */
590 // combined size of all the packets written
591 uint64_t data_size;
592 // number of packets send to the muxer
594 // number of frames/samples sent to the encoder
597 // number of packets received from the encoder
599
600 /* packet quality factor */
602
604
605 /* the packets are buffered here until the muxer is ready to be initialized */
607
608 /*
609 * The size of the AVPackets' buffers in queue.
610 * Updated when a packet is either pushed or pulled from the queue.
611 */
613
614 /* Threshold after which max_muxing_queue_size will be in effect */
616
617 /* packet picture type */
619
620 /* frame encode sum of squared error values */
621 int64_t error[4];
623
624typedef struct OutputFile {
625 int index;
626
627 const AVOutputFormat *format;
628
629 AVFormatContext *ctx;
630 AVDictionary *opts;
631 int ost_index; /* index of the first stream in output_streams */
633 int64_t start_time;
634 uint64_t limit_filesize; /* filesize limit expressed in bytes */
635
637
640
641extern __thread InputStream **input_streams;
642extern __thread int nb_input_streams;
643extern __thread InputFile **input_files;
644extern __thread int nb_input_files;
645
646extern __thread OutputStream **output_streams;
647extern __thread int nb_output_streams;
648extern __thread OutputFile **output_files;
649extern __thread int nb_output_files;
650
651extern __thread FilterGraph **filtergraphs;
652extern __thread int nb_filtergraphs;
653
654extern __thread char *vstats_filename;
655extern __thread char *sdp_filename;
656
657extern __thread float audio_drift_threshold;
658extern __thread float dts_delta_threshold;
659extern __thread float dts_error_threshold;
660
661extern __thread int audio_volume;
662extern __thread int audio_sync_method;
663extern __thread enum VideoSyncMethod video_sync_method;
664extern __thread float frame_drop_threshold;
665extern __thread int do_benchmark;
666extern __thread int do_benchmark_all;
667extern __thread int do_deinterlace;
668extern __thread int do_hex_dump;
669extern __thread int do_pkt_dump;
670extern __thread int copy_ts;
671extern __thread int start_at_zero;
672extern __thread int copy_tb;
673extern __thread int debug_ts;
674extern __thread int exit_on_error;
675extern __thread int abort_on_flags;
676extern __thread int print_stats;
677extern __thread int64_t stats_period;
678extern __thread int qp_hist;
679extern __thread int stdin_interaction;
680extern __thread int frame_bits_per_raw_sample;
681extern __thread AVIOContext *progress_avio;
682extern __thread float max_error_rate;
683
684extern __thread char *filter_nbthreads;
685extern __thread int filter_complex_nbthreads;
686extern __thread int vstats_version;
687extern __thread int auto_conversion_filters;
688
689extern __thread const AVIOInterruptCB int_cb;
690
691#if CONFIG_QSV
692extern __thread char *qsv_device;
693#endif
694extern __thread HWDevice *filter_hw_device;
695
696extern __thread int want_sdp;
697extern __thread unsigned nb_output_dumped;
698extern __thread int main_ffmpeg_return_code;
699
700void term_init(void);
701void term_exit(void);
702
703void show_usage(void);
704
705void remove_avoptions(AVDictionary **a, AVDictionary *b);
706void assert_avoptions(AVDictionary *m);
707
709
711void check_filter_outputs(void);
715
716void sub2video_update(InputStream *ist, int64_t heartbeat_pts, AVSubtitle *sub);
717
718int ifilter_parameters_from_frame(InputFilter *ifilter, const AVFrame *frame);
719
720int ffmpeg_parse_options(int argc, char **argv);
721
722int videotoolbox_init(AVCodecContext *s);
723int qsv_init(AVCodecContext *s);
724
725HWDevice *hw_device_get_by_name(const char *name);
726int hw_device_init_from_string(const char *arg, HWDevice **dev);
727void hw_device_free_all(void);
728
732
733int hwaccel_decode_init(AVCodecContext *avctx);
734
735/* open the muxer when all the streams are initialized */
738void of_close(OutputFile **pof);
739
740void of_write_packet(OutputFile *of, AVPacket *pkt, OutputStream *ost,
741 int unqueue);
742
743void set_report_callback(void (*callback)(int, float, float, int64_t, int, double, double));
744void cancel_operation(long id);
745
746#endif /* FFTOOLS_FFMPEG_H */
__thread float dts_delta_threshold
int hw_device_setup_for_encode(OutputStream *ost)
struct InputFile InputFile
__thread int copy_tb
HWAccelID
@ HWACCEL_NONE
@ HWACCEL_GENERIC
@ HWACCEL_AUTO
__thread int frame_bits_per_raw_sample
int ifilter_parameters_from_frame(InputFilter *ifilter, const AVFrame *frame)
__thread InputStream ** input_streams
void of_close(OutputFile **pof)
__thread const AVIOInterruptCB int_cb
__thread int64_t stats_period
__thread int nb_input_streams
void term_exit(void)
const char *const forced_keyframes_const_names[]
__thread OutputStream ** output_streams
__thread OutputFile ** output_files
__thread char * sdp_filename
__thread enum VideoSyncMethod video_sync_method
int videotoolbox_init(AVCodecContext *s)
__thread int nb_output_streams
int guess_input_channel_layout(InputStream *ist)
__thread int print_stats
__thread int filter_complex_nbthreads
__thread int abort_on_flags
__thread int nb_input_files
__thread int audio_volume
__thread float max_error_rate
__thread int nb_output_files
__thread int copy_ts
__thread int stdin_interaction
__thread float dts_error_threshold
void set_report_callback(void(*callback)(int, float, float, int64_t, int, double, double))
int hwaccel_decode_init(AVCodecContext *avctx)
HWDevice * hw_device_get_by_name(const char *name)
OSTFinished
@ ENCODER_FINISHED
@ MUXER_FINISHED
void show_usage(void)
int of_check_init(OutputFile *of)
struct OutputFile OutputFile
__thread char * filter_nbthreads
struct FilterGraph FilterGraph
__thread int do_benchmark
__thread float frame_drop_threshold
__thread int vstats_version
__thread char * vstats_filename
__thread int do_deinterlace
int hw_device_setup_for_decode(InputStream *ist)
void hw_device_free_all(void)
__thread int audio_sync_method
int hw_device_setup_for_filter(FilterGraph *fg)
int init_simple_filtergraph(InputStream *ist, OutputStream *ost)
__thread float audio_drift_threshold
void cancel_operation(long id)
__thread AVIOContext * progress_avio
__thread InputFile ** input_files
void sub2video_update(InputStream *ist, int64_t heartbeat_pts, AVSubtitle *sub)
int of_write_trailer(OutputFile *of)
struct OutputStream OutputStream
__thread int do_benchmark_all
__thread FilterGraph ** filtergraphs
__thread int start_at_zero
__thread unsigned nb_output_dumped
struct InputFilter InputFilter
__thread int main_ffmpeg_return_code
forced_keyframes_const
@ FKF_NB
@ FKF_PREV_FORCED_N
@ FKF_T
@ FKF_PREV_FORCED_T
@ FKF_N_FORCED
@ FKF_N
__thread int exit_on_error
void remove_avoptions(AVDictionary **a, AVDictionary *b)
int ffmpeg_parse_options(int argc, char **argv)
VideoSyncMethod
@ VSYNC_VFR
@ VSYNC_AUTO
@ VSYNC_PASSTHROUGH
@ VSYNC_CFR
@ VSYNC_DROP
@ VSYNC_VSCFR
struct StreamMap StreamMap
__thread HWDevice * filter_hw_device
int qsv_init(AVCodecContext *s)
struct OutputFilter OutputFilter
__thread int nb_filtergraphs
void term_init(void)
__thread int qp_hist
struct OptionsContext OptionsContext
int filtergraph_is_simple(FilterGraph *fg)
int hw_device_init_from_string(const char *arg, HWDevice **dev)
void check_filter_outputs(void)
struct HWDevice HWDevice
int configure_filtergraph(FilterGraph *fg)
__thread int do_hex_dump
__thread int do_pkt_dump
__thread int debug_ts
void of_write_packet(OutputFile *of, AVPacket *pkt, OutputStream *ost, int unqueue)
__thread int auto_conversion_filters
void assert_avoptions(AVDictionary *m)
__thread int want_sdp
struct InputStream InputStream
int init_complex_filtergraph(FilterGraph *fg)
OutputFilter ** outputs
const char * graph_desc
AVFilterGraph * graph
InputFilter ** inputs
AVBufferRef * device_ref
enum AVHWDeviceType type
const char * name
AVPacket * pkt
int64_t ts_offset
int64_t duration
AVFormatContext * ctx
int64_t input_ts_offset
int64_t recording_time
AVRational time_base
int input_sync_ref
int nb_streams_warn
int64_t last_ts
float readrate
int64_t start_time
AVBufferRef * hw_frames_ctx
uint8_t * name
struct InputStream * ist
int32_t * displaymatrix
AVFifo * frame_queue
AVFilterContext * filter
AVChannelLayout ch_layout
enum AVMediaType type
struct FilterGraph * graph
AVRational sample_aspect_ratio
unsigned int initialize
marks if sub2video_update should force an initialization
AVFifo * sub_queue
queue of AVSubtitle* before filter init
enum AVPixelFormat hwaccel_pix_fmt
AVFrame * decoded_frame
int64_t * dts_buffer
int64_t dts
dts of the last packet read for this stream (in AV_TIME_BASE units)
enum AVPixelFormat hwaccel_output_format
int64_t cfr_next_pts
void(* hwaccel_uninit)(AVCodecContext *s)
AVCodecContext * dec_ctx
int64_t pts
current pts of the decoded frame (in AV_TIME_BASE units)
struct InputStream::@2 prev_sub
enum HWAccelID hwaccel_id
uint64_t data_size
int64_t filter_in_rescale_delta_last
int64_t next_dts
int wrap_correction_done
int64_t max_pts
enum AVPixelFormat hwaccel_retrieved_pix_fmt
AVPacket * pkt
void * hwaccel_ctx
int64_t first_dts
dts of the first packet read for this stream (in AV_TIME_BASE units)
uint64_t samples_decoded
int64_t next_pts
synthetic pts for the next decode frame (in AV_TIME_BASE units)
uint64_t frames_decoded
struct InputStream::sub2video sub2video
AVStream * st
InputFilter ** filters
int(* hwaccel_retrieve_data)(AVCodecContext *s, AVFrame *frame)
uint64_t nb_packets
AVSubtitle subtitle
char * hwaccel_device
int64_t prev_pkt_pts
AVDictionary * decoder_opts
int64_t min_pts
const AVCodec * dec
enum AVHWDeviceType hwaccel_device_type
int64_t nb_samples
AVRational framerate
SpecifierOpt * fps_mode
SpecifierOpt * metadata_map
int nb_copy_initial_nonkeyframes
SpecifierOpt * frame_pix_fmts
SpecifierOpt * dump_attachment
SpecifierOpt * autoscale
int nb_chroma_intra_matrices
int nb_muxing_queue_data_threshold
SpecifierOpt * frame_aspect_ratios
SpecifierOpt * pass
SpecifierOpt * filter_scripts
SpecifierOpt * copy_initial_nonkeyframes
SpecifierOpt * guess_layout_max
const char * format
SpecifierOpt * enc_time_bases
SpecifierOpt * max_frame_rates
int64_t input_ts_offset
SpecifierOpt * audio_sample_rate
SpecifierOpt * max_frames
StreamMap * stream_maps
SpecifierOpt * frame_sizes
SpecifierOpt * muxing_queue_data_threshold
SpecifierOpt * discard
SpecifierOpt * forced_key_frames
SpecifierOpt * hwaccel_devices
SpecifierOpt * filters
SpecifierOpt * metadata
SpecifierOpt * autorotate
int64_t recording_time
SpecifierOpt * disposition
uint64_t limit_filesize
SpecifierOpt * sample_fmts
SpecifierOpt * audio_channels
SpecifierOpt * codec_names
int64_t start_time_eof
SpecifierOpt * canvas_sizes
SpecifierOpt * reinit_filters
SpecifierOpt * passlogfiles
SpecifierOpt * frame_rates
SpecifierOpt * bits_per_raw_sample
SpecifierOpt * intra_matrices
SpecifierOpt * apad
SpecifierOpt * chroma_intra_matrices
int nb_hwaccel_output_formats
SpecifierOpt * top_field_first
int metadata_chapters_manual
SpecifierOpt * audio_ch_layouts
SpecifierOpt * force_fps
SpecifierOpt * qscale
SpecifierOpt * copy_prior_start
SpecifierOpt * max_muxing_queue_size
SpecifierOpt * rc_overrides
const char ** attachments
SpecifierOpt * hwaccels
SpecifierOpt * program
SpecifierOpt * codec_tags
SpecifierOpt * time_bases
SpecifierOpt * presets
SpecifierOpt * ts_scale
SpecifierOpt * fix_sub_duration
SpecifierOpt * inter_matrices
SpecifierOpt * hwaccel_output_formats
SpecifierOpt * bitstream_filters
int nb_max_muxing_queue_size
AudioChannelMap * audio_channel_maps
OptionGroup * g
const AVOutputFormat * format
uint64_t limit_filesize
AVFormatContext * ctx
int64_t start_time
start time in microseconds == AV_TIME_BASE units
AVDictionary * opts
int64_t recording_time
desired length of the resulting file in microseconds == AV_TIME_BASE units
AVFilterInOut * out_tmp
struct OutputStream * ost
AVFilterContext * filter
uint8_t * name
const int * formats
const AVChannelLayout * ch_layouts
struct FilterGraph * graph
AVChannelLayout ch_layout
const int * sample_rates
AVRational frame_rate
enum AVMediaType type
int max_muxing_queue_size
AVDictionary * swr_opts
int copy_initial_nonkeyframes
int64_t last_mux_dts
AVRational mux_timebase
double forced_keyframes_expr_const_values[FKF_NB]
OSTFinished finished
int * audio_channels_map
AVPacket * pkt
AVRational frame_aspect_ratio
double rotate_override_value
AVFrame * last_frame
const AVCodec * enc
int audio_channels_mapped
int64_t sync_opts
int64_t * forced_kf_pts
int64_t error[4]
uint64_t packets_written
uint64_t frames_encoded
int64_t max_frames
size_t muxing_queue_data_threshold
enum VideoSyncMethod vsync_method
AVRational max_frame_rate
AVRational enc_timebase
int64_t frame_number
AVCodecParameters * ref_par
char * forced_keyframes
AVFrame * filtered_frame
const char * attachment_filename
AVRational frame_rate
int64_t last_nb0_frames[3]
AVCodecContext * enc_ctx
struct InputStream * sync_ist
AVDictionary * encoder_opts
uint64_t data_size
AVStream * st
char * filters
filtergraph associated to the -filter option
int64_t forced_kf_ref_pts
uint64_t samples_encoded
char * filters_script
filtergraph script associated to the -filter_script option
AVBSFContext * bsf_ctx
int64_t first_pts
void * hwaccel_ctx
AVDictionary * sws_dict
OutputFilter * filter
char * disposition
AVFifo * muxing_queue
uint64_t packets_encoded
AVExpr * forced_keyframes_pexpr
const char * fps_mode
size_t muxing_queue_data_size
int64_t last_dropped
char * logfile_prefix
int sync_stream_index
char * linklabel
int sync_file_index