Ticket #2174 (closed defect: fixed)

Opened 4 months ago

Last modified 3 months ago

ffplay: eliminate possible resize of the window for first frame

Reported by: ami_stuff Owned by: cus
Priority: normal Component: FFplay
Version: unspecified Keywords:
Cc: Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description

    if (is_full_screen && fs_screen_width) {
        w = fs_screen_width;
        h = fs_screen_height;
        fprintf(stderr,"1\n");
    } else if vp->width {
        calculate_display_rect(&rect, 0, 0, INT_MAX, vp->height, vp);
        w = rect.w;
        h = rect.h;
        fprintf(stderr,"2\n");
    } else if (!is_full_screen && screen_width && screen_height) {
        w = screen_width;
        h = screen_height;
        fprintf(stderr,"3\n");
    } else {
        w = 640;
        h = 480;
        fprintf(stderr,"4\n");
    }
    if (screen && is->width == screen->w && screen->w == w
       && is->height== screen->h && screen->h == h && !force_set_video_mode)
        return 0;

sometimes when I play a video at the beginning ffplay resizes window from 640x480 to actual
resolution of the video because code enters for first frame to "else" statement
(the rest of the 4 queued frames are displayed with correct size under (vp->width) statement),
so if possible I would like to see this unnecessary resize (flickering) for first frame removed.

this seems to remove (or reduce) the problem, but the first frame is not displayed at all
(so it fails for images)

display:
            /* display picture */
-            if (!display_disable && is->show_mode == SHOW_MODE_VIDEO)
-                video_display(is);

            pictq_next_picture(is);


+            if (!display_disable && is->show_mode == SHOW_MODE_VIDEO)
+                video_display(is);
            

            if (is->step && !is->paused)
                stream_toggle_pause(is);

No FFplay's output since it happens randomly with various video files
(sometimes easier to reproduce when -lowres option is enabled)

Attachments

fix-modeset-order.patch Download (639 bytes) - added by cus 4 months ago.

Change History

comment:1 Changed 4 months ago by ami_stuff

It also happens with image as an input when you press "f" to enter fullscreen mode and go back again pressing "f" to windowed mode.

comment:2 Changed 4 months ago by cehoyos

  • Component changed from undetermined to FFplay

Changed 4 months ago by cus

comment:3 follow-up: ↓ 4 Changed 4 months ago by cus

  • Owner set to cus
  • Status changed from new to open

Does the attached patch help for the original problem?

comment:4 in reply to: ↑ 3 Changed 4 months ago by ami_stuff

Replying to cus:

Does the attached patch help for the original problem?

yes your patch fixes the problem, thanks

comment:5 follow-up: ↓ 6 Changed 4 months ago by cehoyos

Is this problem still reproducible?

comment:6 in reply to: ↑ 5 Changed 3 months ago by ami_stuff

  • Status changed from open to closed
  • Resolution set to fixed

Replying to cehoyos:

Is this problem still reproducible?

I belive it's fixed by 4fd6e5af1e334875eca4f803bbcfac9219b0524a.

Note: See TracTickets for help on using tickets.