Go to the documentation of this file.
19 #ifndef FFTOOLS_FFMPEG_H
20 #define FFTOOLS_FFMPEG_H
50 #define VSYNC_PASSTHROUGH 0
53 #define VSYNC_VSCFR 0xfe
54 #define VSYNC_DROP 0xff
56 #define MAX_STREAMS 1024
300 #define DECODING_FOR_OST 1
301 #define DECODING_FOR_FILTER 2
420 int thread_queue_size;
433 #define ABORT_ON_FLAG_EMPTY_OUTPUT (1 << 0)
434 #define ABORT_ON_FLAG_EMPTY_OUTPUT_STREAM (1 << 1)
AVPixelFormat
Pixel format.
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
struct FilterGraph * graph
SpecifierOpt * canvas_sizes
SpecifierOpt * dump_attachment
const char * attachment_filename
int configure_filtergraph(FilterGraph *fg)
SpecifierOpt * intra_matrices
This struct describes the properties of an encoded stream.
int ist_in_filtergraph(FilterGraph *fg, InputStream *ist)
float frame_drop_threshold
SpecifierOpt * rc_overrides
int64_t start_time
start time in microseconds == AV_TIME_BASE units
SpecifierOpt * frame_aspect_ratios
AVIOContext * progress_avio
int ffmpeg_parse_options(int argc, char **argv)
InputStream ** input_streams
This structure describes decoded (raw) audio or video data.
int nb_chroma_intra_matrices
SpecifierOpt * inter_matrices
const AVIOInterruptCB int_cb
SpecifierOpt * audio_channels
int hw_device_init_from_string(const char *arg, HWDevice **dev)
char * videotoolbox_pixfmt
double rotate_override_value
The bitstream filter state.
Callback for checking whether to abort blocking functions.
AVExpr * forced_keyframes_pexpr
int init_simple_filtergraph(InputStream *ist, OutputStream *ost)
float dts_delta_threshold
char * filters
filtergraph associated to the -filter option
double forced_keyframes_expr_const_values[FKF_NB]
int hw_device_setup_for_decode(InputStream *ist)
void assert_avoptions(AVDictionary *m)
SpecifierOpt * time_bases
int qsv_init(AVCodecContext *s)
int nb_audio_channel_maps
int metadata_chapters_manual
int copy_initial_nonkeyframes
SpecifierOpt * copy_initial_nonkeyframes
SpecifierOpt * codec_names
AVRational frame_aspect_ratio
int audio_channels_mapped
struct OutputStream * ost
OutputStream ** output_streams
int metadata_streams_manual
float audio_drift_threshold
int nb_copy_initial_nonkeyframes
SpecifierOpt * sample_fmts
int configure_output_filter(FilterGraph *fg, OutputFilter *ofilter, AVFilterInOut *out)
int nb_max_muxing_queue_size
AVDictionary * encoder_opts
SpecifierOpt * reinit_filters
const char *const forced_keyframes_const_names[]
SpecifierOpt * frame_sizes
Rational number (pair of numerator and denominator).
SpecifierOpt * fix_sub_duration
SpecifierOpt * codec_tags
int frame_bits_per_raw_sample
int metadata_global_manual
AVDictionary * resample_opts
enum AVPixelFormat pix_fmt
SpecifierOpt * max_frames
FilterGraph ** filtergraphs
int guess_input_channel_layout(InputStream *ist)
const OptionDef options[]
int nb_frame_aspect_ratios
void sub2video_update(InputStream *ist, int64_t heartbeat_pts, AVSubtitle *sub)
void reset_options(OptionsContext *o, int is_input)
SpecifierOpt * filter_scripts
int hwaccel_decode_init(AVCodecContext *avctx)
SpecifierOpt * top_field_first
The reader does not expect b to be semantically here and if the code is changed by maybe adding a a division or other the signedness will almost certainly be mistaken To avoid this confusion a new type was SUINT is the C unsigned type but it holds a signed int to use the same example SUINT a
void check_filter_outputs(void)
SpecifierOpt * frame_rates
SpecifierOpt * autorotate
char * filters_script
filtergraph script associated to the -filter_script option
enum AVPixelFormat choose_pixel_fmt(AVStream *st, AVCodecContext *avctx, AVCodec *codec, enum AVPixelFormat target)
int nb_hwaccel_output_formats
int init_complex_filtergraph(FilterGraph *fg)
SpecifierOpt * forced_key_frames
SpecifierOpt * metadata_map
SpecifierOpt * audio_sample_rate
struct InputStream * sync_ist
OutputFile ** output_files
int hw_device_setup_for_filter(FilterGraph *fg)
int videotoolbox_init(AVCodecContext *s)
AVFifoBuffer * muxing_queue
uint64_t * channel_layouts
AVCodecParameters * ref_par
SpecifierOpt * bitstream_filters
void choose_sample_fmt(AVStream *st, AVCodec *codec)
SpecifierOpt * passlogfiles
int max_muxing_queue_size
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
AudioChannelMap * audio_channel_maps
int64_t forced_kf_ref_pts
void hw_device_free_all(void)
int(* init)(AVCodecContext *s)
SpecifierOpt * disposition
int ifilter_parameters_from_frame(InputFilter *ifilter, const AVFrame *frame)
HWDevice * filter_hw_device
main external API structure.
int hw_device_setup_for_encode(OutputStream *ost)
SpecifierOpt * guess_layout_max
SpecifierOpt * enc_time_bases
SpecifierOpt * frame_pix_fmts
SpecifierOpt * hwaccel_devices
SpecifierOpt * max_muxing_queue_size
void remove_avoptions(AVDictionary **a, AVDictionary *b)
A reference to a data buffer.
SpecifierOpt * copy_prior_start
void opt_output_file(void *optctx, const char *filename)
const char ** attachments
SpecifierOpt * chroma_intra_matrices
#define flags(name, subs,...)
float dts_error_threshold
SpecifierOpt * hwaccel_output_formats
int64_t recording_time
desired length of the resulting file in microseconds == AV_TIME_BASE units
HWDevice * hw_device_get_by_name(const char *name)
A linked-list of the inputs/outputs of the filter chain.
int filtergraph_is_simple(FilterGraph *fg)
int filter_complex_nbthreads