ffplay: implement -showmode option
The new option allows to select the starting show mode.
This commit is contained in:
@@ -58,6 +58,24 @@ Force format.
|
|||||||
Set window title (default is the input filename).
|
Set window title (default is the input filename).
|
||||||
@item -loop @var{number}
|
@item -loop @var{number}
|
||||||
Loops movie playback <number> times. 0 means forever.
|
Loops movie playback <number> times. 0 means forever.
|
||||||
|
@item -showmode @var{mode}
|
||||||
|
Set the show mode to use.
|
||||||
|
Available values for @var{mode} are:
|
||||||
|
@table @samp
|
||||||
|
@item 0, video
|
||||||
|
show video
|
||||||
|
@item 1, waves
|
||||||
|
show audio waves
|
||||||
|
@item 2, rdft
|
||||||
|
show audio frequency band using RDFT ((Inverse) Real Discrete Fourier Transform)
|
||||||
|
@end table
|
||||||
|
|
||||||
|
Default value is "video", if video is not present or cannot be played
|
||||||
|
"rdft" is automatically selected.
|
||||||
|
|
||||||
|
You can interactively cycle through the available show modes by
|
||||||
|
pressing the key @key{w}.
|
||||||
|
|
||||||
@item -vf @var{filter_graph}
|
@item -vf @var{filter_graph}
|
||||||
@var{filter_graph} is a description of the filter graph to apply to
|
@var{filter_graph} is a description of the filter graph to apply to
|
||||||
the input video.
|
the input video.
|
||||||
|
13
ffplay.c
13
ffplay.c
@@ -265,6 +265,7 @@ static int exit_on_keydown;
|
|||||||
static int exit_on_mousedown;
|
static int exit_on_mousedown;
|
||||||
static int loop=1;
|
static int loop=1;
|
||||||
static int framedrop=1;
|
static int framedrop=1;
|
||||||
|
static int show_mode = SHOW_MODE_VIDEO;
|
||||||
|
|
||||||
static int rdftspeed=20;
|
static int rdftspeed=20;
|
||||||
#if CONFIG_AVFILTER
|
#if CONFIG_AVFILTER
|
||||||
@@ -2461,6 +2462,8 @@ static int decode_thread(void *arg)
|
|||||||
av_dump_format(ic, 0, is->filename, 0);
|
av_dump_format(ic, 0, is->filename, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
is->show_mode = show_mode;
|
||||||
|
|
||||||
/* open the streams */
|
/* open the streams */
|
||||||
if (st_index[AVMEDIA_TYPE_AUDIO] >= 0) {
|
if (st_index[AVMEDIA_TYPE_AUDIO] >= 0) {
|
||||||
stream_component_open(is, st_index[AVMEDIA_TYPE_AUDIO]);
|
stream_component_open(is, st_index[AVMEDIA_TYPE_AUDIO]);
|
||||||
@@ -2970,6 +2973,15 @@ static int opt_thread_count(const char *opt, const char *arg)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int opt_show_mode(const char *opt, const char *arg)
|
||||||
|
{
|
||||||
|
show_mode = !strcmp(arg, "video") ? SHOW_MODE_VIDEO :
|
||||||
|
!strcmp(arg, "waves") ? SHOW_MODE_WAVES :
|
||||||
|
!strcmp(arg, "rdft" ) ? SHOW_MODE_RDFT :
|
||||||
|
parse_number_or_die(opt, arg, OPT_INT, 0, SHOW_MODE_NB-1);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static const OptionDef options[] = {
|
static const OptionDef options[] = {
|
||||||
#include "cmdutils_common_opts.h"
|
#include "cmdutils_common_opts.h"
|
||||||
{ "x", HAS_ARG | OPT_FUNC2, {(void*)opt_width}, "force displayed width", "width" },
|
{ "x", HAS_ARG | OPT_FUNC2, {(void*)opt_width}, "force displayed width", "width" },
|
||||||
@@ -3013,6 +3025,7 @@ static const OptionDef options[] = {
|
|||||||
{ "vf", OPT_STRING | HAS_ARG, {(void*)&vfilters}, "video filters", "filter list" },
|
{ "vf", OPT_STRING | HAS_ARG, {(void*)&vfilters}, "video filters", "filter list" },
|
||||||
#endif
|
#endif
|
||||||
{ "rdftspeed", OPT_INT | HAS_ARG| OPT_AUDIO | OPT_EXPERT, {(void*)&rdftspeed}, "rdft speed", "msecs" },
|
{ "rdftspeed", OPT_INT | HAS_ARG| OPT_AUDIO | OPT_EXPERT, {(void*)&rdftspeed}, "rdft speed", "msecs" },
|
||||||
|
{ "showmode", HAS_ARG | OPT_FUNC2, {(void*)opt_show_mode}, "select show mode (0 = video, 1 = waves, 2 = RDFT)", "mode" },
|
||||||
{ "default", OPT_FUNC2 | HAS_ARG | OPT_AUDIO | OPT_VIDEO | OPT_EXPERT, {(void*)opt_default}, "generic catch all option", "" },
|
{ "default", OPT_FUNC2 | HAS_ARG | OPT_AUDIO | OPT_VIDEO | OPT_EXPERT, {(void*)opt_default}, "generic catch all option", "" },
|
||||||
{ "i", OPT_DUMMY, {NULL}, "ffmpeg compatibility dummy option", ""},
|
{ "i", OPT_DUMMY, {NULL}, "ffmpeg compatibility dummy option", ""},
|
||||||
{ NULL, },
|
{ NULL, },
|
||||||
|
Reference in New Issue
Block a user