diff --git a/cmdutils.c b/cmdutils.c index 505f55b282..8a01a0a37a 100644 --- a/cmdutils.c +++ b/cmdutils.c @@ -31,6 +31,7 @@ #include "libswscale/swscale.h" #include "libpostproc/postprocess.h" #include "libavutil/avstring.h" +#include "libavcodec/opt.h" #include "cmdutils.h" #include "version.h" #ifdef CONFIG_NETWORK @@ -39,6 +40,11 @@ #undef exit +const char **opt_names; +static int opt_name_count; +AVCodecContext *avctx_opts[CODEC_TYPE_NB]; +AVFormatContext *avformat_opts; +struct SwsContext *sws_opts; double parse_number_or_die(const char *context, const char *numstr, int type, double min, double max) { @@ -160,6 +166,55 @@ unknown_opt: } } +int opt_default(const char *opt, const char *arg){ + int type; + const AVOption *o= NULL; + int opt_types[]={AV_OPT_FLAG_VIDEO_PARAM, AV_OPT_FLAG_AUDIO_PARAM, 0, AV_OPT_FLAG_SUBTITLE_PARAM, 0}; + + for(type=0; typename; + + if(avctx_opts[0]->debug || avformat_opts->debug) + av_log_set_level(AV_LOG_DEBUG); + return 0; +} + +void set_context_opts(void *ctx, void *opts_ctx, int flags) +{ + int i; + for(i=0; iflags & flags) == flags)) + av_set_string2(ctx, opt_names[i], str, 1); + } +} + void print_error(const char *filename, int err) { switch(err) { diff --git a/cmdutils.h b/cmdutils.h index 981f0faf1e..2cc2ee26c7 100644 --- a/cmdutils.h +++ b/cmdutils.h @@ -34,6 +34,17 @@ extern const char program_name[]; */ extern const int program_birth_year; +extern const char **opt_names; +extern AVCodecContext *avctx_opts[CODEC_TYPE_NB]; +extern AVFormatContext *avformat_opts; +extern struct SwsContext *sws_opts; + +/** + * Fallback for options that are not explixitly handled, these will be + * parsed through AVOptions. + */ +int opt_default(const char *opt, const char *arg); + /** * Parses a string and returns its corresponding value as a double. * Exits from the application if the string cannot be correctly @@ -106,6 +117,8 @@ void show_help_options(const OptionDef *options, const char *msg, int mask, int void parse_options(int argc, char **argv, const OptionDef *options, void (* parse_arg_function)(const char*)); +void set_context_opts(void *ctx, void *opts_ctx, int flags); + void print_error(const char *filename, int err); /** diff --git a/ffmpeg.c b/ffmpeg.c index 14027a1284..73ce5162a5 100644 --- a/ffmpeg.c +++ b/ffmpeg.c @@ -219,11 +219,6 @@ static float dts_delta_threshold = 10; static unsigned int sws_flags = SWS_BICUBIC; -static const char **opt_names; -static int opt_name_count; -static AVCodecContext *avctx_opts[CODEC_TYPE_NB]; -static AVFormatContext *avformat_opts; -static struct SwsContext *sws_opts; static int64_t timer_start; static AVBitStreamFilterContext *video_bitstream_filters=NULL; @@ -2267,42 +2262,6 @@ static void opt_format(const char *arg) } } -static int opt_default(const char *opt, const char *arg){ - int type; - const AVOption *o= NULL; - int opt_types[]={AV_OPT_FLAG_VIDEO_PARAM, AV_OPT_FLAG_AUDIO_PARAM, 0, AV_OPT_FLAG_SUBTITLE_PARAM, 0}; - - for(type=0; typename; - - if(avctx_opts[0]->debug || avformat_opts->debug) - av_log_set_level(AV_LOG_DEBUG); - return 0; -} - static void opt_video_rc_override_string(const char *arg) { video_rc_override_string = arg; @@ -2780,19 +2739,6 @@ static enum CodecID find_codec_or_die(const char *name, int type, int encoder) return codec->id; } -static void set_context_opts(void *ctx, void *opts_ctx, int flags) -{ - int i; - for(i=0; iflags & flags) == flags)) - av_set_string2(ctx, opt_names[i], str, 1); - } -} - static void opt_input_file(const char *filename) { AVFormatContext *ic;