X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=ffmpeg_opt.c;h=a356cadab4dbdd150a6888157e1271f557fe8cca;hb=8534c8c77a509987d6b63ed3b65155c3561b8583;hp=f7f65535d2021407caf3ae525aa42376502f5256;hpb=2a227fe8799e26fe3c8862438a163f72dca017a5;p=ffmpeg diff --git a/ffmpeg_opt.c b/ffmpeg_opt.c index f7f65535d20..a356cadab4d 100644 --- a/ffmpeg_opt.c +++ b/ffmpeg_opt.c @@ -231,6 +231,7 @@ static int opt_map(void *optctx, const char *opt, const char *arg) int sync_file_idx = -1, sync_stream_idx = 0; char *p, *sync; char *map; + char *allow_unused; if (*arg == '-') { negative = 1; @@ -275,6 +276,8 @@ static int opt_map(void *optctx, const char *opt, const char *arg) exit_program(1); } } else { + if (allow_unused = strchr(map, '?')) + *allow_unused = 0; file_idx = strtol(map, &p, 0); if (file_idx >= nb_input_files || file_idx < 0) { av_log(NULL, AV_LOG_FATAL, "Invalid input file index: %d.\n", file_idx); @@ -312,8 +315,13 @@ static int opt_map(void *optctx, const char *opt, const char *arg) } if (!m) { - av_log(NULL, AV_LOG_FATAL, "Stream map '%s' matches no streams.\n", arg); - exit_program(1); + if (allow_unused) { + av_log(NULL, AV_LOG_VERBOSE, "Stream map '%s' matches no streams; ignoring.\n", arg); + } else { + av_log(NULL, AV_LOG_FATAL, "Stream map '%s' matches no streams.\n" + "To ignore this, add a trailing '?' to the map.\n", arg); + exit_program(1); + } } av_freep(&map); @@ -1204,6 +1212,7 @@ static OutputStream *new_output_stream(OptionsContext *o, AVFormatContext *oc, e uint32_t tag = strtol(codec_tag, &next, 0); if (*next) tag = AV_RL32(codec_tag); + ost->st->codec->codec_tag = ost->enc_ctx->codec_tag = tag; } @@ -1918,7 +1927,7 @@ static int open_output_file(OptionsContext *o, const char *filename) for (i = 0; i < nb_input_streams; i++) { int new_area; ist = input_streams[i]; - new_area = ist->st->codec->width * ist->st->codec->height; + new_area = ist->st->codec->width * ist->st->codec->height + 100000000*!!ist->st->codec_info_nb_frames; if((qcr!=MKTAG('A', 'P', 'I', 'C')) && (ist->st->disposition & AV_DISPOSITION_ATTACHED_PIC)) new_area = 1; if (ist->st->codec->codec_type == AVMEDIA_TYPE_VIDEO &&