X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=avconv.h;h=56876ec066167679b11b036ee9dccd481007f9b6;hb=9fc7184d1a9af8d97b3fc5c2ef9d0a647d6617ea;hp=756d197ef53f36b2fa33d0e353814de01f14fa37;hpb=57d24225595af78b0fd836d4d145f5d181e320a2;p=ffmpeg diff --git a/avconv.h b/avconv.h index 756d197ef53..56876ec0661 100644 --- a/avconv.h +++ b/avconv.h @@ -36,7 +36,6 @@ #include "libavcodec/avcodec.h" #include "libavfilter/avfilter.h" -#include "libavfilter/avfiltergraph.h" #include "libavutil/avutil.h" #include "libavutil/dict.h" @@ -51,24 +50,24 @@ /* select an input stream for an output stream */ typedef struct StreamMap { - int disabled; /** 1 is this mapping is disabled by a negative map */ + int disabled; /* 1 is this mapping is disabled by a negative map */ int file_index; int stream_index; int sync_file_index; int sync_stream_index; - char *linklabel; /** name of an output link, for mapping lavfi outputs */ + char *linklabel; /* name of an output link, for mapping lavfi outputs */ } StreamMap; -/** - * select an input file for an output file - */ +/* select an input file for an output file */ typedef struct MetadataMap { - int file; ///< file index - char type; ///< type of metadata to copy -- (g)lobal, (s)tream, (c)hapter or (p)rogram - int index; ///< stream/chapter/program number + int file; // file index + char type; // type of metadata to copy -- (g)lobal, (s)tream, (c)hapter or (p)rogram + int index; // stream/chapter/program number } MetadataMap; typedef struct OptionsContext { + OptionGroup *g; + /* input/output options */ int64_t start_time; const char *format; @@ -89,6 +88,7 @@ typedef struct OptionsContext { /* input options */ int64_t input_ts_offset; int rate_emu; + int accurate_seek; SpecifierOpt *ts_scale; int nb_ts_scale; @@ -113,6 +113,7 @@ typedef struct OptionsContext { uint64_t limit_filesize; float mux_preload; float mux_max_delay; + int shortest; int video_disable; int audio_disable; @@ -157,6 +158,12 @@ typedef struct OptionsContext { int nb_copy_initial_nonkeyframes; SpecifierOpt *filters; int nb_filters; + SpecifierOpt *filter_scripts; + int nb_filter_scripts; + SpecifierOpt *pass; + int nb_pass; + SpecifierOpt *passlogfiles; + int nb_passlogfiles; } OptionsContext; typedef struct InputFilter { @@ -195,6 +202,7 @@ typedef struct InputStream { int decoding_needed; /* true if the packets must be decoded in 'raw_fifo' */ AVCodec *dec; AVFrame *decoded_frame; + AVFrame *filter_frame; /* a ref of decoded_frame, to be sent to filters */ int64_t start; /* time when read started */ /* predicted dts of the next packet read for this stream or (when there are @@ -218,9 +226,6 @@ typedef struct InputStream { int resample_channels; uint64_t resample_channel_layout; - /* a pool of free buffers for decoded data */ - FrameBuffer *buffer_pool; - /* decoded data from this stream goes into all those filters * currently video and audio only */ InputFilter **filters; @@ -233,9 +238,12 @@ typedef struct InputFile { int eagain; /* true if last read attempt returned EAGAIN */ int ist_index; /* index of first stream in ist_table */ int64_t ts_offset; + int64_t start_time; /* user-specified start time in AV_TIME_BASE or AV_NOPTS_VALUE */ + int64_t recording_time; int nb_streams; /* number of stream that avconv is aware of; may be different from ctx.nb_streams if new streams appear during av_read_frame() */ int rate_emu; + int accurate_seek; #if HAVE_PTHREADS pthread_t thread; /* thread reading from this file */ @@ -262,6 +270,8 @@ typedef struct OutputStream { /* pts of the first frame encoded for this stream, used for limiting * recording time */ int64_t first_pts; + /* dts of the last packet sent to the muxer */ + int64_t last_mux_dts; AVBitStreamFilterContext *bitstream_filters; AVCodec *enc; int64_t max_frames; @@ -273,7 +283,6 @@ typedef struct OutputStream { int top_field_first; float frame_aspect_ratio; - float last_quality; /* forced key frames */ int64_t *forced_kf_pts; @@ -281,6 +290,7 @@ typedef struct OutputStream { int forced_kf_index; char *forced_keyframes; + char *logfile_prefix; FILE *logfile; OutputFilter *filter; @@ -288,12 +298,13 @@ typedef struct OutputStream { int64_t sws_flags; AVDictionary *opts; + AVDictionary *resample_opts; int finished; /* no more packets should be written for this stream */ int stream_copy; const char *attachment_filename; int copy_initial_nonkeyframes; - enum PixelFormat pix_fmts[2]; + enum AVPixelFormat pix_fmts[2]; } OutputStream; typedef struct OutputFile { @@ -303,6 +314,8 @@ typedef struct OutputFile { int64_t recording_time; /* desired length of the resulting file in microseconds */ int64_t start_time; /* start time in microseconds */ uint64_t limit_filesize; + + int shortest; } OutputFile; extern InputStream **input_streams; @@ -318,7 +331,6 @@ extern int nb_output_files; extern FilterGraph **filtergraphs; extern int nb_filtergraphs; -extern char *pass_logfilename_prefix; extern char *vstats_filename; extern float audio_drift_threshold; @@ -333,11 +345,9 @@ extern int do_hex_dump; extern int do_pkt_dump; extern int copy_ts; extern int copy_tb; -extern int opt_shortest; extern int exit_on_error; extern int print_stats; extern int qp_hist; -extern int same_quant; extern const AVIOInterruptCB int_cb; @@ -346,7 +356,7 @@ extern const OptionDef options[]; void reset_options(OptionsContext *o); void show_usage(void); -int opt_cpuflags(const char *opt, const char *arg); +int opt_cpuflags(void *optctx, const char *opt, const char *arg); void opt_output_file(void *optctx, const char *filename); @@ -359,4 +369,6 @@ int configure_output_filter(FilterGraph *fg, OutputFilter *ofilter, AVFilterInOu int ist_in_filtergraph(FilterGraph *fg, InputStream *ist); FilterGraph *init_simple_filtergraph(InputStream *ist, OutputStream *ost); +int avconv_parse_options(int argc, char **argv); + #endif /* AVCONV_H */