cmdutils: allow storing per-stream/chapter/.... options in a generic way
This commit is contained in:
13
cmdutils.c
13
cmdutils.c
@ -207,6 +207,7 @@ int parse_option(void *optctx, const char *opt, const char *arg, const OptionDef
|
||||
{
|
||||
const OptionDef *po;
|
||||
int bool_val = 1;
|
||||
int *dstcount;
|
||||
void *dst;
|
||||
|
||||
po = find_option(options, opt);
|
||||
@ -231,7 +232,17 @@ unknown_opt:
|
||||
|
||||
/* new-style options contain an offset into optctx, old-style address of
|
||||
* a global var*/
|
||||
dst = po->flags & (OPT_OFFSET) ? (uint8_t*)optctx + po->u.off : po->u.dst_ptr;
|
||||
dst = po->flags & (OPT_OFFSET|OPT_SPEC) ? (uint8_t*)optctx + po->u.off : po->u.dst_ptr;
|
||||
|
||||
if (po->flags & OPT_SPEC) {
|
||||
SpecifierOpt **so = dst;
|
||||
char *p = strchr(opt, ':');
|
||||
|
||||
dstcount = (int*)(so + 1);
|
||||
*so = grow_array(*so, sizeof(**so), dstcount, *dstcount + 1);
|
||||
(*so)[*dstcount - 1].specifier = av_strdup(p ? p + 1 : "");
|
||||
dst = &(*so)[*dstcount - 1].u;
|
||||
}
|
||||
|
||||
if (po->flags & OPT_STRING) {
|
||||
char *str;
|
||||
|
Reference in New Issue
Block a user