X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=ffplay.c;h=2cfdf26ee9b0ac7ce47c56bc40d6ed4474f83877;hb=dbbfbde085b8e34496e7883e82bb1b9fcfae8ad5;hp=e1e853595683b1a465dd42303902bc4962609221;hpb=f16e4a0857e368a4828cd1fbfda7f44cbbf83f06;p=ffmpeg diff --git a/ffplay.c b/ffplay.c index e1e85359568..2cfdf26ee9b 100644 --- a/ffplay.c +++ b/ffplay.c @@ -1905,7 +1905,7 @@ static int configure_video_filters(AVFilterGraph *graph, VideoState *is, const c char sws_flags_str[512] = ""; char buffersrc_args[256]; int ret; - AVFilterContext *filt_src = NULL, *filt_out = NULL, *head_filter, *last_filter = NULL; + AVFilterContext *filt_src = NULL, *filt_out = NULL, *last_filter = NULL; AVCodecContext *codec = is->video_st->codec; AVRational fr = av_guess_frame_rate(is->ic, is->video_st, NULL); AVDictionaryEntry *e = NULL; @@ -1945,7 +1945,6 @@ static int configure_video_filters(AVFilterGraph *graph, VideoState *is, const c goto fail; last_filter = filt_out; - head_filter = filt_src; /* Note: this macro adds a filter before the lastly added filter, so the * processing order of the filters is in reverse */ @@ -1958,11 +1957,11 @@ static int configure_video_filters(AVFilterGraph *graph, VideoState *is, const c if (ret < 0) \ goto fail; \ \ - ret = avfilter_link(head_filter, 0, filt_ctx, 0); \ + ret = avfilter_link(filt_ctx, 0, last_filter, 0); \ if (ret < 0) \ goto fail; \ \ - head_filter = filt_ctx; \ + last_filter = filt_ctx; \ } while (0) /* SDL YUV code is not handling odd width/height for some driver @@ -1986,7 +1985,7 @@ static int configure_video_filters(AVFilterGraph *graph, VideoState *is, const c } } - if ((ret = configure_filtergraph(graph, vfilters, head_filter, last_filter)) < 0) + if ((ret = configure_filtergraph(graph, vfilters, filt_src, last_filter)) < 0) goto fail; is->in_video_filter = filt_src; @@ -3474,6 +3473,16 @@ static void event_loop(VideoState *cur_stream) do_exit(cur_stream); break; } + if (event.button.button == SDL_BUTTON_LEFT) { + static int64_t last_mouse_left_click = 0; + if (av_gettime_relative() - last_mouse_left_click <= 500000) { + toggle_full_screen(cur_stream); + cur_stream->force_refresh = 1; + last_mouse_left_click = 0; + } else { + last_mouse_left_click = av_gettime_relative(); + } + } case SDL_MOUSEMOTION: if (cursor_hidden) { SDL_ShowCursor(1); @@ -3481,9 +3490,11 @@ static void event_loop(VideoState *cur_stream) } cursor_last_shown = av_gettime_relative(); if (event.type == SDL_MOUSEBUTTONDOWN) { + if (event.button.button != SDL_BUTTON_RIGHT) + break; x = event.button.x; } else { - if (event.motion.state != SDL_PRESSED) + if (!(event.motion.state & SDL_BUTTON_RMASK)) break; x = event.motion.x; } @@ -3727,7 +3738,8 @@ void show_help_default(const char *opt, const char *arg) "left/right seek backward/forward 10 seconds\n" "down/up seek backward/forward 1 minute\n" "page down/page up seek backward/forward 10 minutes\n" - "mouse click seek to percentage in file corresponding to fraction of width\n" + "right mouse click seek to percentage in file corresponding to fraction of width\n" + "left double-click toggle full screen\n" ); }