diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2015-05-21 00:34:41 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2015-05-21 18:21:38 +0200 |
commit | 18833daf9d1b4e380065b107173fba76d7b46067 (patch) | |
tree | 16a456c6a8a80ca097ad580e5a1077b960be3ee7 /ffmpeg_opt.c | |
parent | 33e9473366074ee92eecec5f5719734e4a6b4b79 (diff) | |
download | ffmpeg-18833daf9d1b4e380065b107173fba76d7b46067.tar.gz |
ffmpeg: Support copying unknown streams
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'ffmpeg_opt.c')
-rw-r--r-- | ffmpeg_opt.c | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/ffmpeg_opt.c b/ffmpeg_opt.c index d70318cdf3..8edc98865c 100644 --- a/ffmpeg_opt.c +++ b/ffmpeg_opt.c @@ -112,6 +112,7 @@ static int input_sync; static int override_ffserver = 0; static int input_stream_potentially_available = 0; static int ignore_unknown_streams = 0; +static int copy_unknown_streams = 0; static void uninit_options(OptionsContext *o) { @@ -1566,6 +1567,19 @@ static OutputStream *new_data_stream(OptionsContext *o, AVFormatContext *oc, int return ost; } +static OutputStream *new_unknown_stream(OptionsContext *o, AVFormatContext *oc, int source_index) +{ + OutputStream *ost; + + ost = new_output_stream(o, oc, AVMEDIA_TYPE_UNKNOWN, source_index); + if (!ost->stream_copy) { + av_log(NULL, AV_LOG_FATAL, "Unknown stream encoding not supported yet (only streamcopy)\n"); + exit_program(1); + } + + return ost; +} + static OutputStream *new_attachment_stream(OptionsContext *o, AVFormatContext *oc, int source_index) { OutputStream *ost = new_output_stream(o, oc, AVMEDIA_TYPE_ATTACHMENT, source_index); @@ -2018,6 +2032,11 @@ loop_end: case AVMEDIA_TYPE_SUBTITLE: ost = new_subtitle_stream (o, oc, src_idx); break; case AVMEDIA_TYPE_DATA: ost = new_data_stream (o, oc, src_idx); break; case AVMEDIA_TYPE_ATTACHMENT: ost = new_attachment_stream(o, oc, src_idx); break; + case AVMEDIA_TYPE_UNKNOWN: + if (copy_unknown_streams) { + ost = new_unknown_stream (o, oc, src_idx); + break; + } default: av_log(NULL, ignore_unknown_streams ? AV_LOG_WARNING : AV_LOG_FATAL, "Cannot map stream #%d:%d - unsupported type.\n", @@ -2025,7 +2044,8 @@ loop_end: if (!ignore_unknown_streams) { av_log(NULL, AV_LOG_FATAL, "If you want unsupported types ignored instead " - "of failing, please use the -ignore_unknown option\n"); + "of failing, please use the -ignore_unknown option\n" + "If you want them copied, please use -copy_unknown\n"); exit_program(1); } } @@ -2864,6 +2884,8 @@ const OptionDef options[] = { "never overwrite output files" }, { "ignore_unknown", OPT_BOOL, { &ignore_unknown_streams }, "Ignore unknown stream types" }, + { "copy_unknown", OPT_BOOL | OPT_EXPERT, { ©_unknown_streams }, + "Copy unknown stream types" }, { "c", HAS_ARG | OPT_STRING | OPT_SPEC | OPT_INPUT | OPT_OUTPUT, { .off = OFFSET(codec_names) }, "codec name", "codec" }, |