[FFmpeg-cvslog] Make all option parsing functions match the function pointer type through which they are called .
Jeff Downs
git at videolan.org
Wed Sep 7 09:07:39 CEST 2011
ffmpeg | branch: release/0.7 | Jeff Downs <heydowns at somuchpressure.net> | Wed Jun 29 12:38:46 2011 -0400| [7b6b9be8614aa53e79db565c9203b9afaa452d8d] | committer: Carl Eugen Hoyos
Make all option parsing functions match the function pointer type through which they are called.
All option parsing functions now match the function pointer signature through
which they are called (int f(const char *, const char *), thereby working
reliably on all platforms.
Prefix all option processing functions with opt_
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=7b6b9be8614aa53e79db565c9203b9afaa452d8d
---
cmdutils.c | 24 ++++++++++++++++--------
cmdutils.h | 26 +++++++++++++++++---------
cmdutils_common_opts.h | 24 ++++++++++++------------
ffmpeg.c | 17 +++++++++++------
ffplay.c | 5 +++--
ffprobe.c | 3 ++-
ffserver.c | 3 ++-
7 files changed, 63 insertions(+), 39 deletions(-)
diff --git a/cmdutils.c b/cmdutils.c
index cd6d133..62fe6e9 100644
--- a/cmdutils.c
+++ b/cmdutils.c
@@ -574,12 +574,13 @@ void show_banner(void)
print_all_libs_info(stderr, INDENT|SHOW_VERSION);
}
-void show_version(void) {
+int opt_version(const char *opt, const char *arg) {
printf("%s " FFMPEG_VERSION "\n", program_name);
print_all_libs_info(stdout, SHOW_VERSION);
+ return 0;
}
-void show_license(void)
+int opt_license(const char *opt, const char *arg)
{
printf(
#if CONFIG_NONFREE
@@ -646,9 +647,10 @@ void show_license(void)
program_name, program_name, program_name
#endif
);
+ return 0;
}
-void show_formats(void)
+int opt_formats(const char *opt, const char *arg)
{
AVInputFormat *ifmt=NULL;
AVOutputFormat *ofmt=NULL;
@@ -695,9 +697,10 @@ void show_formats(void)
name,
long_name ? long_name:" ");
}
+ return 0;
}
-void show_codecs(void)
+int opt_codecs(const char *opt, const char *arg)
{
AVCodec *p=NULL, *p2;
const char *last_name;
@@ -771,9 +774,10 @@ void show_codecs(void)
"even though both encoding and decoding are supported. For example, the h263\n"
"decoder corresponds to the h263 and h263p encoders, for file formats it is even\n"
"worse.\n");
+ return 0;
}
-void show_bsfs(void)
+int opt_bsfs(const char *opt, const char *arg)
{
AVBitStreamFilter *bsf=NULL;
@@ -781,9 +785,10 @@ void show_bsfs(void)
while((bsf = av_bitstream_filter_next(bsf)))
printf("%s\n", bsf->name);
printf("\n");
+ return 0;
}
-void show_protocols(void)
+int opt_protocols(const char *opt, const char *arg)
{
URLProtocol *up=NULL;
@@ -799,9 +804,10 @@ void show_protocols(void)
up->url_write ? 'O' : '.',
up->url_seek ? 'S' : '.',
up->name);
+ return 0;
}
-void show_filters(void)
+int opt_filters(const char *opt, const char *arg)
{
AVFilter av_unused(**filter) = NULL;
@@ -810,9 +816,10 @@ void show_filters(void)
while ((filter = av_filter_next(filter)) && *filter)
printf("%-16s %s\n", (*filter)->name, (*filter)->description);
#endif
+ return 0;
}
-void show_pix_fmts(void)
+int opt_pix_fmts(const char *opt, const char *arg)
{
enum PixelFormat pix_fmt;
@@ -843,6 +850,7 @@ void show_pix_fmts(void)
pix_desc->nb_components,
av_get_bits_per_pixel(pix_desc));
}
+ return 0;
}
int read_yesno(void)
diff --git a/cmdutils.h b/cmdutils.h
index e001ab9..b05828c 100644
--- a/cmdutils.h
+++ b/cmdutils.h
@@ -62,7 +62,7 @@ void uninit_opts(void);
/**
* Trivial log callback.
- * Only suitable for show_help and similar since it lacks prefix handling.
+ * Only suitable for opt_help and similar since it lacks prefix handling.
*/
void log_callback_help(void* ptr, int level, const char* fmt, va_list vl);
@@ -177,50 +177,58 @@ void show_banner(void);
* Print the version of the program to stdout. The version message
* depends on the current versions of the repository and of the libav*
* libraries.
+ * This option processing function does not utilize the arguments.
*/
-void show_version(void);
+int opt_version(const char *opt, const char *arg);
/**
* Print the license of the program to stdout. The license depends on
* the license of the libraries compiled into the program.
+ * This option processing function does not utilize the arguments.
*/
-void show_license(void);
+int opt_license(const char *opt, const char *arg);
/**
* Print a listing containing all the formats supported by the
* program.
+ * This option processing function does not utilize the arguments.
*/
-void show_formats(void);
+int opt_formats(const char *opt, const char *arg);
/**
* Print a listing containing all the codecs supported by the
* program.
+ * This option processing function does not utilize the arguments.
*/
-void show_codecs(void);
+int opt_codecs(const char *opt, const char *arg);
/**
* Print a listing containing all the filters supported by the
* program.
+ * This option processing function does not utilize the arguments.
*/
-void show_filters(void);
+int opt_filters(const char *opt, const char *arg);
/**
* Print a listing containing all the bit stream filters supported by the
* program.
+ * This option processing function does not utilize the arguments.
*/
-void show_bsfs(void);
+int opt_bsfs(const char *opt, const char *arg);
/**
* Print a listing containing all the protocols supported by the
* program.
+ * This option processing function does not utilize the arguments.
*/
-void show_protocols(void);
+int opt_protocols(const char *opt, const char *arg);
/**
* Print a listing containing all the pixel formats supported by the
* program.
+ * This option processing function does not utilize the arguments.
*/
-void show_pix_fmts(void);
+int opt_pix_fmts(const char *opt, const char *arg);
/**
* Return a positive value if a line read from standard input
diff --git a/cmdutils_common_opts.h b/cmdutils_common_opts.h
index 9b5e5d2..8e68049 100644
--- a/cmdutils_common_opts.h
+++ b/cmdutils_common_opts.h
@@ -1,13 +1,13 @@
- { "L", OPT_EXIT, {(void*)show_license}, "show license" },
- { "h", OPT_EXIT, {(void*)show_help}, "show help" },
- { "?", OPT_EXIT, {(void*)show_help}, "show help" },
- { "help", OPT_EXIT, {(void*)show_help}, "show help" },
- { "-help", OPT_EXIT, {(void*)show_help}, "show help" },
- { "version", OPT_EXIT, {(void*)show_version}, "show version" },
- { "formats" , OPT_EXIT, {(void*)show_formats }, "show available formats" },
- { "codecs" , OPT_EXIT, {(void*)show_codecs }, "show available codecs" },
- { "bsfs" , OPT_EXIT, {(void*)show_bsfs }, "show available bit stream filters" },
- { "protocols", OPT_EXIT, {(void*)show_protocols}, "show available protocols" },
- { "filters", OPT_EXIT, {(void*)show_filters }, "show available filters" },
- { "pix_fmts" , OPT_EXIT, {(void*)show_pix_fmts }, "show available pixel formats" },
+ { "L", OPT_EXIT, {(void*)opt_license}, "show license" },
+ { "h", OPT_EXIT, {(void*)opt_help}, "show help" },
+ { "?", OPT_EXIT, {(void*)opt_help}, "show help" },
+ { "help", OPT_EXIT, {(void*)opt_help}, "show help" },
+ { "-help", OPT_EXIT, {(void*)opt_help}, "show help" },
+ { "version", OPT_EXIT, {(void*)opt_version}, "show version" },
+ { "formats" , OPT_EXIT, {(void*)opt_formats }, "show available formats" },
+ { "codecs" , OPT_EXIT, {(void*)opt_codecs }, "show available codecs" },
+ { "bsfs" , OPT_EXIT, {(void*)opt_bsfs }, "show available bit stream filters" },
+ { "protocols", OPT_EXIT, {(void*)opt_protocols}, "show available protocols" },
+ { "filters", OPT_EXIT, {(void*)opt_filters }, "show available filters" },
+ { "pix_fmts" , OPT_EXIT, {(void*)opt_pix_fmts }, "show available pixel formats" },
{ "loglevel", HAS_ARG, {(void*)opt_loglevel}, "set libav* logging level", "loglevel" },
diff --git a/ffmpeg.c b/ffmpeg.c
index ab628b2..4c067d7 100644
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -2946,7 +2946,7 @@ static int opt_frame_pix_fmt(const char *opt, const char *arg)
return AVERROR(EINVAL);
}
} else {
- show_pix_fmts();
+ opt_pix_fmts(NULL, NULL);
ffmpeg_exit(0);
}
return 0;
@@ -4077,16 +4077,18 @@ static void parse_matrix_coeffs(uint16_t *dest, const char *str)
}
}
-static void opt_inter_matrix(const char *opt, const char *arg)
+static int opt_inter_matrix(const char *opt, const char *arg)
{
inter_matrix = av_mallocz(sizeof(uint16_t) * 64);
parse_matrix_coeffs(inter_matrix, arg);
+ return 0;
}
-static void opt_intra_matrix(const char *opt, const char *arg)
+static int opt_intra_matrix(const char *opt, const char *arg)
{
intra_matrix = av_mallocz(sizeof(uint16_t) * 64);
parse_matrix_coeffs(intra_matrix, arg);
+ return 0;
}
static void show_usage(void)
@@ -4096,7 +4098,7 @@ static void show_usage(void)
printf("\n");
}
-static void show_help(void)
+static int opt_help(const char *opt, const char *arg)
{
AVCodec *c;
AVOutputFormat *oformat = NULL;
@@ -4151,6 +4153,7 @@ static void show_help(void)
}
av_opt_show2(sws_opts, NULL, AV_OPT_FLAG_ENCODING_PARAM|AV_OPT_FLAG_DECODING_PARAM, 0);
+ return 0;
}
static int opt_target(const char *opt, const char *arg)
@@ -4381,11 +4384,13 @@ static void log_callback_null(void* ptr, int level, const char* fmt, va_list vl)
{
}
-static void opt_passlogfile(const char *opt, const char *arg)
+static int opt_passlogfile(const char *opt, const char *arg)
{
pass_logfilename_prefix = arg;
#if CONFIG_LIBX264_ENCODER
- opt_default("passlogfile", arg);
+ return opt_default("passlogfile", arg);
+#else
+ return 0;
#endif
}
diff --git a/ffplay.c b/ffplay.c
index b79df97..2c4bafc 100644
--- a/ffplay.c
+++ b/ffplay.c
@@ -212,7 +212,7 @@ typedef struct VideoState {
int refresh;
} VideoState;
-static void show_help(void);
+static int opt_help(const char *opt, const char *arg);
/* options specified by the user */
static AVInputFormat *file_iformat;
@@ -2952,7 +2952,7 @@ static void show_usage(void)
printf("\n");
}
-static void show_help(void)
+static int opt_help(const char *opt, const char *arg)
{
av_log_set_callback(log_callback_help);
show_usage();
@@ -2984,6 +2984,7 @@ static void show_help(void)
"down/up seek backward/forward 1 minute\n"
"mouse click seek to percentage in file corresponding to fraction of width\n"
);
+ return 0;
}
/* Called from the main */
diff --git a/ffprobe.c b/ffprobe.c
index b2b2c8f..ae97253 100644
--- a/ffprobe.c
+++ b/ffprobe.c
@@ -353,7 +353,7 @@ static int opt_input_file(const char *opt, const char *arg)
return 0;
}
-static void show_help(void)
+static int opt_help(const char *opt, const char *arg)
{
av_log_set_callback(log_callback_help);
show_usage();
@@ -361,6 +361,7 @@ static void show_help(void)
printf("\n");
av_opt_show2(avformat_opts, NULL,
AV_OPT_FLAG_DECODING_PARAM, 0);
+ return 0;
}
static void opt_pretty(void)
diff --git a/ffserver.c b/ffserver.c
index 0eac639..2aa778f 100644
--- a/ffserver.c
+++ b/ffserver.c
@@ -4662,12 +4662,13 @@ static void opt_debug(void)
logfilename[0] = '-';
}
-static void show_help(void)
+static int opt_help(const char *opt, const char *arg)
{
printf("usage: ffserver [options]\n"
"Hyper fast multi format Audio/Video streaming server\n");
printf("\n");
show_help_options(options, "Main options:\n", 0, 0);
+ return 0;
}
static const OptionDef options[] = {
More information about the ffmpeg-cvslog
mailing list