From 4583c12a2c29c9644acc15837c2f18ba7750bf1e Mon Sep 17 00:00:00 2001 From: Uoti Urpala Date: Fri, 23 Apr 2010 22:08:18 +0300 Subject: [PATCH] options: move lavfdopts to option struct --- libmpdemux/demux_lavf.c | 55 +++++++++++++++++++++-------------------- options.h | 9 +++++++ 2 files changed, 37 insertions(+), 27 deletions(-) diff --git a/libmpdemux/demux_lavf.c b/libmpdemux/demux_lavf.c index 43449f4f03..3140b5459f 100644 --- a/libmpdemux/demux_lavf.c +++ b/libmpdemux/demux_lavf.c @@ -47,19 +47,13 @@ #define INITIAL_PROBE_SIZE (32*1024) #define PROBE_BUF_SIZE (2*1024*1024) -static unsigned int opt_probesize = 0; -static unsigned int opt_analyzeduration = 0; -static char *opt_format; -static char *opt_cryptokey; -static char *opt_avopt = NULL; - const m_option_t lavfdopts_conf[] = { - {"probesize", &(opt_probesize), CONF_TYPE_INT, CONF_RANGE, 32, INT_MAX, NULL}, - {"format", &(opt_format), CONF_TYPE_STRING, 0, 0, 0, NULL}, - {"analyzeduration", &(opt_analyzeduration), CONF_TYPE_INT, CONF_RANGE, 0, INT_MAX, NULL}, - {"cryptokey", &(opt_cryptokey), CONF_TYPE_STRING, 0, 0, 0, NULL}, - {"o", &opt_avopt, CONF_TYPE_STRING, 0, 0, 0, NULL}, - {NULL, NULL, 0, 0, 0, 0, NULL} + OPT_INTRANGE("probesize", lavfdopts.probesize, 0, 32, INT_MAX), + OPT_STRING("format", lavfdopts.format, 0), + OPT_INTRANGE("analyzeduration", lavfdopts.analyzeduration, 0, 0, INT_MAX), + OPT_STRING("cryptokey", lavfdopts.cryptokey, 0), + OPT_STRING("o", lavfdopts.avopt, 0), + {NULL, NULL, 0, 0, 0, 0, NULL} }; #define BIO_BUFFER_SIZE 32768 @@ -128,6 +122,8 @@ static void list_formats(void) { } static int lavf_check_file(demuxer_t *demuxer){ + struct MPOpts *opts = demuxer->opts; + struct lavfdopts *lavfdopts = &opts->lavfdopts; AVProbeData avpd; lavf_priv_t *priv; int probe_data_size = 0; @@ -139,14 +135,15 @@ static int lavf_check_file(demuxer_t *demuxer){ av_register_all(); - if (opt_format) { - if (strcmp(opt_format, "help") == 0) { + if (lavfdopts->format) { + if (strcmp(lavfdopts->format, "help") == 0) { list_formats(); return 0; } - priv->avif= av_find_input_format(opt_format); + priv->avif= av_find_input_format(lavfdopts->format); if (!priv->avif) { - mp_msg(MSGT_DEMUX,MSGL_FATAL,"Unknown lavf format %s\n", opt_format); + mp_msg(MSGT_DEMUX,MSGL_FATAL,"Unknown lavf format %s\n", + lavfdopts->format); return 0; } mp_msg(MSGT_DEMUX,MSGL_INFO,"Forced lavf %s demuxer\n", priv->avif->long_name); @@ -432,6 +429,7 @@ static void handle_stream(demuxer_t *demuxer, AVFormatContext *avfc, int i) { static demuxer_t* demux_open_lavf(demuxer_t *demuxer){ struct MPOpts *opts = demuxer->opts; + struct lavfdopts *lavfdopts = &opts->lavfdopts; AVFormatContext *avfc; AVFormatParameters ap; const AVOption *opt; @@ -446,26 +444,29 @@ static demuxer_t* demux_open_lavf(demuxer_t *demuxer){ avfc = avformat_alloc_context(); - if (opt_cryptokey) - parse_cryptokey(avfc, opt_cryptokey); + if (lavfdopts->cryptokey) + parse_cryptokey(avfc, lavfdopts->cryptokey); if (opts->user_correct_pts != 0) avfc->flags |= AVFMT_FLAG_GENPTS; if (index_mode == 0) avfc->flags |= AVFMT_FLAG_IGNIDX; ap.prealloced_context = 1; - if(opt_probesize) { - opt = av_set_int(avfc, "probesize", opt_probesize); - if(!opt) mp_msg(MSGT_HEADER,MSGL_ERR, "demux_lavf, couldn't set option probesize to %u\n", opt_probesize); + if (lavfdopts->probesize) { + opt = av_set_int(avfc, "probesize", lavfdopts->probesize); + if(!opt) mp_msg(MSGT_HEADER,MSGL_ERR, "demux_lavf, couldn't set option probesize to %u\n", lavfdopts->probesize); } - if(opt_analyzeduration) { - opt = av_set_int(avfc, "analyzeduration", opt_analyzeduration * AV_TIME_BASE); - if(!opt) mp_msg(MSGT_HEADER,MSGL_ERR, "demux_lavf, couldn't set option analyzeduration to %u\n", opt_analyzeduration); + if (lavfdopts->analyzeduration) { + opt = av_set_int(avfc, "analyzeduration", + lavfdopts->analyzeduration * AV_TIME_BASE); + if (!opt) + mp_msg(MSGT_HEADER, MSGL_ERR, "demux_lavf, couldn't set option " + "analyzeduration to %u\n", lavfdopts->analyzeduration); } - if(opt_avopt){ - if(parse_avopts(avfc, opt_avopt) < 0){ - mp_msg(MSGT_HEADER,MSGL_ERR, "Your options /%s/ look like gibberish to me pal\n", opt_avopt); + if (lavfdopts->avopt){ + if(parse_avopts(avfc, lavfdopts->avopt) < 0){ + mp_msg(MSGT_HEADER,MSGL_ERR, "Your options /%s/ look like gibberish to me pal\n", lavfdopts->avopt); return NULL; } } diff --git a/options.h b/options.h index 90ce239e86..866bfeecf3 100644 --- a/options.h +++ b/options.h @@ -66,6 +66,15 @@ typedef struct MPOpts { int bitexact; char *avopt; } lavc_param; + + struct lavfdopts { + unsigned int probesize; + unsigned int analyzeduration; + char *format; + char *cryptokey; + char *avopt; + } lavfdopts; + struct input_conf { char *config_file; unsigned int ar_delay;