#include <math.h>
#include <limits.h>
#include "avformat.h"
+#include "rtsp.h"
#include "swscale.h"
#include "avstring.h"
#undef exit
+static const char program_name[] = "FFplay";
+static const int program_birth_year = 2003;
+
//#define DEBUG_SYNC
#define MAX_VIDEOQ_SIZE (5 * 256 * 1024)
w = 640;
h = 480;
}
-#ifndef SYS_DARWIN
+#ifndef __APPLE__
screen = SDL_SetVideoMode(w, h, 0, flags);
#else
/* setting bits_per_pixel = 0 or 32 causes blank video on OS X */
/* compute nominal delay */
delay = vp->pts - is->frame_last_pts;
- if (delay <= 0 || delay >= 1.0) {
+ if (delay <= 0 || delay >= 2.0) {
/* if incorrect delay, use previous one */
delay = is->frame_last_delay;
}
else
av_read_play(ic);
}
-#ifdef CONFIG_RTSP_DEMUXER
- if (is->paused && ic->iformat == &rtsp_demuxer) {
+#if defined(CONFIG_RTSP_DEMUXER) || defined(CONFIG_MMSH_PROTOCOL)
+ if (is->paused &&
+ (!strcmp(ic->iformat->name, "rtsp") ||
+ !strcmp(url_fileno(&ic->pb)->prot->name, "mmsh"))) {
/* wait 10 ms to avoid trying to get another packet */
/* XXX: horrible */
SDL_Delay(10);
static void step_to_next_frame(void)
{
if (cur_stream) {
+ /* if the stream is paused unpause it, then step */
if (cur_stream->paused)
- cur_stream->paused=0;
- cur_stream->video_current_pts = get_video_clock(cur_stream);
+ stream_pause(cur_stream);
}
step = 1;
}
static void opt_seek(const char *arg)
{
start_time = parse_date(arg, 1);
+ if (start_time == INT64_MIN) {
+ fprintf(stderr, "Invalid duration specification: %s\n", arg);
+ exit(1);
+ }
}
static void opt_debug(const char *arg)
void show_help(void)
{
- printf("ffplay version " FFMPEG_VERSION ", Copyright (c) 2003-2007 Fabrice Bellard, et al.\n"
- "usage: ffplay [options] input_file\n"
+ printf("usage: ffplay [options] input_file\n"
"Simple media player\n");
printf("\n");
show_help_options(options, "Main options:\n",
/* register all codecs, demux and protocols */
av_register_all();
+ show_banner(program_name, program_birth_year);
+
parse_options(argc, argv, options, opt_input_file);
if (!input_filename) {
video_disable = 1;
}
flags = SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_TIMER;
-#if !defined(__MINGW32__) && !defined(SYS_DARWIN)
- flags |= SDL_INIT_EVENTTHREAD; /* Not supported on win32 or darwin */
+#if !defined(__MINGW32__) && !defined(__APPLE__)
+ flags |= SDL_INIT_EVENTTHREAD; /* Not supported on Windows or Mac OS X */
#endif
if (SDL_Init (flags)) {
fprintf(stderr, "Could not initialize SDL - %s\n", SDL_GetError());