+
/*
* ffmpeg option parsing
*
if (!file_overwrite) {
if (proto_name && !strcmp(proto_name, "file") && avio_check(filename, 0) == 0) {
if (stdin_interaction && !no_file_overwrite) {
- fprintf(stderr,"File '%s' already exists. Overwrite ? [y/N] ", filename);
+ fprintf(stderr,"File '%s' already exists. Overwrite? [y/N] ", filename);
fflush(stderr);
term_exit();
signal(SIGINT, SIG_DFL);
for (i = 0; i < nb_input_streams; i++) {
int new_area;
ist = input_streams[i];
- new_area = ist->st->codecpar->width * ist->st->codecpar->height + 100000000*!!ist->st->codec_info_nb_frames;
+ new_area = ist->st->codecpar->width * ist->st->codecpar->height + 100000000*!!ist->st->codec_info_nb_frames
+ + 5000000*!!(ist->st->disposition & AV_DISPOSITION_DEFAULT);
if (ist->user_set_discard == AVDISCARD_ALL)
continue;
if((qcr!=MKTAG('A', 'P', 'I', 'C')) && (ist->st->disposition & AV_DISPOSITION_ATTACHED_PIC))
for (i = 0; i < nb_input_streams; i++) {
int score;
ist = input_streams[i];
- score = ist->st->codecpar->channels + 100000000*!!ist->st->codec_info_nb_frames;
+ score = ist->st->codecpar->channels + 100000000*!!ist->st->codec_info_nb_frames
+ + 5000000*!!(ist->st->disposition & AV_DISPOSITION_DEFAULT);
if (ist->user_set_discard == AVDISCARD_ALL)
continue;
if (ist->st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO &&
} else {
/* Try to determine PAL/NTSC by peeking in the input files */
if (nb_input_files) {
- int i, j, fr;
+ int i, j;
for (j = 0; j < nb_input_files; j++) {
for (i = 0; i < input_files[j]->nb_streams; i++) {
AVStream *st = input_files[j]->ctx->streams[i];
+ int64_t fr;
if (st->codecpar->codec_type != AVMEDIA_TYPE_VIDEO)
continue;
- fr = st->time_base.den * 1000 / st->time_base.num;
+ fr = st->time_base.den * 1000LL / st->time_base.num;
if (fr == 25000) {
norm = PAL;
break;
static int opt_old2new(void *optctx, const char *opt, const char *arg)
{
OptionsContext *o = optctx;
+ int ret;
char *s = av_asprintf("%s:%c", opt + 1, *opt);
- int ret = parse_option(o, s, arg, options);
+ if (!s)
+ return AVERROR(ENOMEM);
+ ret = parse_option(o, s, arg, options);
av_free(s);
return ret;
}
return parse_option(o, "q:v", arg, options);
}
s = av_asprintf("q%s", opt + 6);
+ if (!s)
+ return AVERROR(ENOMEM);
ret = parse_option(o, s, arg, options);
av_free(s);
return ret;
static int opt_timecode(void *optctx, const char *opt, const char *arg)
{
OptionsContext *o = optctx;
+ int ret;
char *tcr = av_asprintf("timecode=%s", arg);
- int ret = parse_option(o, "metadata:g", tcr, options);
+ if (!tcr)
+ return AVERROR(ENOMEM);
+ ret = parse_option(o, "metadata:g", tcr, options);
if (ret >= 0)
ret = av_dict_set(&o->g->codec_opts, "gop_timecode", arg, 0);
av_free(tcr);
{ "stdin", OPT_BOOL | OPT_EXPERT, { &stdin_interaction },
"enable or disable interaction on standard input" },
{ "timelimit", HAS_ARG | OPT_EXPERT, { .func_arg = opt_timelimit },
- "set max runtime in seconds", "limit" },
+ "set max runtime in seconds in CPU user time", "limit" },
{ "dump", OPT_BOOL | OPT_EXPERT, { &do_pkt_dump },
"dump each input packet" },
{ "hex", OPT_BOOL | OPT_EXPERT, { &do_hex_dump },