X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=ffplay.c;h=bf109ad1e9e65e01bd5fc1884eba8ece4ded7b16;hb=65f379920ff4502aa073d4c8f42648ddce6a8488;hp=41277a3cdd292c657302b8e4ec25b2c5f613fcc1;hpb=9fcfc0b763b73ba995e5acf050f4eda67f7750a3;p=ffmpeg diff --git a/ffplay.c b/ffplay.c index 41277a3cdd2..bf109ad1e9e 100644 --- a/ffplay.c +++ b/ffplay.c @@ -865,7 +865,7 @@ static int video_open(VideoState *is){ w = 640; h = 480; } -#ifndef CONFIG_DARWIN +#ifndef __APPLE__ screen = SDL_SetVideoMode(w, h, 0, flags); #else /* setting bits_per_pixel = 0 or 32 causes blank video on OS X */ @@ -1012,7 +1012,7 @@ static void video_refresh_timer(void *opaque) /* 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; } @@ -1871,7 +1871,7 @@ static int decode_thread(void *arg) { VideoState *is = arg; AVFormatContext *ic; - int err, i, ret, video_index, audio_index, use_play; + int err, i, ret, video_index, audio_index; AVPacket pkt1, *pkt = &pkt1; AVFormatParameters params, *ap = ¶ms; @@ -1885,8 +1885,6 @@ static int decode_thread(void *arg) url_set_interrupt_cb(decode_interrupt_cb); memset(ap, 0, sizeof(*ap)); - ap->initial_pause = 1; /* we force a pause when starting an RTSP - stream */ ap->width = frame_width; ap->height= frame_height; @@ -1900,24 +1898,17 @@ static int decode_thread(void *arg) goto fail; } is->ic = ic; -#ifdef CONFIG_RTSP_DEMUXER - use_play = (ic->iformat == &rtsp_demuxer); -#else - use_play = 0; -#endif if(genpts) ic->flags |= AVFMT_FLAG_GENPTS; - if (!use_play) { - err = av_find_stream_info(ic); - if (err < 0) { - fprintf(stderr, "%s: could not find codec parameters\n", is->filename); - ret = -1; - goto fail; - } - ic->pb.eof_reached= 0; //FIXME hack, ffplay maybe should not use url_feof() to test for the end + err = av_find_stream_info(ic); + if (err < 0) { + fprintf(stderr, "%s: could not find codec parameters\n", is->filename); + ret = -1; + goto fail; } + ic->pb.eof_reached= 0; //FIXME hack, ffplay maybe should not use url_feof() to test for the end /* if seeking requested, we execute it */ if (start_time != AV_NOPTS_VALUE) { @@ -1934,18 +1925,6 @@ static int decode_thread(void *arg) } } - /* now we can begin to play (RTSP stream only) */ - av_read_play(ic); - - if (use_play) { - err = av_find_stream_info(ic); - if (err < 0) { - fprintf(stderr, "%s: could not find codec parameters\n", is->filename); - ret = -1; - goto fail; - } - } - for(i = 0; i < ic->nb_streams; i++) { AVCodecContext *enc = ic->streams[i]->codec; switch(enc->codec_type) { @@ -1995,7 +1974,7 @@ static int decode_thread(void *arg) av_read_play(ic); } #ifdef CONFIG_RTSP_DEMUXER - if (is->paused && ic->iformat == &rtsp_demuxer) { + if (is->paused && !strcmp(ic->iformat->name, "rtsp")) { /* wait 10 ms to avoid trying to get another packet */ /* XXX: horrible */ SDL_Delay(10); @@ -2217,9 +2196,9 @@ static void toggle_pause(void) 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; } @@ -2515,7 +2494,7 @@ void show_help(void) ); } -void parse_arg_file(const char *filename) +void opt_input_file(const char *filename) { if (!strcmp(filename, "-")) filename = "pipe:"; @@ -2530,7 +2509,7 @@ int main(int argc, char **argv) /* register all codecs, demux and protocols */ av_register_all(); - parse_options(argc, argv, options, parse_arg_file); + parse_options(argc, argv, options, opt_input_file); if (!input_filename) { show_help(); @@ -2541,8 +2520,8 @@ int main(int argc, char **argv) video_disable = 1; } flags = SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_TIMER; -#if !defined(__MINGW32__) && !defined(CONFIG_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());