[FFmpeg-devel] [PATCH 1/2] Allow -to on input files as well
From: Vitaly _Vi Shukela Why only output files can have both -t and -to? Signed-off-by: Vitaly "_Vi" Shukela --- fftools/ffmpeg_opt.c | 17 - 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/fftools/ffmpeg_opt.c b/fftools/ffmpeg_opt.c index ca6f10d5ca..e453cb34c5 100644 --- a/fftools/ffmpeg_opt.c +++ b/fftools/ffmpeg_opt.c @@ -972,6 +972,21 @@ static int open_input_file(OptionsContext *o, const char *filename) char *data_codec_name = NULL; int scan_all_pmts_set = 0; +if (o->stop_time != INT64_MAX && o->recording_time != INT64_MAX) { +o->stop_time = INT64_MAX; +av_log(NULL, AV_LOG_WARNING, "-t and -to cannot be used together; using -t.\n"); +} + +if (o->stop_time != INT64_MAX && o->recording_time == INT64_MAX) { +int64_t start_time = o->start_time == AV_NOPTS_VALUE ? 0 : o->start_time; +if (o->stop_time <= start_time) { +av_log(NULL, AV_LOG_ERROR, "-to value smaller than -ss; aborting.\n"); +exit_program(1); +} else { +o->recording_time = o->stop_time - start_time; +} +} + if (o->format) { if (!(file_iformat = av_find_input_format(o->format))) { av_log(NULL, AV_LOG_FATAL, "Unknown input format: '%s'\n", o->format); @@ -3403,7 +3418,7 @@ const OptionDef options[] = { OPT_INPUT | OPT_OUTPUT, { .off = OFFSET(recording_time) }, "record or transcode \"duration\" seconds of audio/video", "duration" }, -{ "to", HAS_ARG | OPT_TIME | OPT_OFFSET | OPT_OUTPUT, { .off = OFFSET(stop_time) }, +{ "to", HAS_ARG | OPT_TIME | OPT_OFFSET | OPT_INPUT | OPT_OUTPUT, { .off = OFFSET(stop_time) }, "record or transcode stop time", "time_stop" }, { "fs", HAS_ARG | OPT_INT64 | OPT_OFFSET | OPT_OUTPUT, { .off = OFFSET(limit_filesize) }, "set the limit file size in bytes", "limit_size" }, -- 2.11.0 ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
[FFmpeg-devel] [PATCH 2/2] Document the fact that -to option is now also for input
From: Vitaly _Vi Shukela Signed-off-by: Vitaly _Vi Shukela --- doc/ffmpeg.texi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/ffmpeg.texi b/doc/ffmpeg.texi index 7db80ebf6a..3df171fe63 100644 --- a/doc/ffmpeg.texi +++ b/doc/ffmpeg.texi @@ -290,7 +290,7 @@ see @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) -to and -t are mutually exclusive and -t has priority. @item -to @var{position} (@emph{output}) -Stop writing the output at @var{position}. +Stop writing the output or reading the input at @var{position}. @var{position} must be a time duration specification, see @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}. -- 2.11.0 ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
[FFmpeg-devel] [PATCH] Allow "-to" on input files as well
From: Vitaly _Vi Shukela --- Notes: Second version. Please CC vi0...@gmail.com when replying. Note that added code is a duplicate of the respective output option processing code. I'm not sure if it is worth factoring out. doc/ffmpeg.texi | 4 ++-- fftools/ffmpeg_opt.c | 17 - 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/doc/ffmpeg.texi b/doc/ffmpeg.texi index 7db80ebf6a..9a90d7327a 100644 --- a/doc/ffmpeg.texi +++ b/doc/ffmpeg.texi @@ -289,8 +289,8 @@ see @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) -to and -t are mutually exclusive and -t has priority. -@item -to @var{position} (@emph{output}) -Stop writing the output at @var{position}. +@item -to @var{position} (@emph{input/output}) +Stop writing the output or reading the input at @var{position}. @var{position} must be a time duration specification, see @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}. diff --git a/fftools/ffmpeg_opt.c b/fftools/ffmpeg_opt.c index ca6f10d5ca..e453cb34c5 100644 --- a/fftools/ffmpeg_opt.c +++ b/fftools/ffmpeg_opt.c @@ -972,6 +972,21 @@ static int open_input_file(OptionsContext *o, const char *filename) char *data_codec_name = NULL; int scan_all_pmts_set = 0; +if (o->stop_time != INT64_MAX && o->recording_time != INT64_MAX) { +o->stop_time = INT64_MAX; +av_log(NULL, AV_LOG_WARNING, "-t and -to cannot be used together; using -t.\n"); +} + +if (o->stop_time != INT64_MAX && o->recording_time == INT64_MAX) { +int64_t start_time = o->start_time == AV_NOPTS_VALUE ? 0 : o->start_time; +if (o->stop_time <= start_time) { +av_log(NULL, AV_LOG_ERROR, "-to value smaller than -ss; aborting.\n"); +exit_program(1); +} else { +o->recording_time = o->stop_time - start_time; +} +} + if (o->format) { if (!(file_iformat = av_find_input_format(o->format))) { av_log(NULL, AV_LOG_FATAL, "Unknown input format: '%s'\n", o->format); @@ -3403,7 +3418,7 @@ const OptionDef options[] = { OPT_INPUT | OPT_OUTPUT, { .off = OFFSET(recording_time) }, "record or transcode \"duration\" seconds of audio/video", "duration" }, -{ "to", HAS_ARG | OPT_TIME | OPT_OFFSET | OPT_OUTPUT, { .off = OFFSET(stop_time) }, +{ "to", HAS_ARG | OPT_TIME | OPT_OFFSET | OPT_INPUT | OPT_OUTPUT, { .off = OFFSET(stop_time) }, "record or transcode stop time", "time_stop" }, { "fs", HAS_ARG | OPT_INT64 | OPT_OFFSET | OPT_OUTPUT, { .off = OFFSET(limit_filesize) }, "set the limit file size in bytes", "limit_size" }, -- 2.11.0 ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
[FFmpeg-devel] [PATCH] ffmpeg: Allow "-to" on input files in addition to "-t"
From: Vitaly _Vi Shukela For some strange reason "-t" option was only implemented for input files while both "-t" and "-to" were available for use for output files. This made extracting a range from input file inconvenient. This patch enables -to option for input so one can do ffmpeg -ss 1:23:20 -to 1:27:22.3 -i myinput.mkv ... Signed-off-by: Vitaly _Vi Shukela --- doc/ffmpeg.texi | 4 ++-- fftools/ffmpeg_opt.c | 17 - 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/doc/ffmpeg.texi b/doc/ffmpeg.texi index 7db80ebf6a..9a90d7327a 100644 --- a/doc/ffmpeg.texi +++ b/doc/ffmpeg.texi @@ -289,8 +289,8 @@ see @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) -to and -t are mutually exclusive and -t has priority. -@item -to @var{position} (@emph{output}) -Stop writing the output at @var{position}. +@item -to @var{position} (@emph{input/output}) +Stop writing the output or reading the input at @var{position}. @var{position} must be a time duration specification, see @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}. diff --git a/fftools/ffmpeg_opt.c b/fftools/ffmpeg_opt.c index 47d384166c..f66f672c3c 100644 --- a/fftools/ffmpeg_opt.c +++ b/fftools/ffmpeg_opt.c @@ -976,6 +976,21 @@ static int open_input_file(OptionsContext *o, const char *filename) char *data_codec_name = NULL; int scan_all_pmts_set = 0; +if (o->stop_time != INT64_MAX && o->recording_time != INT64_MAX) { +o->stop_time = INT64_MAX; +av_log(NULL, AV_LOG_WARNING, "-t and -to cannot be used together; using -t.\n"); +} + +if (o->stop_time != INT64_MAX && o->recording_time == INT64_MAX) { +int64_t start_time = o->start_time == AV_NOPTS_VALUE ? 0 : o->start_time; +if (o->stop_time <= start_time) { +av_log(NULL, AV_LOG_ERROR, "-to value smaller than -ss; aborting.\n"); +exit_program(1); +} else { +o->recording_time = o->stop_time - start_time; +} +} + if (o->format) { if (!(file_iformat = av_find_input_format(o->format))) { av_log(NULL, AV_LOG_FATAL, "Unknown input format: '%s'\n", o->format); @@ -3407,7 +3422,7 @@ const OptionDef options[] = { OPT_INPUT | OPT_OUTPUT, { .off = OFFSET(recording_time) }, "record or transcode \"duration\" seconds of audio/video", "duration" }, -{ "to", HAS_ARG | OPT_TIME | OPT_OFFSET | OPT_OUTPUT, { .off = OFFSET(stop_time) }, +{ "to", HAS_ARG | OPT_TIME | OPT_OFFSET | OPT_INPUT | OPT_OUTPUT, { .off = OFFSET(stop_time) }, "record or transcode stop time", "time_stop" }, { "fs", HAS_ARG | OPT_INT64 | OPT_OFFSET | OPT_OUTPUT, { .off = OFFSET(limit_filesize) }, "set the limit file size in bytes", "limit_size" }, -- 2.11.0 ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel