bugfix: all vpxenc arguments were not parsed under all conditions
dynamicly assign ARG_CTRL_CNT_MAX and add check to make sure argument instance doesnt already exist before creating a duplicate Change-Id: I4f78a9c5346cda8e812cd89c077afe8996493508
This commit is contained in:
parent
34d7c8b3d4
commit
16e101ba54
23
vpxenc.c
23
vpxenc.c
@ -1442,7 +1442,8 @@ static void show_rate_histogram(struct rate_hist *hist,
|
|||||||
show_histogram(hist->bucket, buckets, hist->total, scale);
|
show_histogram(hist->bucket, buckets, hist->total, scale);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define ARG_CTRL_CNT_MAX 10
|
#define NELEMENTS(x) (sizeof(x)/sizeof(x[0]))
|
||||||
|
#define ARG_CTRL_CNT_MAX NELEMENTS(vp8_arg_ctrl_map)
|
||||||
|
|
||||||
int main(int argc, const char **argv_)
|
int main(int argc, const char **argv_)
|
||||||
{
|
{
|
||||||
@ -1721,14 +1722,26 @@ int main(int argc, const char **argv_)
|
|||||||
{
|
{
|
||||||
if (arg_match(&arg, ctrl_args[i], argi))
|
if (arg_match(&arg, ctrl_args[i], argi))
|
||||||
{
|
{
|
||||||
|
int j;
|
||||||
match = 1;
|
match = 1;
|
||||||
|
|
||||||
if (arg_ctrl_cnt < ARG_CTRL_CNT_MAX)
|
/* Point either to the next free element or the first
|
||||||
|
* instance of this control.
|
||||||
|
*/
|
||||||
|
for(j=0; j<arg_ctrl_cnt; j++)
|
||||||
|
if(arg_ctrls[j][0] == ctrl_args_map[i])
|
||||||
|
break;
|
||||||
|
|
||||||
|
/* Update/insert */
|
||||||
|
assert(j < ARG_CTRL_CNT_MAX);
|
||||||
|
if (j < ARG_CTRL_CNT_MAX)
|
||||||
{
|
{
|
||||||
arg_ctrls[arg_ctrl_cnt][0] = ctrl_args_map[i];
|
arg_ctrls[j][0] = ctrl_args_map[i];
|
||||||
arg_ctrls[arg_ctrl_cnt][1] = arg_parse_enum_or_int(&arg);
|
arg_ctrls[j][1] = arg_parse_enum_or_int(&arg);
|
||||||
arg_ctrl_cnt++;
|
if(j == arg_ctrl_cnt)
|
||||||
|
arg_ctrl_cnt++;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user