Compare commits

...

1 Commits

Author SHA1 Message Date
John Koleszar
dd39e386ee wip: add support for experimental knobs
Change-Id: I51a0a80877be9784a7b161b4a17604d3922f3aef
2011-01-06 12:49:06 -05:00
4 changed files with 89 additions and 0 deletions

View File

@@ -35,6 +35,7 @@ vpxenc.SRCS += vpx_ports/mem_ops_aligned.h
vpxenc.SRCS += libmkv/EbmlIDs.h
vpxenc.SRCS += libmkv/EbmlWriter.c
vpxenc.SRCS += libmkv/EbmlWriter.h
vpxenc.SRCS += experimental.c
vpxenc.GUID = 548DEC74-7A15-4B2B-AFC3-AA102E7C25C1
vpxenc.DESCRIPTION = Full featured encoder

29
experimental.c Normal file
View File

@@ -0,0 +1,29 @@
#define EXPERIMENTAL_C
#include <stdio.h>
#include "args.h"
/* Get argument definitions */
#include "experimental.h"
/* Build argument definition list */
static const arg_def_t *xxx_def_list[] = {
#include "experimental.h"
NULL
};
void xxx_show_usage(FILE *fp)
{
arg_show_usage(fp, xxx_def_list);
}
int xxx_parse_arg(char **argi)
{
struct arg arg;
arg = arg_init(argi);
if(0);
#include "experimental.h"
else return 0;
return 1;
}

56
experimental.h Normal file
View File

@@ -0,0 +1,56 @@
#if defined(EXPERIMENTAL_C)
/* The experimental.c file includes this file multiple times to build up the
* required state.
*/
#if !defined(XXX_ARG_DEF)
#define XXX_ARG_DEF(sym, value) \
static const arg_def_t xxx_arg_def_##sym = \
ARG_DEF(NULL, #sym, 1, "Experimental");
#define XXX_DEFINE_INT(sym, value) \
XXX_ARG_DEF(sym, value); int xxx_##sym = value;
#define XXX_DEFINE_UINT(sym, value) \
XXX_ARG_DEF(sym, value); unsigned int xxx_##sym = value;
#elif !defined(XXX_ARG_DEF_LIST)
#define XXX_ARG_DEF_LIST(sym) &xxx_arg_def_##sym,
#undef XXX_DEFINE_INT
#define XXX_DEFINE_INT(sym, value) XXX_ARG_DEF_LIST(sym)
#undef XXX_DEFINE_UINT
#define XXX_DEFINE_UINT(sym, value) XXX_ARG_DEF_LIST(sym)
#elif !defined(XXX_ARG_MATCH)
#define XXX_ARG_MATCH
#undef XXX_DEFINE_INT
#define XXX_DEFINE_INT(sym, value)\
else if (arg_match(&arg, &xxx_arg_def_##sym, argi)) \
xxx_##sym = arg_parse_int(&arg);
#undef XXX_DEFINE_UINT
#define XXX_DEFINE_UINT(sym, value)\
else if (arg_match(&arg, &xxx_arg_def_##sym, argi)) \
xxx_##sym = arg_parse_uint(&arg);
#endif
#else
/* All other files just get the extern references to these symbols. */
#define XXX_DEFINE_INT(sym, value) extern int xxx_##sym;
#define XXX_DEFINE_UINT(sym, value) extern unsigned int xxx_##sym;
#include <stdio.h>
void xxx_show_usage(FILE *fp);
int xxx_parse_arg(char **argi);
#endif
/*
* BEGIN EXPERIMENTS BELOW
*
* XXX_DEFINE_INT(knob, 0)
*/
XXX_DEFINE_INT(foo, 0)
XXX_DEFINE_INT(bar, 0)

View File

@@ -39,6 +39,7 @@
#include "y4minput.h"
#include "libmkv/EbmlWriter.h"
#include "libmkv/EbmlIDs.h"
#include "experimental.h"
/* Need special handling of these functions on Windows */
#if defined(_MSC_VER)
@@ -1039,6 +1040,7 @@ static void usage_exit()
#if CONFIG_VP8_ENCODER
fprintf(stderr, "\nVP8 Specific Options:\n");
arg_show_usage(stdout, vp8_args);
xxx_show_usage(stdout);
#endif
fprintf(stderr, "\n"
"Included encoders:\n"
@@ -1173,6 +1175,7 @@ int main(int argc, const char **argv_)
out_fn = arg.val;
else if (arg_match(&arg, &debugmode, argi))
ebml.debug = 1;
else if (xxx_parse_arg(argi));
else
argj++;
}