aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefano Sabatini <stefano.sabatini-lala@poste.it>2011-04-12 13:10:33 +0200
committerStefano Sabatini <stefano.sabatini-lala@poste.it>2011-04-13 10:06:27 +0200
commitf521746b8362889f29faf2555a3fd645e24adb23 (patch)
treee8be6641f08737c48be250c051f69933055068f0
parentf8b8c694e9be3a72a43c8f17d4763c3f4fb74c8b (diff)
downloadffmpeg-f521746b8362889f29faf2555a3fd645e24adb23.tar.gz
ffplay: implement -showmode option
The new option allows to select the starting show mode.
-rw-r--r--doc/ffplay.texi18
-rw-r--r--ffplay.c13
2 files changed, 31 insertions, 0 deletions
diff --git a/doc/ffplay.texi b/doc/ffplay.texi
index e0518b859e..3e5f69c242 100644
--- a/doc/ffplay.texi
+++ b/doc/ffplay.texi
@@ -58,6 +58,24 @@ Force format.
Set window title (default is the input filename).
@item -loop @var{number}
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}
@var{filter_graph} is a description of the filter graph to apply to
the input video.
diff --git a/ffplay.c b/ffplay.c
index 9386c1251d..8a55e7df5b 100644
--- a/ffplay.c
+++ b/ffplay.c
@@ -265,6 +265,7 @@ static int exit_on_keydown;
static int exit_on_mousedown;
static int loop=1;
static int framedrop=1;
+static int show_mode = SHOW_MODE_VIDEO;
static int rdftspeed=20;
#if CONFIG_AVFILTER
@@ -2461,6 +2462,8 @@ static int decode_thread(void *arg)
av_dump_format(ic, 0, is->filename, 0);
}
+ is->show_mode = show_mode;
+
/* open the streams */
if (st_index[AVMEDIA_TYPE_AUDIO] >= 0) {
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;
}
+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[] = {
#include "cmdutils_common_opts.h"
{ "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" },
#endif
{ "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", "" },
{ "i", OPT_DUMMY, {NULL}, "ffmpeg compatibility dummy option", ""},
{ NULL, },