#include <math.h>
#include <limits.h>
-#include "avformat.h"
-#include "avdevice.h"
-#include "rtsp.h"
-#include "swscale.h"
-#include "avstring.h"
+#include "libavutil/avstring.h"
+#include "libavformat/avformat.h"
+#include "libavformat/rtsp.h"
+#include "libavdevice/avdevice.h"
+#include "libswscale/swscale.h"
-#include "version.h"
#include "cmdutils.h"
#include <SDL.h>
#undef exit
-static const char program_name[] = "FFplay";
-static const int program_birth_year = 2003;
+const char program_name[] = "FFplay";
+const int program_birth_year = 2003;
//#define DEBUG_SYNC
int width, height, xleft, ytop;
} VideoState;
-void show_help(void);
+static void show_help(void);
static int audio_write_get_buf_size(VideoState *is);
/* options specified by the user */
/* prepare a new audio buffer */
-void sdl_audio_callback(void *opaque, Uint8 *stream, int len)
+static void sdl_audio_callback(void *opaque, Uint8 *stream, int len)
{
VideoState *is = opaque;
int audio_size, len1;
frame_pix_fmt = avcodec_get_pix_fmt(arg);
}
-static void opt_sync(const char *arg)
+static int opt_sync(const char *opt, const char *arg)
{
if (!strcmp(arg, "audio"))
av_sync_type = AV_SYNC_AUDIO_MASTER;
else if (!strcmp(arg, "ext"))
av_sync_type = AV_SYNC_EXTERNAL_CLOCK;
else {
- show_help();
+ fprintf(stderr, "Unknown value for %s: %s\n", opt, arg);
exit(1);
}
+ return 0;
}
static int opt_seek(const char *opt, const char *arg)
return 0;
}
-static void opt_show_help(void)
-{
- show_help();
- exit(0);
-}
-
-const OptionDef options[] = {
- { "h", 0, {(void*)opt_show_help}, "show help" },
+static const OptionDef options[] = {
+ { "h", OPT_EXIT, {(void*)show_help}, "show help" },
+ { "version", OPT_EXIT, {(void*)show_version}, "show version" },
+ { "L", OPT_EXIT, {(void*)show_license}, "show license" },
+ { "formats", OPT_EXIT, {(void*)show_formats}, "show available formats, codecs, protocols, ..." },
{ "x", HAS_ARG | OPT_FUNC2, {(void*)opt_width}, "force displayed width", "width" },
{ "y", HAS_ARG | OPT_FUNC2, {(void*)opt_height}, "force displayed height", "height" },
{ "s", HAS_ARG | OPT_VIDEO, {(void*)opt_frame_size}, "set frame size (WxH or abbreviation)", "size" },
{ "idct", OPT_INT | HAS_ARG | OPT_EXPERT, {(void*)&idct}, "set idct algo", "algo" },
{ "er", OPT_INT | HAS_ARG | OPT_EXPERT, {(void*)&error_resilience}, "set error detection threshold (0-4)", "threshold" },
{ "ec", OPT_INT | HAS_ARG | OPT_EXPERT, {(void*)&error_concealment}, "set error concealment options", "bit_mask" },
- { "sync", HAS_ARG | OPT_EXPERT, {(void*)opt_sync}, "set audio-video sync. type (type=audio/video/ext)", "type" },
+ { "sync", HAS_ARG | OPT_FUNC2 | OPT_EXPERT, {(void*)opt_sync}, "set audio-video sync. type (type=audio/video/ext)", "type" },
{ "threads", HAS_ARG | OPT_FUNC2 | OPT_EXPERT, {(void*)opt_thread_count}, "thread count", "count" },
{ NULL, },
};
-void show_help(void)
+static void show_help(void)
{
printf("usage: ffplay [options] input_file\n"
"Simple media player\n");
);
}
-void opt_input_file(const char *filename)
+static void opt_input_file(const char *filename)
{
if (!strcmp(filename, "-"))
filename = "pipe:";
avdevice_register_all();
av_register_all();
- show_banner(program_name, program_birth_year);
+ show_banner();
parse_options(argc, argv, options, opt_input_file);