mpv-player / mpv

πŸŽ₯ Command line video player
https://mpv.io
Other
26.65k stars 2.83k forks source link

gpu-context waylandvk cannot sync to the display refresh rate #14434

Open spaceman7777 opened 4 days ago

spaceman7777 commented 4 days ago

mpv Information

mpv v0.38.0-548-g01330dba71 Copyright Β© 2000-2024 mpv/MPlayer/mplayer2 projects
libplacebo version: v7.349.0 (v7.349.0-rc1-3-g1fd3c7bd)
FFmpeg version: N-115975-g0c0e7ec81e
FFmpeg library versions:
   libavcodec      61.8.100
   libavdevice     61.2.100
   libavfilter     10.2.102
   libavformat     61.3.104
   libavutil       59.25.100
   libswresample   5.2.100
   libswscale      8.2.100

Other Information

I've been on an odyssey of desktop environments, display managers, drivers etc. for over a month now to fully fix frame stuttering in mpv, and have found several different states where it displays different kinds of issues, so I can't trace whether there was a wayland regression any further back before kde 6.

Right now, I'm running it with the x11vk gpu-context in a wayland session, which isn't ideal, as my environment supports 10-bit HDR, which isn't possible with the x11vk gpu-context, even thought the session has hdr enabled/shiny new explicit sync/hdmi_deepcolor. mpv at least reports that there are practically zero dropped/mistimed/delayed frames when I set it to x11vk, but I've actually seen it look smoother in another configuration (between the stutters that would occur regularly every 1-2 seconds).

Anyway. The ideal situation is that waylandvk works as well as, or better, than x11vk in a wayland session.

Reproduction Steps

The issue can be seen with the bare config of: mpv --no-config --fullscreen --vo=gpu-next --hwdec=auto-copy --gpu-context=waylandvk --video-sync=display-resample test.mkv

This causes dropped frames every second or two, and many, many delayed or mistimed frames. It is never able to fully reach up to the 119.88fps, usually missing by ~10+ fps when playing a 1080p video. If I dial up the settings with some filters or something, the fps decreases further (my standard setup, that runs matches the 119.88fps just fine gets stuck at around 80-90fps).

I'm running on a 119.88fps screen (LG B2 65). VRR/GSync is turned off. (Though I have tested with it on, and this issue still presented.)

When I use the following command, with vsync turned off, I am able to render at about 370fps, and it looks extremely smooth, albeit... in fast forward mpv --fullscreen --gpu-context=waylandvk --start=9:40 --wayland-disable-vsync=yes --video-sync=display-resample

Anyway, what this means is that I'm pretty sure there is an issue with the wayland vulkan vsync code. I've done some narrowing down of things, and my current guess as to the culprit lies in the following code, found at https://github.com/mpv-player/mpv/blob/master/video/out/wayland_common.c#L2947

void vo_wayland_wait_frame(struct vo_wayland_state *wl)
{
    int64_t vblank_time = 0;
    /* We need some vblank interval to use for the timeout in
     * this function. The order of preference of values to use is:
     * 1. vsync duration from presentation time
     * 2. refresh interval reported by presentation time
     * 3. refresh rate of the output reported by the compositor
     * 4. make up crap if vblank_time is still <= 0 (better than nothing) */

    if (wl->use_present && wl->present->head)
        vblank_time = wl->present->head->vsync_duration;

    if (vblank_time <= 0 && wl->refresh_interval > 0)
        vblank_time = wl->refresh_interval;

    if (vblank_time <= 0 && wl->current_output->refresh_rate > 0)
        vblank_time = 1e9 / wl->current_output->refresh_rate;

    // Ideally you should never reach this point.
    if (vblank_time <= 0)
        vblank_time = 1e9 / 60;

    // Completely arbitrary amount of additional time to wait.
    vblank_time += 0.05 * vblank_time;
    int64_t finish_time = mp_time_ns() + vblank_time;

    while (wl->frame_wait && finish_time > mp_time_ns()) {
        int64_t poll_time = finish_time - mp_time_ns();
        if (poll_time < 0) {
            poll_time = 0;
        }
        wayland_dispatch_events(wl, 1, poll_time);
    }

    /* If the compositor does not have presentation time, we cannot be sure
     * that this wait is accurate. Do a hacky block with wl_display_roundtrip. */
    if (!wl->use_present && !wl_display_get_error(wl->display))
        wl_display_roundtrip(wl->display);

    /* Only use this heuristic if the compositor doesn't support the suspended state. */
    if (wl->frame_wait && xdg_toplevel_get_version(wl->xdg_toplevel) < 6) {
        // Only consider consecutive missed callbacks.
        if (wl->timeout_count > 1) {
            wl->hidden = true;
            return;
        } else {
            wl->timeout_count += 1;
            return;
        }
    }

    wl->timeout_count = 0;
}

I think it's calculating the time vsync time incorrectly, and waiting an extra period of time correlated with the time it actually takes to render each frame. (As a guess) it should be calculating the finish time so that it is one frame's unit of time at 119.88Hz, rather than one frame's unit of time plus the time it took to render that frame (or some other value, or something else altogether.. just trying to give info that may be helpful).

Another place that might be worth checking is here, regarding the necessity of using mailbox swap mode rather than fifo. The assumption may not be true anymore, and may perhaps have changed as a result of the recent introduction of explicit sync for nvidia w/ kde 6.1 https://github.com/mpv-player/mpv/blob/4ec060f9465ad1b2151fdf36671681cd9900fc63/video/out/vulkan/context_wayland.c#L93

Please let me know if you have any questions, or if there are any other tests you're interesting in knowing the results of, I'm happy to assist in any way I can. This type of C application isn't something I tangle with often, but I understand the general outline of how the system works.

Expected Behavior

There shouldn't be the constant stream of delayed and mistimed frames being reported (the number flies up... dozen(s) per second thereabouts?)

The video should also be able to hit the display refresh rate of 119.88 when syncing to it via display-resample.

It should all be nicely synced to the display refresh rate.

Actual Behavior

Dozens of mistimed and delayed frames per second, in addition to dropped frames. The numbers for dropped, mistimed, and delayed frames increase dramatically if trying to play back a video with more intensive video processing stuff going on, like Anime4k filtering, etc.

Log File

The barebones debugging command: mpv --no-config --fullscreen --vo=gpu-next --hwdec=auto-copy --gpu-context=waylandvk --start=9:40 --video-sync=display-resample --gpu-debug test.mkv

New attempt:
● Video  --vid=1                    (hevc 3840x2160 23.976 fps) [default]
● Audio  --aid=1  --alang=ja        (eac3 6ch 48000 Hz) [default]
β—‹ Audio  --aid=2  --alang=en        (aac 2ch 48000 Hz)
β—‹ Subs   --sid=1  --slang=en        'Forced' (ass) [forced]
● Subs   --sid=2  --slang=en        (ass) [default]
β—‹ Subs   --sid=3  --slang=en        (subrip)
β—‹ Subs   --sid=4  --slang=en        (subrip)
β—‹ Subs   --sid=5  --slang=cmn-Hans  (subrip)
β—‹ Subs   --sid=6  --slang=cmn-Hans  (subrip)
β—‹ Subs   --sid=7  --slang=de        (ass)
β—‹ Subs   --sid=8  --slang=es-419    (ass)
β—‹ Subs   --sid=9  --slang=es        (ass)
β—‹ Subs   --sid=10 --slang=fr        (ass)
β—‹ Subs   --sid=11 --slang=hu        (subrip)
β—‹ Subs   --sid=12 --slang=id        (subrip)
β—‹ Subs   --sid=13 --slang=it        (ass)
β—‹ Subs   --sid=14 --slang=ja        'SDH' (subrip)
β—‹ Subs   --sid=15 --slang=ms        (subrip)
β—‹ Subs   --sid=16 --slang=pl        (ass)
β—‹ Subs   --sid=17 --slang=pt-BR     (ass)
β—‹ Subs   --sid=18 --slang=pt-PT     (ass)
β—‹ Subs   --sid=19 --slang=ru        (ass)
β—‹ Subs   --sid=20 --slang=th        (subrip)
[vo/gpu-next/libplacebo] Spent 1066.188 ms creating vulkan device (slow!)
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
Using hardware decoding (nvdec-copy).
AO: [pipewire] 48000Hz 5.1(side) 6ch floatp
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
VO: [gpu-next] 3840x2160 p010
AV: 00:09:39 / 02:01:25 (8%) A-V:  0.000 DS: 5/0
AV: 00:09:39 / 02:01:25 (8%) A-V: -0.042 DS: 5/0
AV: 00:09:40 / 02:01:25 (8%) A-V: -0.020 DS: 6.6667/0
AV: 00:09:40 / 02:01:25 (8%) A-V: -0.040 DS: 6.75/0
AV: 00:09:40 / 02:01:25 (8%) A-V: -0.040 DS: 6.75/1
AV: 00:09:40 / 02:01:25 (8%) A-V: -0.009 DS: 7.2/1
AV: 00:09:40 / 02:01:25 (8%) A-V: -0.051 DS: 6.8333/1
AV: 00:09:40 / 02:01:25 (8%) A-V:  0.028 DS: 7.4286/2
AV: 00:09:40 / 02:01:25 (8%) A-V: -0.039 DS: 6.75/2
AV: 00:09:40 / 02:01:25 (8%) A-V: -0.006 DS: 7/2
AV: 00:09:40 / 02:01:25 (8%) A-V: -0.006 DS: 7/3
AV: 00:09:40 / 02:01:25 (8%) A-V:  0.009 DS: 6.8/3
AV: 00:09:40 / 02:01:25 (8%) A-V:  0.019 DS: 6.6364/4
AV: 00:09:40 / 02:01:25 (8%) A-V:  0.011 DS: 6.5/4
AV: 00:09:40 / 02:01:25 (8%) A-V: -0.006 DS: 6.3846/4
AV: 00:09:40 / 02:01:25 (8%) A-V: -0.009 DS: 6.2857/5
AV: 00:09:40 / 02:01:25 (8%) A-V: -0.026 DS: 6.2/5
AV: 00:09:40 / 02:01:25 (8%) A-V: -0.010 DS: 6.3125/5
AV: 00:09:40 / 02:01:25 (8%) A-V: -0.010 DS: 6.3125/6
AV: 00:09:40 / 02:01:25 (8%) A-V: -0.005 DS: 6.2353/6
AV: 00:09:40 / 02:01:25 (8%) A-V: -0.022 DS: 6.1667/6
AV: 00:09:40 / 02:01:25 (8%) A-V:  0.007 DS: 6.2105/7
AV: 00:09:40 / 02:01:25 (8%) A-V:  0.010 DS: 6.15/8
AV: 00:09:40 / 02:01:25 (8%) A-V:  0.010 DS: 6.0952/8
AV: 00:09:40 / 02:01:25 (8%) A-V:  0.002 DS: 6.0455/8
AV: 00:09:40 / 02:01:25 (8%) A-V: -0.009 DS: 6/9
AV: 00:09:40 / 02:01:25 (8%) A-V: -0.017 DS: 5.9583/9
AV: 00:09:40 / 02:01:25 (8%) A-V: -0.043 DS: 5.92/9
AV: 00:09:40 / 02:01:25 (8%) A-V:  0.020 DS: 6.0769/10
AV: 00:09:41 / 02:01:25 (8%) A-V:  0.020 DS: 6.0769/10
AV: 00:09:41 / 02:01:25 (8%) A-V: -0.004 DS: 6.037/10
AV: 00:09:41 / 02:01:25 (8%) A-V:  0.007 DS: 6/11
AV: 00:09:41 / 02:01:25 (8%) A-V:  0.008 DS: 5.9655/11
AV: 00:09:41 / 02:01:25 (8%) A-V:  0.007 DS: 5.9333/11
AV: 00:09:41 / 02:01:25 (8%) A-V: -0.000 DS: 5.9032/12
AV: 00:09:41 / 02:01:25 (8%) A-V: -0.001 DS: 5.875/12
AV: 00:09:41 / 02:01:25 (8%) A-V: -0.001 DS: 5.8485/12
AV: 00:09:41 / 02:01:25 (8%) A-V: -0.012 DS: 5.8235/13
AV: 00:09:41 / 02:01:25 (8%) A-V: -0.022 DS: 5.8/13
AV: 00:09:41 / 02:01:25 (8%) A-V: -0.022 DS: 5.8333/13
AV: 00:09:41 / 02:01:25 (8%) A-V: -0.022 DS: 5.8333/14
AV: 00:09:41 / 02:01:25 (8%) A-V: -0.010 DS: 5.8649/14
AV: 00:09:41 / 02:01:25 (8%) A-V: -0.004 DS: 5.8421/15
AV: 00:09:41 / 02:01:25 (8%) A-V: -0.005 DS: 5.8205/15
AV: 00:09:41 / 02:01:25 (8%) A-V: -0.010 DS: 5.8/16
AV: 00:09:41 / 02:01:25 (8%) A-V: -0.026 DS: 5.7805/16
AV: 00:09:41 / 02:01:25 (8%) A-V:  0.007 DS: 5.8333/17
AV: 00:09:41 / 02:01:25 (8%) A-V:  0.008 DS: 5.814/17
AV: 00:09:41 / 02:01:25 (8%) A-V: -0.001 DS: 5.7955/18
AV: 00:09:41 / 02:01:25 (8%) A-V: -0.017 DS: 5.7778/18
AV: 00:09:41 / 02:01:25 (8%) A-V:  0.012 DS: 5.7609/19
AV: 00:09:41 / 02:01:25 (8%) A-V:  0.012 DS: 5.7447/19
AV: 00:09:41 / 02:01:25 (8%) A-V:  0.004 DS: 5.7292/19
AV: 00:09:41 / 02:01:25 (8%) A-V:  0.012 DS: 5.7143/20
AV: 00:09:41 / 02:01:25 (8%) A-V:  0.011 DS: 5.7/20
AV: 00:09:42 / 02:01:25 (8%) A-V:  0.012 DS: 5.6863/20
AV: 00:09:42 / 02:01:25 (8%) A-V: -0.005 DS: 5.6731/20
AV: 00:09:42 / 02:01:25 (8%) A-V: -0.007 DS: 5.6604/21
AV: 00:09:42 / 02:01:25 (8%) A-V: -0.024 DS: 5.6481/21
AV: 00:09:42 / 02:01:25 (8%) A-V: -0.023 DS: 5.6727/21
AV: 00:09:42 / 02:01:25 (8%) A-V: -0.023 DS: 5.6727/22
AV: 00:09:42 / 02:01:25 (8%) A-V:  0.037 DS: 5.6964/22
AV: 00:09:42 / 02:01:25 (8%) A-V: -0.001 DS: 5.614/23
AV: 00:09:42 / 02:01:25 (8%) A-V: -0.000 DS: 5.6034/23
AV: 00:09:42 / 02:01:25 (8%) A-V: -0.001 DS: 5.5932/23
AV: 00:09:42 / 02:01:25 (8%) A-V: -0.001 DS: 5.5833/23
AV: 00:09:42 / 02:01:25 (8%) A-V: -0.001 DS: 5.5738/23
AV: 00:09:42 / 02:01:25 (8%) A-V:  0.009 DS: 5.5645/24
AV: 00:09:42 / 02:01:25 (8%) A-V:  0.009 DS: 5.5556/24
AV: 00:09:42 / 02:01:25 (8%) A-V:  0.003 DS: 5.5469/25
AV: 00:09:42 / 02:01:25 (8%) A-V: -0.013 DS: 5.5385/25
AV: 00:09:42 / 02:01:25 (8%) A-V: -0.010 DS: 5.5303/26
AV: 00:09:42 / 02:01:25 (8%) A-V: -0.010 DS: 5.5224/26
AV: 00:09:42 / 02:01:25 (8%) A-V: -0.010 DS: 5.5147/26
AV: 00:09:42 / 02:01:25 (8%) A-V: -0.010 DS: 5.5072/26
AV: 00:09:42 / 02:01:25 (8%) A-V: -0.018 DS: 5.5/26
AV: 00:09:42 / 02:01:25 (8%) A-V: -0.006 DS: 5.493/27
AV: 00:09:42 / 02:01:25 (8%) A-V: -0.005 DS: 5.4861/27
AV: 00:09:42 / 02:01:25 (8%) A-V: -0.013 DS: 5.4795/28
AV: 00:09:42 / 02:01:25 (8%) A-V: -0.013 DS: 5.473/28
AV: 00:09:43 / 02:01:25 (8%) A-V: -0.017 DS: 5.4667/29
AV: 00:09:43 / 02:01:25 (8%) A-V: -0.018 DS: 5.4605/29
AV: 00:09:43 / 02:01:25 (8%) A-V: -0.025 DS: 5.4545/30
AV: 00:09:43 / 02:01:25 (8%) A-V: -0.008 DS: 5.4744/30
AV: 00:09:43 / 02:01:25 (8%) A-V: -0.008 DS: 5.4744/31
AV: 00:09:43 / 02:01:25 (8%) A-V: -0.001 DS: 5.4684/31
AV: 00:09:43 / 02:01:25 (8%) A-V: -0.018 DS: 5.4625/31
AV: 00:09:43 / 02:01:25 (8%) A-V:  0.004 DS: 5.4568/32
AV: 00:09:43 / 02:01:25 (8%) A-V:  0.005 DS: 5.4512/32
AV: 00:09:43 / 02:01:25 (8%) A-V: -0.000 DS: 5.4458/33
AV: 00:09:43 / 02:01:25 (8%) A-V: -0.009 DS: 5.4405/33
AV: 00:09:43 / 02:01:25 (8%) A-V: -0.008 DS: 5.4353/34
AV: 00:09:43 / 02:01:25 (8%) A-V: -0.007 DS: 5.4302/34
AV: 00:09:43 / 02:01:25 (8%) A-V: -0.007 DS: 5.4253/34
AV: 00:09:43 / 02:01:25 (8%) A-V: -0.007 DS: 5.4205/34
AV: 00:09:43 / 02:01:25 (8%) A-V: -0.017 DS: 5.4157/35
AV: 00:09:43 / 02:01:25 (8%) A-V: -0.034 DS: 5.4111/35
AV: 00:09:43 / 02:01:25 (8%) A-V: -0.017 DS: 5.4505/35
AV: 00:09:43 / 02:01:25 (8%) A-V: -0.017 DS: 5.4505/36
AV: 00:09:43 / 02:01:25 (8%) A-V: -0.009 DS: 5.4457/36
AV: 00:09:43 / 02:01:25 (8%) A-V:  0.003 DS: 5.4409/37
AV: 00:09:43 / 02:01:25 (8%) A-V: -0.014 DS: 5.4362/37
AV: 00:09:43 / 02:01:25 (8%) A-V: -0.014 DS: 5.4316/37
AV: 00:09:43 / 02:01:25 (8%) A-V: -0.017 DS: 5.4271/38
AV: 00:09:43 / 02:01:25 (8%) A-V: -0.025 DS: 5.4227/38
AV: 00:09:44 / 02:01:25 (8%) A-V:  0.008 DS: 5.449/39
AV: 00:09:44 / 02:01:25 (8%) A-V: -0.008 DS: 5.4444/39
AV: 00:09:44 / 02:01:25 (8%) A-V:  0.008 DS: 5.44/40
AV: 00:09:44 / 02:01:25 (8%) A-V:  0.009 DS: 5.44/40
AV: 00:09:44 / 02:01:25 (8%) A-V:  0.008 DS: 5.44/40
AV: 00:09:44 / 02:01:25 (8%) A-V:  0.009 DS: 5.39/40
AV: 00:09:44 / 02:01:25 (8%) A-V:  0.009 DS: 5.37/40
AV: 00:09:44 / 02:01:25 (8%) A-V: -0.000 DS: 5.33/41
AV: 00:09:44 / 02:01:25 (8%) A-V: -0.008 DS: 5.33/41
AV: 00:09:44 / 02:01:25 (8%) A-V: -0.009 DS: 5.27/42
AV: 00:09:44 / 02:01:25 (8%) A-V: -0.009 DS: 5.3/42
AV: 00:09:44 / 02:01:25 (8%) A-V: -0.009 DS: 5.26/42
AV: 00:09:44 / 02:01:25 (8%) A-V: -0.008 DS: 5.26/42
AV: 00:09:44 / 02:01:25 (8%) A-V: -0.017 DS: 5.26/42
AV: 00:09:44 / 02:01:25 (8%) A-V: -0.034 DS: 5.26/43
AV: 00:09:44 / 02:01:25 (8%) A-V:  0.000 DS: 5.3/43
AV: 00:09:44 / 02:01:25 (8%) A-V:  0.000 DS: 5.3/44
AV: 00:09:44 / 02:01:25 (8%) A-V:  0.003 DS: 5.3/44
AV: 00:09:44 / 02:01:25 (8%) A-V: -0.000 DS: 5.3/45
AV: 00:09:44 / 02:01:25 (8%) A-V: -0.001 DS: 5.27/45
AV: 00:09:44 / 02:01:25 (8%) A-V:  0.000 DS: 5.27/45
AV: 00:09:44 / 02:01:25 (8%) A-V: -0.000 DS: 5.25/45
AV: 00:09:44 / 02:01:25 (8%) A-V:  0.001 DS: 5.25/45
AV: 00:09:44 / 02:01:25 (8%) A-V: -0.006 DS: 5.25/46
AV: 00:09:45 / 02:01:25 (8%) A-V: -0.007 DS: 5.25/46
AV: 00:09:45 / 02:01:25 (8%) A-V:  0.001 DS: 5.25/47
AV: 00:09:45 / 02:01:25 (8%) A-V:  0.000 DS: 5.25/47
AV: 00:09:45 / 02:01:25 (8%) A-V:  0.000 DS: 5.2/47
AV: 00:09:45 / 02:01:25 (8%) A-V: -0.006 DS: 5.2/48
AV: 00:09:45 / 02:01:25 (8%) A-V:  0.000 DS: 5.2/49
AV: 00:09:45 / 02:01:25 (8%) A-V: -0.007 DS: 5.2/49
AV: 00:09:45 / 02:01:25 (8%) A-V: -0.012 DS: 5.2/50
AV: 00:09:45 / 02:01:25 (8%) A-V: -0.021 DS: 5.2/50
AV: 00:09:45 / 02:01:25 (8%) A-V: -0.013 DS: 5.22/50
AV: 00:09:45 / 02:01:25 (8%) A-V: -0.032 DS: 5.22/51
AV: 00:09:45 / 02:01:25 (8%) A-V: -0.016 DS: 5.25/51
AV: 00:09:45 / 02:01:25 (8%) A-V: -0.016 DS: 5.25/52
AV: 00:09:45 / 02:01:25 (8%) A-V:  0.004 DS: 5.23/52
AV: 00:09:45 / 02:01:25 (8%) A-V: -0.012 DS: 5.21/52
AV: 00:09:45 / 02:01:25 (8%) A-V:  0.007 DS: 5.21/53
AV: 00:09:45 / 02:01:25 (8%) A-V: -0.009 DS: 5.21/53
AV: 00:09:45 / 02:01:25 (8%) A-V:  0.001 DS: 5.21/54
AV: 00:09:45 / 02:01:25 (8%) A-V:  0.001 DS: 5.18/54
AV: 00:09:45 / 02:01:25 (8%) A-V:  0.002 DS: 5.18/54
AV: 00:09:45 / 02:01:25 (8%) A-V: -0.007 DS: 5.18/55
AV: 00:09:46 / 02:01:25 (8%) A-V: -0.007 DS: 5.18/55
AV: 00:09:46 / 02:01:25 (8%) A-V:  0.002 DS: 5.18/56
AV: 00:09:46 / 02:01:25 (8%) A-V: -0.015 DS: 5.18/56
AV: 00:09:46 / 02:01:25 (8%) A-V: -0.032 DS: 5.18/56
AV: 00:09:46 / 02:01:25 (8%) A-V:  0.004 DS: 5.21/57
AV: 00:09:46 / 02:01:25 (8%) A-V:  0.011 DS: 5.21/58
AV: 00:09:46 / 02:01:25 (8%) A-V: -0.006 DS: 5.21/58
AV: 00:09:46 / 02:01:25 (8%) A-V: -0.024 DS: 5.21/58
AV: 00:09:46 / 02:01:25 (8%) A-V:  0.019 DS: 5.23/59
AV: 00:09:46 / 02:01:25 (8%) A-V:  0.002 DS: 5.21/59
AV: 00:09:46 / 02:01:25 (8%) A-V:  0.012 DS: 5.19/60
AV: 00:09:46 / 02:01:25 (8%) A-V:  0.012 DS: 5.23/60
AV: 00:09:46 / 02:01:25 (8%) A-V:  0.004 DS: 5.23/60
AV: 00:09:46 / 02:01:25 (8%) A-V: -0.004 DS: 5.23/61
AV: 00:09:46 / 02:01:25 (8%) A-V:  0.002 DS: 5.23/62
AV: 00:09:46 / 02:01:25 (8%) A-V: -0.007 DS: 5.23/63
AV: 00:09:46 / 02:01:25 (8%) A-V: -0.008 DS: 5.23/63
AV: 00:09:46 / 02:01:25 (8%) A-V: -0.004 DS: 5.23/64
AV: 00:09:46 / 02:01:25 (8%) A-V: -0.021 DS: 5.23/64
AV: 00:09:46 / 02:01:25 (8%) A-V: -0.013 DS: 5.25/64
AV: 00:09:46 / 02:01:25 (8%) A-V: -0.013 DS: 5.25/65
AV: 00:09:46 / 02:01:25 (8%) A-V: -0.006 DS: 5.25/65
AV: 00:09:46 / 02:01:25 (8%) A-V: -0.007 DS: 5.25/65
AV: 00:09:47 / 02:01:25 (8%) A-V: -0.007 DS: 5.25/65
AV: 00:09:47 / 02:01:25 (8%) A-V: -0.006 DS: 5.25/65
AV: 00:09:47 / 02:01:25 (8%) A-V: -0.014 DS: 5.25/66
AV: 00:09:47 / 02:01:25 (8%) A-V: -0.015 DS: 5.25/66
AV: 00:09:47 / 02:01:25 (8%) A-V: -0.007 DS: 5.25/67
AV: 00:09:47 / 02:01:25 (8%) A-V: -0.006 DS: 5.25/67
AV: 00:09:47 / 02:01:25 (8%) A-V: -0.023 DS: 5.25/67
AV: 00:09:47 / 02:01:25 (8%) A-V:  0.010 DS: 5.27/68
AV: 00:09:47 / 02:01:25 (8%) A-V: -0.005 DS: 5.25/68
AV: 00:09:47 / 02:01:25 (8%) A-V:  0.002 DS: 5.25/69
AV: 00:09:47 / 02:01:25 (8%) A-V: -0.015 DS: 5.25/69
AV: 00:09:47 / 02:01:25 (8%) A-V: -0.007 DS: 5.25/70
AV: 00:09:47 / 02:01:25 (8%) A-V: -0.006 DS: 5.25/70
AV: 00:09:47 / 02:01:25 (8%) A-V:  0.002 DS: 5.25/71
AV: 00:09:47 / 02:01:25 (8%) A-V:  0.003 DS: 5.25/71
AV: 00:09:47 / 02:01:25 (8%) A-V: -0.006 DS: 5.25/72
AV: 00:09:47 / 02:01:25 (8%) A-V: -0.014 DS: 5.25/72
AV: 00:09:47 / 02:01:25 (8%) A-V: -0.014 DS: 5.25/73
AV: 00:09:47 / 02:01:25 (8%) A-V: -0.031 DS: 5.21/73
AV: 00:09:47 / 02:01:25 (8%) A-V:  0.011 DS: 5.24/74
AV: 00:09:47 / 02:01:25 (8%) A-V: -0.005 DS: 5.24/74
AV: 00:09:48 / 02:01:25 (8%) A-V:  0.011 DS: 5.24/75
AV: 00:09:48 / 02:01:25 (8%) A-V:  0.012 DS: 5.24/75
AV: 00:09:48 / 02:01:25 (8%) A-V:  0.011 DS: 5.24/75
AV: 00:09:48 / 02:01:25 (8%) A-V:  0.011 DS: 5.21/75
AV: 00:09:48 / 02:01:25 (8%) A-V:  0.012 DS: 5.21/75
AV: 00:09:48 / 02:01:25 (8%) A-V:  0.004 DS: 5.21/76
AV: 00:09:48 / 02:01:25 (8%) A-V:  0.011 DS: 5.21/77
AV: 00:09:48 / 02:01:25 (8%) A-V:  0.010 DS: 5.21/77
AV: 00:09:48 / 02:01:25 (8%) A-V:  0.011 DS: 5.21/77
AV: 00:09:48 / 02:01:25 (8%) A-V:  0.010 DS: 5.21/77
AV: 00:09:48 / 02:01:25 (8%) A-V:  0.011 DS: 5.21/77
AV: 00:09:48 / 02:01:25 (8%) A-V:  0.010 DS: 5.21/77
AV: 00:09:48 / 02:01:25 (8%) A-V:  0.002 DS: 5.17/77
AV: 00:09:48 / 02:01:25 (8%) A-V:  0.002 DS: 5.17/78
AV: 00:09:49 / 02:01:25 (8%) A-V:  0.002 DS: 5.17/78
AV: 00:09:49 / 02:01:25 (8%) A-V:  0.001 DS: 5.17/78
AV: 00:09:49 / 02:01:25 (8%) A-V:  0.002 DS: 5.17/78
AV: 00:09:49 / 02:01:25 (8%) A-V:  0.015 DS: 5.17/79
AV: 00:09:49 / 02:01:25 (8%) A-V:  0.010 DS: 5.17/80
AV: 00:09:49 / 02:01:25 (8%) A-V:  0.009 DS: 5.17/80
AV: 00:09:49 / 02:01:25 (8%) A-V:  0.010 DS: 5.17/80
AV: 00:09:49 / 02:01:25 (8%) A-V:  0.009 DS: 5.17/81
AV: 00:09:49 / 02:01:25 (8%) A-V:  0.008 DS: 5.17/81
AV: 00:09:49 / 02:01:25 (8%) A-V:  0.003 DS: 5.15/82
AV: 00:09:49 / 02:01:25 (8%) A-V:  0.002 DS: 5.12/82
AV: 00:09:49 / 02:01:25 (8%) A-V:  0.003 DS: 5.12/82
AV: 00:09:49 / 02:01:25 (8%) A-V:  0.002 DS: 5.12/82
AV: 00:09:49 / 02:01:25 (8%) A-V:  0.009 DS: 5.12/83
AV: 00:09:50 / 02:01:25 (8%) A-V:  0.009 DS: 5.12/83
AV: 00:09:50 / 02:01:25 (8%) A-V:  0.008 DS: 5.12/83
AV: 00:09:50 / 02:01:25 (8%) A-V:  0.009 DS: 5.12/83
AV: 00:09:50 / 02:01:25 (8%) A-V:  0.021 DS: 5.12/84
AV: 00:09:50 / 02:01:25 (8%) A-V:  0.004 DS: 5.1/84
AV: 00:09:50 / 02:01:25 (8%) A-V: -0.008 DS: 5.07/85
AV: 00:09:50 / 02:01:25 (8%) A-V: -0.009 DS: 5.07/85
AV: 00:09:50 / 02:01:25 (8%) A-V: -0.017 DS: 5.07/86
AV: 00:09:50 / 02:01:25 (8%) A-V: -0.017 DS: 5.05/86
AV: 00:09:50 / 02:01:25 (8%) A-V: -0.025 DS: 5.05/87
AV: 00:09:50 / 02:01:25 (8%) A-V: -0.000 DS: 5.08/87
AV: 00:09:50 / 02:01:25 (8%) A-V: -0.000 DS: 5.08/88
AV: 00:09:50 / 02:01:25 (8%) A-V: -0.008 DS: 5.08/88
AV: 00:09:50 / 02:01:25 (8%) A-V:  0.000 DS: 5.08/89
AV: 00:09:50 / 02:01:25 (8%) A-V: -0.008 DS: 5.08/90
AV: 00:09:50 / 02:01:25 (8%) A-V: -0.009 DS: 5.08/90
AV: 00:09:50 / 02:01:25 (8%) A-V: -0.008 DS: 5.08/90
AV: 00:09:51 / 02:01:25 (8%) A-V: -0.008 DS: 5.08/90
AV: 00:09:51 / 02:01:25 (8%) A-V: -0.008 DS: 5.06/90
AV: 00:09:51 / 02:01:25 (8%) A-V: -0.016 DS: 5.06/91
AV: 00:09:51 / 02:01:25 (8%) A-V: -0.024 DS: 5.06/92
AV: 00:09:51 / 02:01:25 (8%) A-V: -0.008 DS: 5.06/92
AV: 00:09:51 / 02:01:25 (8%) A-V: -0.008 DS: 5.06/93
AV: 00:09:51 / 02:01:25 (8%) A-V: -0.025 DS: 5.06/93
AV: 00:09:51 / 02:01:25 (8%) A-V:  0.001 DS: 5.08/94
AV: 00:09:51 / 02:01:25 (8%) A-V:  0.010 DS: 5.08/95
AV: 00:09:51 / 02:01:25 (8%) A-V:  0.009 DS: 5.08/96
AV: 00:09:51 / 02:01:25 (8%) A-V: -0.007 DS: 5.08/96
AV: 00:09:51 / 02:01:25 (8%) A-V: -0.025 DS: 5.08/96
AV: 00:09:51 / 02:01:25 (8%) A-V:  0.019 DS: 5.1/97
AV: 00:09:51 / 02:01:25 (8%) A-V:  0.019 DS: 5.1/98
AV: 00:09:51 / 02:01:25 (8%) A-V:  0.018 DS: 5.1/98
AV: 00:09:52 / 02:01:25 (8%) A-V:  0.018 DS: 5.1/99
AV: 00:09:52 / 02:01:25 (8%) A-V:  0.035 DS: 5.1/99
AV: 00:09:52 / 02:01:25 (8%) A-V:  0.002 DS: 5.06/99
AV: 00:09:52 / 02:01:25 (8%) A-V:  0.002 DS: 5.03/99
AV: 00:09:52 / 02:01:25 (8%) A-V:  0.017 DS: 5.03/100
AV: 00:09:52 / 02:01:25 (8%) A-V:  0.018 DS: 5.03/100
AV: 00:09:52 / 02:01:25 (8%) A-V:  0.011 DS: 5.03/101
AV: 00:09:52 / 02:01:25 (8%) A-V: -0.006 DS: 5.03/101
AV: 00:09:52 / 02:01:25 (8%) A-V:  0.026 DS: 5.03/102
AV: 00:09:52 / 02:01:25 (8%) A-V:  0.001 DS: 5/102
AV: 00:09:52 / 02:01:25 (8%) A-V:  0.017 DS: 5/103
AV: 00:09:52 / 02:01:25 (8%) A-V:  0.018 DS: 5/103
AV: 00:09:52 / 02:01:25 (8%) A-V:  0.009 DS: 5/104
AV: 00:09:52 / 02:01:25 (8%) A-V: -0.007 DS: 5/104
AV: 00:09:52 / 02:01:25 (8%) A-V: -0.008 DS: 5/104
AV: 00:09:52 / 02:01:25 (8%) A-V: -0.008 DS: 5/105
AV: 00:09:52 / 02:01:25 (8%) A-V: -0.025 DS: 5/105
AV: 00:09:52 / 02:01:25 (8%) A-V:  0.036 DS: 5.03/106
AV: 00:09:52 / 02:01:25 (8%) A-V: -0.014 DS: 4.99/106
AV: 00:09:52 / 02:01:25 (8%) A-V: -0.015 DS: 4.99/106
AV: 00:09:52 / 02:01:25 (8%) A-V: -0.015 DS: 4.99/107
AV: 00:09:52 / 02:01:25 (8%) A-V: -0.016 DS: 4.99/107
AV: 00:09:52 / 02:01:25 (8%) A-V: -0.033 DS: 4.99/107
AV: 00:09:53 / 02:01:25 (8%) A-V:  0.035 DS: 5.02/108
AV: 00:09:53 / 02:01:25 (8%) A-V: -0.030 DS: 4.98/108
AV: 00:09:53 / 02:01:25 (8%) A-V: -0.006 DS: 5.01/108
AV: 00:09:53 / 02:01:25 (8%) A-V: -0.006 DS: 5.01/109
AV: 00:09:53 / 02:01:25 (8%) A-V:  0.017 DS: 5.01/109
AV: 00:09:53 / 02:01:25 (8%) A-V:  0.017 DS: 5.01/110
AV: 00:09:53 / 02:01:25 (8%) A-V:  0.035 DS: 5.01/110
AV: 00:09:53 / 02:01:25 (8%) A-V: -0.006 DS: 4.97/110
AV: 00:09:53 / 02:01:25 (8%) A-V: -0.007 DS: 4.97/110
AV: 00:09:53 / 02:01:25 (8%) A-V:  0.025 DS: 4.97/111
AV: 00:09:53 / 02:01:25 (8%) A-V: -0.024 DS: 4.95/111
AV: 00:09:53 / 02:01:25 (8%) A-V: -0.008 DS: 4.97/111
AV: 00:09:53 / 02:01:25 (8%) A-V: -0.008 DS: 4.97/112
AV: 00:09:53 / 02:01:25 (8%) A-V:  0.034 DS: 4.97/112
AV: 00:09:53 / 02:01:25 (8%) A-V:  0.001 DS: 4.93/112
AV: 00:09:53 / 02:01:25 (8%) A-V:  0.002 DS: 4.93/112
AV: 00:09:53 / 02:01:25 (8%) A-V:  0.001 DS: 4.93/112
AV: 00:09:53 / 02:01:25 (8%) A-V:  0.001 DS: 4.93/113
AV: 00:09:53 / 02:01:25 (8%) A-V:  0.009 DS: 4.93/113
AV: 00:09:53 / 02:01:25 (8%) A-V:  0.026 DS: 4.93/114
AV: 00:09:53 / 02:01:25 (8%) A-V:  0.001 DS: 4.9/114
AV: 00:09:53 / 02:01:25 (8%) A-V:  0.017 DS: 4.9/115
AV: 00:09:53 / 02:01:25 (8%) A-V:  0.018 DS: 4.9/115
AV: 00:09:53 / 02:01:25 (8%) A-V:  0.018 DS: 4.9/116
AV: 00:09:53 / 02:01:25 (8%) A-V:  0.043 DS: 4.9/117
AV: 00:09:53 / 02:01:25 (8%) A-V: -0.015 DS: 4.85/117
AV: 00:09:53 / 02:01:25 (8%) A-V: -0.016 DS: 4.85/117 Dropped: 1
AV: 00:09:54 / 02:01:25 (8%) A-V: -0.016 DS: 4.85/117 Dropped: 1
AV: 00:09:54 / 02:01:25 (8%) A-V:  0.001 DS: 4.85/118 Dropped: 1
AV: 00:09:54 / 02:01:25 (8%) A-V: -0.015 DS: 4.85/118 Dropped: 1
AV: 00:09:54 / 02:01:25 (8%) A-V:  0.026 DS: 4.85/119 Dropped: 1
AV: 00:09:54 / 02:01:25 (8%) A-V: -0.008 DS: 4.82/119 Dropped: 1
AV: 00:09:54 / 02:01:25 (8%) A-V: -0.007 DS: 4.82/119 Dropped: 1
AV: 00:09:54 / 02:01:25 (8%) A-V:  0.028 DS: 4.82/120 Dropped: 1
AV: 00:09:54 / 02:01:25 (8%) A-V: -0.005 DS: 4.79/120 Dropped: 1
AV: 00:09:54 / 02:01:25 (8%) A-V: -0.013 DS: 4.79/120 Dropped: 1
AV: 00:09:54 / 02:01:25 (8%) A-V: -0.008 DS: 4.79/121 Dropped: 1
AV: 00:09:54 / 02:01:25 (8%) A-V:  0.000 DS: 4.81/122 Dropped: 1
AV: 00:09:54 / 02:01:25 (8%) A-V: -0.015 DS: 4.81/122 Dropped: 1
AV: 00:09:54 / 02:01:25 (8%) A-V: -0.024 DS: 4.81/122 Dropped: 1
AV: 00:09:54 / 02:01:25 (8%) A-V:  0.018 DS: 4.83/123 Dropped: 1
AV: 00:09:54 / 02:01:25 (8%) A-V:  0.011 DS: 4.83/123 Dropped: 1
AV: 00:09:54 / 02:01:25 (8%) A-V:  0.001 DS: 4.83/124 Dropped: 1
AV: 00:09:54 / 02:01:25 (8%) A-V:  0.000 DS: 4.83/124 Dropped: 1
AV: 00:09:54 / 02:01:25 (8%) A-V:  0.000 DS: 4.8/125 Dropped: 1
AV: 00:09:54 / 02:01:25 (8%) A-V: -0.016 DS: 4.8/125 Dropped: 1
AV: 00:09:54 / 02:01:25 (8%) A-V: -0.033 DS: 4.8/125 Dropped: 1
AV: 00:09:54 / 02:01:25 (8%) A-V:  0.025 DS: 4.84/126 Dropped: 1
AV: 00:09:54 / 02:01:25 (8%) A-V: -0.032 DS: 4.82/126 Dropped: 1
AV: 00:09:54 / 02:01:25 (8%) A-V: -0.017 DS: 4.85/126 Dropped: 1
AV: 00:09:55 / 02:01:25 (8%) A-V: -0.017 DS: 4.85/127 Dropped: 1
AV: 00:09:55 / 02:01:25 (8%) A-V:  0.010 DS: 4.85/127 Dropped: 1
AV: 00:09:55 / 02:01:25 (8%) A-V: -0.006 DS: 4.85/127 Dropped: 1
AV: 00:09:55 / 02:01:25 (8%) A-V:  0.009 DS: 4.85/128 Dropped: 1
AV: 00:09:55 / 02:01:25 (8%) A-V: -0.008 DS: 4.85/128 Dropped: 1
AV: 00:09:55 / 02:01:25 (8%) A-V: -0.025 DS: 4.85/128 Dropped: 1
AV: 00:09:55 / 02:01:25 (8%) A-V:  0.042 DS: 4.88/129 Dropped: 1
AV: 00:09:55 / 02:01:25 (8%) A-V:  0.001 DS: 4.83/129 Dropped: 1
AV: 00:09:55 / 02:01:25 (8%) A-V:  0.009 DS: 4.83/130 Dropped: 2
AV: 00:09:55 / 02:01:25 (8%) A-V: -0.008 DS: 4.83/130 Dropped: 2
AV: 00:09:55 / 02:01:25 (8%) A-V:  0.016 DS: 4.83/131 Dropped: 2
AV: 00:09:55 / 02:01:25 (8%) A-V:  0.017 DS: 4.83/131 Dropped: 2
AV: 00:09:55 / 02:01:25 (8%) A-V:  0.026 DS: 4.83/132 Dropped: 2
AV: 00:09:55 / 02:01:25 (8%) A-V:  0.000 DS: 4.8/132 Dropped: 2
AV: 00:09:55 / 02:01:25 (8%) A-V:  0.018 DS: 4.78/133 Dropped: 2
AV: 00:09:55 / 02:01:25 (8%) A-V:  0.017 DS: 4.78/133 Dropped: 2
AV: 00:09:55 / 02:01:25 (8%) A-V:  0.034 DS: 4.78/134 Dropped: 2
AV: 00:09:55 / 02:01:25 (8%) A-V: -0.017 DS: 4.72/134 Dropped: 2
AV: 00:09:55 / 02:01:25 (8%) A-V: -0.006 DS: 4.72/135 Dropped: 2
AV: 00:09:55 / 02:01:25 (8%) A-V: -0.023 DS: 4.72/135 Dropped: 2
AV: 00:09:55 / 02:01:25 (8%) A-V: -0.022 DS: 4.74/135 Dropped: 2
AV: 00:09:55 / 02:01:25 (8%) A-V: -0.022 DS: 4.74/136 Dropped: 2
AV: 00:09:55 / 02:01:25 (8%) A-V:  0.025 DS: 4.76/136 Dropped: 2
AV: 00:09:56 / 02:01:25 (8%) A-V:  0.025 DS: 4.76/137 Dropped: 2
AV: 00:09:56 / 02:01:25 (8%) A-V:  0.017 DS: 4.74/137 Dropped: 2
AV: 00:09:56 / 02:01:25 (8%) A-V:  0.017 DS: 4.72/137 Dropped: 2
AV: 00:09:56 / 02:01:25 (8%) A-V: -0.000 DS: 4.72/137 Dropped: 2
AV: 00:09:56 / 02:01:25 (8%) A-V:  0.009 DS: 4.76/138 Dropped: 2
AV: 00:09:56 / 02:01:25 (8%) A-V:  0.025 DS: 4.76/139 Dropped: 2
AV: 00:09:56 / 02:01:25 (8%) A-V: -0.009 DS: 4.73/139 Dropped: 2
AV: 00:09:56 / 02:01:25 (8%) A-V: -0.017 DS: 4.73/139 Dropped: 2
AV: 00:09:56 / 02:01:25 (8%) A-V: -0.009 DS: 4.73/140 Dropped: 2
AV: 00:09:56 / 02:01:25 (8%) A-V: -0.009 DS: 4.73/141 Dropped: 2
AV: 00:09:56 / 02:01:25 (8%) A-V: -0.008 DS: 4.73/141 Dropped: 2
AV: 00:09:56 / 02:01:25 (8%) A-V: -0.000 DS: 4.76/142 Dropped: 2
AV: 00:09:56 / 02:01:25 (8%) A-V: -0.001 DS: 4.76/142 Dropped: 2
AV: 00:09:56 / 02:01:25 (8%) A-V:  0.000 DS: 4.76/142 Dropped: 2
AV: 00:09:56 / 02:01:25 (8%) A-V: -0.000 DS: 4.76/142 Dropped: 2
AV: 00:09:56 / 02:01:25 (8%) A-V: -0.001 DS: 4.76/142 Dropped: 2
AV: 00:09:56 / 02:01:25 (8%) A-V:  0.000 DS: 4.76/142 Dropped: 2
AV: 00:09:56 / 02:01:25 (8%) A-V: -0.000 DS: 4.76/142 Dropped: 2
AV: 00:09:56 / 02:01:25 (8%) A-V:  0.008 DS: 4.76/143 Dropped: 2
AV: 00:09:56 / 02:01:25 (8%) A-V:  0.009 DS: 4.76/143 Dropped: 2
AV: 00:09:56 / 02:01:25 (8%) A-V:  0.009 DS: 4.73/144 Dropped: 2
AV: 00:09:57 / 02:01:25 (8%) A-V:  0.009 DS: 4.77/144 Dropped: 2
AV: 00:09:57 / 02:01:25 (8%) A-V:  0.008 DS: 4.74/144 Dropped: 2
AV: 00:09:57 / 02:01:25 (8%) A-V:  0.009 DS: 4.78/144 Dropped: 2
AV: 00:09:57 / 02:01:25 (8%) A-V:  0.009 DS: 4.75/144 Dropped: 2
AV: 00:09:57 / 02:01:25 (8%) A-V:  0.016 DS: 4.75/145 Dropped: 2
AV: 00:09:57 / 02:01:25 (8%) A-V:  0.000 DS: 4.75/145 Dropped: 2
AV: 00:09:57 / 02:01:25 (8%) A-V:  0.008 DS: 4.79/146 Dropped: 2
AV: 00:09:57 / 02:01:25 (8%) A-V:  0.008 DS: 4.81/146 Dropped: 2
AV: 00:09:57 / 02:01:25 (8%) A-V:  0.008 DS: 4.79/146 Dropped: 2
AV: 00:09:57 / 02:01:25 (8%) A-V:  0.008 DS: 4.79/147 Dropped: 2
AV: 00:09:57 / 02:01:25 (8%) A-V:  0.008 DS: 4.83/147 Dropped: 2
AV: 00:09:57 / 02:01:25 (8%) A-V:  0.021 DS: 4.83/148 Dropped: 2
AV: 00:09:57 / 02:01:25 (8%) A-V:  0.004 DS: 4.81/148 Dropped: 2
AV: 00:09:57 / 02:01:25 (8%) A-V: -0.013 DS: 4.81/148 Dropped: 2
AV: 00:09:57 / 02:01:25 (8%) A-V: -0.001 DS: 4.81/149 Dropped: 2
AV: 00:09:57 / 02:01:25 (8%) A-V: -0.001 DS: 4.84/149 Dropped: 2
AV: 00:09:58 / 02:01:25 (8%) A-V: -0.001 DS: 4.84/149 Dropped: 2
AV: 00:09:58 / 02:01:25 (8%) A-V: -0.000 DS: 4.84/149 Dropped: 2
AV: 00:09:58 / 02:01:25 (8%) A-V: -0.000 DS: 4.89/149 Dropped: 2
AV: 00:09:58 / 02:01:25 (8%) A-V: -0.017 DS: 4.89/149 Dropped: 2
AV: 00:09:58 / 02:01:25 (8%) A-V: -0.016 DS: 4.89/150 Dropped: 2
AV: 00:09:58 / 02:01:25 (8%) A-V: -0.015 DS: 4.89/150 Dropped: 2

Sample Files

No response

I carefully read all instruction and confirm that I did the following:

Dudemanguy commented 4 days ago

What happens with mpv --no-config --fullscreen --gpu-context=waylandvk --wayland-disable-vsync=yes --video-sync=display-resample --vulkan-swap-mode=fifo?

spaceman7777 commented 4 days ago

What happens with mpv --no-config --fullscreen --gpu-context=waylandvk --wayland-disable-vsync=yes --video-sync=display-resample --vulkan-swap-mode=fifo?

The number of dropped frames increases dramatically, and the judder is the strongest I've seen in any of my recent configurations. It's actually strange that it works.. there's a comment in the code indicating that mailbox mode should be enforced, but I guess not?

Whatever the case, adding vulkan-swap-mode=fifo dramatically degrades performance when wayland-disable-vsync=yes.

Also tested fifo in the case that wayland-disable-vsync=no, and it cause a 5x increase in dropped frames.

Dudemanguy commented 4 days ago

In that case, it's likely just a driver or compositor issue if using plain fifo doesn't work. For the wayland backends, mpv enforces mailbox or a swap interval of 0 for gl because wayland has the behavior where it suspends the rendering thread if the surface is occluded which is just bad for us. Technically, it's entirely possible nvidia drivers don't behave as dumbly as mesa does, but I have no idea personally since I don't use nvidia. Anyways, avoiding this is the main reason why the entire vo_wayland_wait_frame hack exists. But you can ignore it of course as you probably figured out. --wayland-disable-vsync=yes disables this and you can override the swap interval/present mode settings with user flags. So in that case, you were just using plain old fifo from the drivers. If that doesn't present frames reliably, there's nothing we can really do on our end.

And regarding the time calculation, it's just an upper bound for the poll. The compositor is supposed to wake us up before that.

spaceman7777 commented 3 days ago

In that case, it's likely just a driver or compositor issue if using plain fifo doesn't work. For the wayland backends, mpv enforces mailbox or a swap interval of 0 for gl because wayland has the behavior where it suspends the rendering thread if the surface is occluded which is just bad for us. Technically, it's entirely possible nvidia drivers don't behave as dumbly as mesa does, but I have no idea personally since I don't use nvidia. Anyways, avoiding this is the main reason why the entire vo_wayland_wait_frame hack exists. But you can ignore it of course as you probably figured out. --wayland-disable-vsync=yes disables this and you can override the swap interval/present mode settings with user flags. So in that case, you were just using plain old fifo from the drivers. If that doesn't present frames reliably, there's nothing we can really do on our end.

And regarding the time calculation, it's just an upper bound for the poll. The compositor is supposed to wake us up before that.

hmm. well, I guess what I'm suggesting is that, instead of turning vsync off fully, and relying on the drivers to request things at the correct interval, there might be a new option that simply detects what time it should be syncing to, and syncs to that. Like, instead of waiting for a callback, or not waiting for a callback, it detects what the display's framerate is, and pretends it got a callback five times per source frame (in the case of 24.976fps source playing back on a 119.88Hz display).

Of course, I'm not sure if this would necessarily work, but, from my point of view, this sounds like what should be happening, as there are plenty of frames that can be rendered when it's not waiting for wayland to give the OK, and wayland can definitely display things at 119.88fps.

What do you think? Is this something that could be done? I tried some variations on the function that I quoted, but I think there are likely other code paths which I'm not aware of that are playing a role in this. Perhaps there is a different rate at which it should pretend it's receiving callbacks other than the exact theoretical time at which it should be supplying frames to wayland for display.

If you know of any other particularly interesting or relevant areas of code, I'd be interested to know. CLion chokes heavily on the mpv source, so references aren't in place that allow me to jump around the code outside of searching for symbols.

This is most likely a case where there are things I don't know about in the process of video rendering though. It plays so smoothly when vsync is turned off, even though it's sped up. The solution seems like it should be within grasp :'(

Dudemanguy commented 3 days ago

I did actually forget about one potential variable in this equation: the presentation-time protocol. On nvidia, this shouldn't work and we're secretly depending on the compositor to send us back 0s or something so mpv just discards it and doesn't try to use it. xorg has special logic to avoid using presentation on nvidia, but we don't have anything on wayland currently.

If you don't mind, could you apply this patch, run mpv for a bit, and upload the log file? It's just to make sure we aren't getting unexpected values.

diff --git a/video/out/wayland_common.c b/video/out/wayland_common.c
index dea3d0300a..3f725366f4 100644
--- a/video/out/wayland_common.c
+++ b/video/out/wayland_common.c
@@ -1321,6 +1321,7 @@ static void feedback_presented(void *data, struct wp_presentation_feedback *fbac
     int64_t sec = (uint64_t) tv_sec_lo + ((uint64_t) tv_sec_hi << 32);
     int64_t ust = MP_TIME_S_TO_NS(sec) + (uint64_t) tv_nsec;
     int64_t msc = (uint64_t) seq_lo + ((uint64_t) seq_hi << 32);
+    MP_VERBOSE(wl, "UST Time: %" PRId64 "\n", ust);
     present_sync_update_values(wl->present, ust, msc);
 }
spaceman7777 commented 3 days ago

I did actually forget about one potential variable in this equation: the presentation-time protocol. On nvidia, this shouldn't work and we're secretly depending on the compositor to send us back 0s or something so mpv just discards it and doesn't try to use it. xorg has special logic to avoid using presentation on nvidia, but we don't have anything on wayland currently.

If you don't mind, could you apply this patch, run mpv for a bit, and upload the log file? It's just to make sure we aren't getting unexpected values.

diff --git a/video/out/wayland_common.c b/video/out/wayland_common.c
index dea3d0300a..3f725366f4 100644
--- a/video/out/wayland_common.c
+++ b/video/out/wayland_common.c
@@ -1321,6 +1321,7 @@ static void feedback_presented(void *data, struct wp_presentation_feedback *fbac
     int64_t sec = (uint64_t) tv_sec_lo + ((uint64_t) tv_sec_hi << 32);
     int64_t ust = MP_TIME_S_TO_NS(sec) + (uint64_t) tv_nsec;
     int64_t msc = (uint64_t) seq_lo + ((uint64_t) seq_hi << 32);
+    MP_VERBOSE(wl, "UST Time: %" PRId64 "\n", ust);
     present_sync_update_values(wl->present, ust, msc);
 }

Output below.

Also, I've been digging some more today, and remembered that KDE implemented triple buffering along with explicit sync in the 6.1 release last week. So I'm wondering if it might be possible to sync to the compositor instead of directly to the display. This might be a way for the general case as well, if buffering is done on mpv's side, and it can try to time it to whenever the compositor receives a callback. I think this may be what mailbox is doing already though, so idk.

Anyway, here's the output with that patch:

$ mpv --no-config --fullscreen --vo=gpu-next --hwdec=auto-copy --gpu-context=waylandvk --msg-level=vo=v --start=9:40 --video-sync=display-resample ./test.mkv 
● Video  --vid=1                    (hevc 3840x2160 23.976 fps) [default]
● Audio  --aid=1  --alang=ja        (eac3 6ch 48000 Hz) [default]
β—‹ Audio  --aid=2  --alang=en        (aac 2ch 48000 Hz)
β—‹ Subs   --sid=1  --slang=en        'Forced' (ass) [forced]
● Subs   --sid=2  --slang=en        (ass) [default]
β—‹ Subs   --sid=3  --slang=en        (subrip)
β—‹ Subs   --sid=4  --slang=en        (subrip)
β—‹ Subs   --sid=5  --slang=cmn-Hans  (subrip)
β—‹ Subs   --sid=6  --slang=cmn-Hans  (subrip)
β—‹ Subs   --sid=7  --slang=de        (ass)
β—‹ Subs   --sid=8  --slang=es-419    (ass)
β—‹ Subs   --sid=9  --slang=es        (ass)
β—‹ Subs   --sid=10 --slang=fr        (ass)
β—‹ Subs   --sid=11 --slang=hu        (subrip)
β—‹ Subs   --sid=12 --slang=id        (subrip)
β—‹ Subs   --sid=13 --slang=it        (ass)
β—‹ Subs   --sid=14 --slang=ja        'SDH' (subrip)
β—‹ Subs   --sid=15 --slang=ms        (subrip)
β—‹ Subs   --sid=16 --slang=pl        (ass)
β—‹ Subs   --sid=17 --slang=pt-BR     (ass)
β—‹ Subs   --sid=18 --slang=pt-PT     (ass)
β—‹ Subs   --sid=19 --slang=ru        (ass)
β—‹ Subs   --sid=20 --slang=th        (subrip)
[vo/gpu-next/vulkan] Initializing GPU context 'waylandvk'
[vo/gpu-next/libplacebo] Initialized libplacebo v7.349.0 (v7.349.0-rc1-3-g1fd3c7bd) (API v349)
[vo/gpu-next/libplacebo] Spent 94.395 ms enumerating instance extensions
[vo/gpu-next/libplacebo] Creating vulkan instance with extensions:
[vo/gpu-next/libplacebo]     VK_KHR_get_physical_device_properties2
[vo/gpu-next/libplacebo]     VK_KHR_surface
[vo/gpu-next/libplacebo]     VK_EXT_swapchain_colorspace
[vo/gpu-next/libplacebo]     VK_KHR_external_memory_capabilities
[vo/gpu-next/libplacebo]     VK_KHR_external_semaphore_capabilities
[vo/gpu-next/libplacebo]     VK_KHR_get_surface_capabilities2
[vo/gpu-next/libplacebo]     VK_KHR_portability_enumeration
[vo/gpu-next/libplacebo]     VK_KHR_surface
[vo/gpu-next/libplacebo]     VK_KHR_wayland_surface
[vo/gpu-next/libplacebo] Spent 113.299 ms creating vulkan instance (slow!)
[vo/gpu-next/wayland] Registered interface wl_compositor at version 6
[vo/gpu-next/wayland] Registered interface zxdg_decoration_manager_v1 at version 1
[vo/gpu-next/wayland] Registered interface wp_viewporter at version 1
[vo/gpu-next/wayland] Registered interface wp_fractional_scale_manager_v1 at version 1
[vo/gpu-next/wayland] Registered interface wl_shm at version 1
[vo/gpu-next/wayland] Registered interface wl_seat at version 8
[vo/gpu-next/wayland] Registered interface wl_data_device_manager at version 3
[vo/gpu-next/wayland] Registered interface wp_cursor_shape_manager_v1 at version 1
[vo/gpu-next/wayland] Registered interface zwp_idle_inhibit_manager_v1 at version 1
[vo/gpu-next/wayland] Registered interface wl_subcompositor at version 1
[vo/gpu-next/wayland] Registered interface wp_content_type_manager_v1 at version 1
[vo/gpu-next/wayland] Registered interface wp_presentation at version 1
[vo/gpu-next/wayland] Registered interface xdg_wm_base at version 6
[vo/gpu-next/wayland] Registered interface zwp_linux_dmabuf_v1 at version 4
[vo/gpu-next/wayland] Registered interface wl_output at version 4
[vo/gpu-next/wayland] Registered interface wl_output at version 4
[vo/gpu-next/wayland] Compositor doesn't support the wp_single_pixel_buffer_manager_v1 protocol!
[vo/gpu-next/wayland] Registered output LG Electronics LG TV SSCR2/0x01010101 (0x4f):
[vo/gpu-next/wayland]   x: 0px, y: 0px
[vo/gpu-next/wayland]   w: 3840px (1600mm), h: 2160px (900mm)
[vo/gpu-next/wayland]   scale: 2
[vo/gpu-next/wayland]   Hz: 119.880000
[vo/gpu-next/wayland] Registered output LG Electronics LG TV SSCR2/0x01010101 (0x51):
[vo/gpu-next/wayland]   x: 1920px, y: 0px
[vo/gpu-next/wayland]   w: 3840px (1600mm), h: 2160px (900mm)
[vo/gpu-next/wayland]   scale: 2
[vo/gpu-next/wayland]   Hz: 119.880000
[vo/gpu-next/wayland] Enabling server decorations
[vo/gpu-next/wayland] Enabling server decorations
[vo/gpu-next/wayland] Obtained preferred scale, 2.000000, from the compositor.
[vo/gpu-next/libplacebo] Probing for vulkan devices:
[vo/gpu-next/libplacebo]     GPU 0: NVIDIA GeForce RTX 3090 v1.3.278 (discrete)
[vo/gpu-next/libplacebo]            uuid: C6:A4:38:C1:D5:8E:AB:92:C3:B1:1E:99:75:1F:EE:05
[vo/gpu-next/libplacebo]     GPU 1: NVIDIA GeForce RTX 3090 v1.3.278 (discrete)
[vo/gpu-next/libplacebo]            uuid: 35:E5:B8:62:F0:14:D0:F7:61:88:CC:25:54:DC:FD:46
[vo/gpu-next/libplacebo] Vulkan device properties:
[vo/gpu-next/libplacebo]     Device Name: NVIDIA GeForce RTX 3090
[vo/gpu-next/libplacebo]     Device ID: 10de:2204
[vo/gpu-next/libplacebo]     Device UUID: C6:A4:38:C1:D5:8E:AB:92:C3:B1:1E:99:75:1F:EE:05
[vo/gpu-next/libplacebo]     Driver version: 8acd0100
[vo/gpu-next/libplacebo]     API version: 1.3.278
[vo/gpu-next/libplacebo] Using async transfer (queue 1)
[vo/gpu-next/libplacebo] Using async compute (queue 2)
[vo/gpu-next/libplacebo] Creating vulkan device with extensions:
[vo/gpu-next/libplacebo]     VK_KHR_swapchain
[vo/gpu-next/libplacebo]     VK_KHR_swapchain
[vo/gpu-next/libplacebo]     VK_KHR_push_descriptor
[vo/gpu-next/libplacebo]     VK_KHR_external_memory_fd
[vo/gpu-next/libplacebo]     VK_EXT_external_memory_dma_buf
[vo/gpu-next/libplacebo]     VK_EXT_external_memory_host
[vo/gpu-next/libplacebo]     VK_KHR_external_semaphore_fd
[vo/gpu-next/libplacebo]     VK_EXT_pci_bus_info
[vo/gpu-next/libplacebo]     VK_EXT_image_drm_format_modifier
[vo/gpu-next/libplacebo]     VK_EXT_descriptor_buffer
[vo/gpu-next/libplacebo]     VK_EXT_shader_atomic_float
[vo/gpu-next/libplacebo]     VK_KHR_video_decode_queue
[vo/gpu-next/libplacebo]     VK_KHR_video_decode_h264
[vo/gpu-next/libplacebo]     VK_KHR_video_decode_h265
[vo/gpu-next/libplacebo]     VK_KHR_video_queue
[vo/gpu-next/libplacebo]     VK_KHR_video_decode_av1
[vo/gpu-next/libplacebo] Spent 1112.871 ms creating vulkan device (slow!)
[vo/gpu-next/libplacebo] Memory heaps supported by device:
[vo/gpu-next/libplacebo]     0: flags 0x1 size   24G
[vo/gpu-next/libplacebo]     1: flags 0x0 size   94G
[vo/gpu-next/libplacebo]     2: flags 0x1 size  246M
[vo/gpu-next/libplacebo] Memory summary:     0 used     0 res     0 alloc, efficiency 100.00%, utilization 100.00%, max page: 1536M
[vo/gpu-next/libplacebo] shaderc SPIR-V version 1.6 rev 1
[vo/gpu-next/libplacebo] Initialized SPIR-V compiler 'shaderc'
[vo/gpu-next/libplacebo] GPU information:
[vo/gpu-next/libplacebo]     GLSL version: 450 (vulkan)
[vo/gpu-next/libplacebo]       max_shmem_size:            49152
[vo/gpu-next/libplacebo]       max_group_threads:         1024
[vo/gpu-next/libplacebo]       max_group_size[0]:         1024
[vo/gpu-next/libplacebo]       max_group_size[1]:         1024
[vo/gpu-next/libplacebo]       max_group_size[2]:         64
[vo/gpu-next/libplacebo]       subgroup_size:             32
[vo/gpu-next/libplacebo]       min_gather_offset:         -32
[vo/gpu-next/libplacebo]       max_gather_offset:         31
[vo/gpu-next/libplacebo]     Limits:
[vo/gpu-next/libplacebo]       thread_safe:               1
[vo/gpu-next/libplacebo]       callbacks:                 1
[vo/gpu-next/libplacebo]       max_buf_size:              101126037504
[vo/gpu-next/libplacebo]       max_ubo_size:              65536
[vo/gpu-next/libplacebo]       max_ssbo_size:             4294967295
[vo/gpu-next/libplacebo]       max_vbo_size:              25769803776
[vo/gpu-next/libplacebo]       max_mapped_size:           101126037504
[vo/gpu-next/libplacebo]       max_buffer_texels:         134217728
[vo/gpu-next/libplacebo]       align_host_ptr:            4096
[vo/gpu-next/libplacebo]       host_cached:               1
[vo/gpu-next/libplacebo]       max_tex_1d_dim:            32768
[vo/gpu-next/libplacebo]       max_tex_2d_dim:            32768
[vo/gpu-next/libplacebo]       max_tex_3d_dim:            16384
[vo/gpu-next/libplacebo]       blittable_1d_3d:           1
[vo/gpu-next/libplacebo]       buf_transfer:              1
[vo/gpu-next/libplacebo]       align_tex_xfer_pitch:      1
[vo/gpu-next/libplacebo]       align_tex_xfer_offset:     4
[vo/gpu-next/libplacebo]       max_variable_comps:        0
[vo/gpu-next/libplacebo]       max_constants:             18446744073709551615
[vo/gpu-next/libplacebo]       max_pushc_size:            256
[vo/gpu-next/libplacebo]       align_vertex_stride:       1
[vo/gpu-next/libplacebo]       max_dispatch[0]:           2147483647
[vo/gpu-next/libplacebo]       max_dispatch[1]:           65535
[vo/gpu-next/libplacebo]       max_dispatch[2]:           65535
[vo/gpu-next/libplacebo]       fragment_queues:           1
[vo/gpu-next/libplacebo]       compute_queues:            1
[vo/gpu-next/libplacebo]     External API interop:
[vo/gpu-next/libplacebo]       UUID: C6:A4:38:C1:D5:8E:AB:92:C3:B1:1E:99:75:1F:EE:05
[vo/gpu-next/libplacebo]       PCI: 0000:01:00:0
[vo/gpu-next/libplacebo]       buf export caps: 0x19
[vo/gpu-next/libplacebo]       buf import caps: 0x19
[vo/gpu-next/libplacebo]       tex export caps: 0x19
[vo/gpu-next/libplacebo]       tex import caps: 0x19
[vo/gpu-next/libplacebo]       sync export caps: 0x1
[vo/gpu-next/libplacebo]       sync import caps: 0x0
[vo/gpu-next/libplacebo] Available surface configurations:
[vo/gpu-next/libplacebo]     0: VK_FORMAT_A2R10G10B10_UNORM_PACK32       VK_COLOR_SPACE_SRGB_NONLINEAR_KHR
[vo/gpu-next/libplacebo]     1: VK_FORMAT_A2B10G10R10_UNORM_PACK32       VK_COLOR_SPACE_SRGB_NONLINEAR_KHR
[vo/gpu-next/libplacebo]     2: VK_FORMAT_R8G8B8A8_SRGB                  VK_COLOR_SPACE_SRGB_NONLINEAR_KHR
[vo/gpu-next/libplacebo]     3: VK_FORMAT_R8G8B8A8_UNORM                 VK_COLOR_SPACE_SRGB_NONLINEAR_KHR
[vo/gpu-next/libplacebo]     4: VK_FORMAT_B8G8R8A8_SRGB                  VK_COLOR_SPACE_SRGB_NONLINEAR_KHR
[vo/gpu-next/libplacebo]     5: VK_FORMAT_B8G8R8A8_UNORM                 VK_COLOR_SPACE_SRGB_NONLINEAR_KHR
[vo/gpu-next/libplacebo]     6: VK_FORMAT_R16G16B16A16_SFLOAT            VK_COLOR_SPACE_SRGB_NONLINEAR_KHR
[vo/gpu-next/libplacebo] Picked surface configuration 0: VK_FORMAT_A2R10G10B10_UNORM_PACK32 + VK_COLOR_SPACE_SRGB_NONLINEAR_KHR
[vo/gpu-next] Assuming 119.880000 FPS for display sync.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
Using hardware decoding (nvdec-copy).
AO: [pipewire] 48000Hz 5.1(side) 6ch floatp
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
[ffmpeg/video] hevc: Multiple Dolby Vision RPUs found in one AU. Skipping previous.
VO: [gpu-next] 3840x2160 p010
[vo/gpu-next] reconfig to 3840x2160 p010 dolbyvision/bt.2020/pq/limited/display CL=uhd crop=3840x2160+0+0
[vo/gpu-next/wayland] Reconfiguring!
[vo/gpu-next] Window size: 3840x2160 (Borders: l=0 t=0 r=0 b=0)
[vo/gpu-next] Video source: 3840x2160 (1:1)
[vo/gpu-next] Video display: (0, 0) 3840x2160 -> (0, 0) 3840x2160
[vo/gpu-next] Video scale: 1.000000/1.000000
[vo/gpu-next] OSD borders: l=0 t=0 r=0 b=0
[vo/gpu-next] Video borders: l=0 t=0 r=0 b=0
[vo/gpu-next/wayland] Handling resize on the vk side
[vo/gpu-next] Window size: 3840x2160 (Borders: l=0 t=0 r=0 b=0)
[vo/gpu-next] Video source: 3840x2160 (1:1)
[vo/gpu-next] Video display: (0, 0) 3840x2160 -> (0, 0) 3840x2160
[vo/gpu-next] Video scale: 1.000000/1.000000
[vo/gpu-next] OSD borders: l=0 t=0 r=0 b=0
[vo/gpu-next] Video borders: l=0 t=0 r=0 b=0
[vo/gpu-next/libplacebo] Spent 51.621 ms translating SPIR-V
[vo/gpu-next/libplacebo] Spent 15.067 ms generating shader LUT
[vo/gpu-next/libplacebo] Dithering to 8 bit depth
[vo/gpu-next/wayland] Enabling server decorations
[vo/gpu-next/wayland] Surface entered output LG Electronics LG TV SSCR2/0x01010101 (0x4f), scale = 2.000000, refresh rate = 119.880000 Hz
[vo/gpu-next/wayland] Surface entered output LG Electronics LG TV SSCR2/0x01010101 (0x51), scale = 2.000000, refresh rate = 119.880000 Hz
[vo/gpu-next/wayland] Given DND offer with mime type text/plain;charset=utf-8
[vo/gpu-next/wayland] Received a new DND offer. Releasing the previous offer.
[vo/gpu-next/wayland] Handling resize on the vk side
[vo/gpu-next] Window size: 3840x2160 (Borders: l=0 t=0 r=0 b=0)
[vo/gpu-next] Video source: 3840x2160 (1:1)
[vo/gpu-next] Video display: (0, 0) 3840x2160 -> (0, 0) 3840x2160
[vo/gpu-next] Video scale: 1.000000/1.000000
[vo/gpu-next] OSD borders: l=0 t=0 r=0 b=0
[vo/gpu-next] Video borders: l=0 t=0 r=0 b=0
[vo/gpu-next/wayland] Handling resize on the vk side
[vo/gpu-next] Window size: 3840x2160 (Borders: l=0 t=0 r=0 b=0)
[vo/gpu-next] Video source: 3840x2160 (1:1)
[vo/gpu-next] Video display: (0, 0) 3840x2160 -> (0, 0) 3840x2160
[vo/gpu-next] Video scale: 1.000000/1.000000
[vo/gpu-next] OSD borders: l=0 t=0 r=0 b=0
[vo/gpu-next] Video borders: l=0 t=0 r=0 b=0
[vo/gpu-next/wayland] Enabling idle inhibitor
[vo/gpu-next/wayland] UST Time: 238559078998000
[vo/gpu-next/wayland] UST Time: 238559104742000
[vo/gpu-next/wayland] UST Time: 238559112064000
[vo/gpu-next/libplacebo] Detected fps ratio 0.0040 below threshold 0.0100, disabling interpolation
[vo/gpu-next/wayland] UST Time: 238559128840000
[vo/gpu-next/wayland] UST Time: 238559145440000
[vo/gpu-next/wayland] UST Time: 238559153786000
[vo/gpu-next/wayland] UST Time: 238559162115000
[vo/gpu-next/wayland] UST Time: 238559170461000
[vo/gpu-next/wayland] UST Time: 238559178794000
[vo/gpu-next/wayland] UST Time: 238559188158000
[vo/gpu-next/wayland] UST Time: 238559195545000
[vo/gpu-next/libplacebo] Estimated source FPS: 23.923, display FPS: 23.952
[vo/gpu-next/wayland] UST Time: 238559247346000
[vo/gpu-next/wayland] UST Time: 238559270566000
[vo/gpu-next/wayland] UST Time: 238559278897000
[vo/gpu-next/wayland] UST Time: 238559287248000
[vo/gpu-next/wayland] UST Time: 238559295579000
[vo/gpu-next/wayland] UST Time: 238559303928000
[vo/gpu-next/wayland] UST Time: 238559312307000
[vo/gpu-next/wayland] UST Time: 238559320634000
[vo/gpu-next/wayland] UST Time: 238559328982000
[vo/gpu-next/wayland] UST Time: 238559338420000
[vo/gpu-next/wayland] UST Time: 238559345761000
[vo/gpu-next/wayland] UST Time: 238559396480000
[vo/gpu-next/wayland] UST Time: 238559421693000
[vo/gpu-next/wayland] UST Time: 238559437430000
[vo/gpu-next/wayland] UST Time: 238559455037000
[vo/gpu-next/wayland] UST Time: 238559462475000
[vo/gpu-next/wayland] UST Time: 238559479856000
[vo/gpu-next/wayland] UST Time: 238559512470000
[vo/gpu-next/wayland] UST Time: 238559529132000
[vo/gpu-next/wayland] UST Time: 238559545880000
[vo/gpu-next/wayland] UST Time: 238559555209000
[vo/gpu-next/wayland] UST Time: 238559562551000
[vo/gpu-next/wayland] UST Time: 238559580130000
[vo/gpu-next/wayland] UST Time: 238559613606000
[vo/gpu-next/wayland] UST Time: 238559629270000
[vo/gpu-next/wayland] UST Time: 238559646822000
[vo/gpu-next/wayland] UST Time: 238559705354000
[vo/gpu-next/wayland] UST Time: 238559712827000
[vo/gpu-next/wayland] UST Time: 238559755221000
[vo/gpu-next/wayland] UST Time: 238559771096000
[vo/gpu-next/wayland] UST Time: 238559789849000
[vo/gpu-next/wayland] UST Time: 238559812838000
[vo/gpu-next/wayland] UST Time: 238559821255000
[vo/gpu-next/wayland] UST Time: 238559846176000
[vo/gpu-next/wayland] UST Time: 238559854612000
[vo/gpu-next/wayland] UST Time: 238559862852000
[vo/gpu-next/wayland] UST Time: 238559879501000
[vo/gpu-next/wayland] UST Time: 238559887860000
[vo/gpu-next/wayland] UST Time: 238559896224000
[vo/gpu-next/wayland] UST Time: 238559904567000
[vo/gpu-next/wayland] UST Time: 238559912928000
[vo/gpu-next/wayland] UST Time: 238559921246000
[vo/gpu-next/wayland] UST Time: 238559929615000
[vo/gpu-next/wayland] UST Time: 238559938132000
[vo/gpu-next/wayland] UST Time: 238559946263000
[vo/gpu-next/wayland] UST Time: 238559954629000
[vo/gpu-next/wayland] UST Time: 238559963057000
[vo/gpu-next/wayland] UST Time: 238559971321000
[vo/gpu-next/wayland] UST Time: 238559988030000
[vo/gpu-next/wayland] UST Time: 238559996345000
[vo/gpu-next/wayland] UST Time: 238560004657000
[vo/gpu-next/wayland] UST Time: 238560012990000
[vo/gpu-next/wayland] UST Time: 238560021322000
[vo/gpu-next/wayland] UST Time: 238560029669000
[vo/gpu-next/wayland] UST Time: 238560038019000
[vo/gpu-next/wayland] UST Time: 238560046400000
[vo/gpu-next/wayland] UST Time: 238560054721000
[vo/gpu-next/wayland] UST Time: 238560063063000
[vo/gpu-next/wayland] UST Time: 238560071410000
[vo/gpu-next/wayland] UST Time: 238560079756000
[vo/gpu-next/wayland] UST Time: 238560088209000
[vo/gpu-next/wayland] UST Time: 238560096413000
[vo/gpu-next/wayland] UST Time: 238560104766000
[vo/gpu-next/wayland] UST Time: 238560113131000
[vo/gpu-next/wayland] UST Time: 238560121450000
[vo/gpu-next/wayland] UST Time: 238560130008000
[vo/gpu-next/wayland] UST Time: 238560138135000
[vo/gpu-next/wayland] UST Time: 238560155943000
[vo/gpu-next/wayland] UST Time: 238560163192000
[vo/gpu-next/wayland] UST Time: 238560182055000
[vo/gpu-next/wayland] UST Time: 238560204869000
[vo/gpu-next/wayland] UST Time: 238560213284000
[vo/gpu-next/wayland] UST Time: 238560239400000
[vo/gpu-next/wayland] UST Time: 238560246741000
[vo/gpu-next/wayland] UST Time: 238560297840000
[vo/gpu-next/wayland] UST Time: 238560304980000
[vo/gpu-next/wayland] UST Time: 238560322731000
[vo/gpu-next/wayland] UST Time: 238560347896000
[vo/gpu-next/wayland] UST Time: 238560381188000
[vo/gpu-next/wayland] UST Time: 238560396772000
[vo/gpu-next/wayland] UST Time: 238560415381000
[vo/gpu-next/wayland] UST Time: 238560446796000
[vo/gpu-next/wayland] UST Time: 238560463474000
[vo/gpu-next/wayland] UST Time: 238560480996000
[vo/gpu-next/wayland] UST Time: 238560496839000
[vo/gpu-next/wayland] UST Time: 238560513502000
[vo/gpu-next/wayland] UST Time: 238560530208000
[vo/gpu-next/wayland] UST Time: 238560546882000
[vo/gpu-next/wayland] UST Time: 238560564639000
[vo/gpu-next/wayland] UST Time: 238560598157000
[vo/gpu-next/wayland] UST Time: 238560632416000
[vo/gpu-next/wayland] UST Time: 238560655328000
[vo/gpu-next/wayland] UST Time: 238560663659000
[vo/gpu-next/wayland] UST Time: 238560672006000
[vo/gpu-next/wayland] UST Time: 238560680360000
[vo/gpu-next/wayland] UST Time: 238560690040000
[vo/gpu-next/wayland] UST Time: 238560705412000
[vo/gpu-next/wayland] UST Time: 238560713712000
[vo/gpu-next/wayland] UST Time: 238560722065000
[vo/gpu-next/wayland] UST Time: 238560730392000
[vo/gpu-next/wayland] UST Time: 238560738736000
[vo/gpu-next/wayland] UST Time: 238560747208000
[vo/gpu-next/wayland] UST Time: 238560756636000
[vo/gpu-next/wayland] UST Time: 238560763756000
[vo/gpu-next/wayland] UST Time: 238560781374000
[vo/gpu-next/wayland] UST Time: 238560814109000
[vo/gpu-next/wayland] UST Time: 238560830467000
[vo/gpu-next/wayland] UST Time: 238560840175000
[vo/gpu-next/wayland] UST Time: 238560847212000
[vo/gpu-next/wayland] UST Time: 238560898365000
[vo/gpu-next/wayland] UST Time: 238560931455000
[vo/gpu-next/wayland] UST Time: 238560964743000
[vo/gpu-next/wayland] UST Time: 238560998912000
[vo/gpu-next/wayland] UST Time: 238561030709000
[vo/gpu-next/wayland] UST Time: 238561047935000
[vo/gpu-next/wayland] UST Time: 238561072439000
[vo/gpu-next/wayland] UST Time: 238561080769000
[vo/gpu-next/wayland] UST Time: 238561089228000
[vo/gpu-next/wayland] UST Time: 238561097443000
[vo/gpu-next/wayland] UST Time: 238561114147000
[vo/gpu-next/wayland] UST Time: 238561122468000
[vo/gpu-next/wayland] UST Time: 238561130932000
[vo/gpu-next/wayland] UST Time: 238561140187000
[vo/gpu-next/wayland] UST Time: 238561147488000
[vo/gpu-next/wayland] UST Time: 238561164801000
[vo/gpu-next/wayland] UST Time: 238561198239000
[vo/gpu-next/wayland] UST Time: 238561231702000
[vo/gpu-next/wayland] UST Time: 238561247583000
[vo/gpu-next/wayland] UST Time: 238561264700000
[vo/gpu-next/wayland] UST Time: 238561290477000
[vo/gpu-next/wayland] UST Time: 238561297787000
[vo/gpu-next/wayland] UST Time: 238561340153000
[vo/gpu-next/wayland] UST Time: 238561347695000
[vo/gpu-next/wayland] UST Time: 238561364950000
[vo/gpu-next/wayland] UST Time: 238561381112000
[vo/gpu-next/wayland] UST Time: 238561397725000
[vo/gpu-next/wayland] UST Time: 238561406286000
[vo/gpu-next/wayland] UST Time: 238561414517000
[vo/gpu-next/wayland] UST Time: 238561422756000
[vo/gpu-next/wayland] UST Time: 238561440621000
[vo/gpu-next/wayland] UST Time: 238561447897000
[vo/gpu-next/wayland] UST Time: 238561490177000
[vo/gpu-next/wayland] UST Time: 238561515439000
[vo/gpu-next/wayland] UST Time: 238561541736000
[vo/gpu-next/wayland] UST Time: 238561564587000
[vo/gpu-next/wayland] UST Time: 238561572929000
[vo/gpu-next/wayland] UST Time: 238561590656000
[vo/gpu-next/wayland] UST Time: 238561598057000
[vo/gpu-next/wayland] UST Time: 238561656389000
[vo/gpu-next/wayland] UST Time: 238561673042000
[vo/gpu-next/wayland] UST Time: 238561681387000
[vo/gpu-next/wayland] UST Time: 238561689808000
[vo/gpu-next/wayland] UST Time: 238561698074000
[vo/gpu-next/wayland] UST Time: 238561714761000
[vo/gpu-next/wayland] UST Time: 238561723097000
[vo/gpu-next/wayland] UST Time: 238561731514000
[vo/gpu-next/wayland] UST Time: 238561740817000
[vo/gpu-next/wayland] UST Time: 238561765721000
[vo/gpu-next/wayland] UST Time: 238561791234000
[vo/gpu-next/wayland] UST Time: 238561859152000
[vo/gpu-next/wayland] UST Time: 238561881553000
[vo/gpu-next/wayland] UST Time: 238561890031000
[vo/gpu-next/wayland] UST Time: 238561898238000
[vo/gpu-next/wayland] UST Time: 238561906572000
[vo/gpu-next/wayland] UST Time: 238561915107000
[vo/gpu-next/wayland] UST Time: 238561923277000
[vo/gpu-next/wayland] UST Time: 238561931707000
[vo/gpu-next/wayland] UST Time: 238561939938000
[vo/gpu-next/wayland] UST Time: 238561948281000
[vo/gpu-next/wayland] UST Time: 238561956647000
[vo/gpu-next/wayland] UST Time: 238561964968000
[vo/gpu-next/wayland] UST Time: 238561973609000
[vo/gpu-next/wayland] UST Time: 238561981668000
[vo/gpu-next/wayland] UST Time: 238561989988000
[vo/gpu-next/wayland] UST Time: 238561998398000
[vo/gpu-next/wayland] UST Time: 238562006708000
[vo/gpu-next/wayland] UST Time: 238562015179000
[vo/gpu-next/wayland] UST Time: 238562023345000
[vo/gpu-next/wayland] UST Time: 238562041336000
[vo/gpu-next/wayland] UST Time: 238562048393000
[vo/gpu-next/wayland] UST Time: 238562081757000
[vo/gpu-next/wayland] UST Time: 238562101548000
[vo/gpu-next/wayland] UST Time: 238562123456000
[vo/gpu-next/wayland] UST Time: 238562131854000
[vo/gpu-next/wayland] UST Time: 238562148499000
[vo/gpu-next/wayland] UST Time: 238562165195000
[vo/gpu-next/wayland] UST Time: 238562173520000
[vo/gpu-next/wayland] UST Time: 238562181966000
[vo/gpu-next/wayland] UST Time: 238562191254000
[vo/gpu-next/wayland] UST Time: 238562198535000
[vo/gpu-next/wayland] UST Time: 238562215983000
[vo/gpu-next/wayland] UST Time: 238562249130000
[vo/gpu-next/wayland] UST Time: 238562273622000
[vo/gpu-next/wayland] UST Time: 238562290333000
[vo/gpu-next/wayland] UST Time: 238562298641000
[vo/gpu-next/wayland] UST Time: 238562307081000
[vo/gpu-next/wayland] UST Time: 238562315324000
[vo/gpu-next/wayland] UST Time: 238562332112000
[vo/gpu-next/wayland] UST Time: 238562341385000
[vo/gpu-next/wayland] UST Time: 238562348767000
[vo/gpu-next/wayland] UST Time: 238562407104000
[vo/gpu-next/wayland] UST Time: 238562423762000
[vo/gpu-next/wayland] UST Time: 238562432107000
[vo/gpu-next/wayland] UST Time: 238562440545000
[vo/gpu-next/wayland] UST Time: 238562448796000
[vo/gpu-next/wayland] UST Time: 238562465514000
[vo/gpu-next/wayland] UST Time: 238562473818000
[vo/gpu-next/wayland] UST Time: 238562482276000
[vo/gpu-next/wayland] UST Time: 238562491529000
[vo/gpu-next/wayland] UST Time: 238562516649000
[vo/gpu-next/wayland] UST Time: 238562548896000
[vo/gpu-next/wayland] UST Time: 238562565735000
[vo/gpu-next/wayland] UST Time: 238562573924000
[vo/gpu-next/wayland] UST Time: 238562582265000
[vo/gpu-next/wayland] UST Time: 238562590604000
[vo/gpu-next/wayland] UST Time: 238562598950000
[vo/gpu-next/wayland] UST Time: 238562607396000
[vo/gpu-next/wayland] UST Time: 238562615716000
[vo/gpu-next/wayland] UST Time: 238562624028000
[vo/gpu-next/wayland] UST Time: 238562632304000
[vo/gpu-next/wayland] UST Time: 238562641713000
[vo/gpu-next/wayland] UST Time: 238562648994000
[vo/gpu-next/wayland] UST Time: 238562699880000
[vo/gpu-next/wayland] UST Time: 238562715719000
[vo/gpu-next/wayland] UST Time: 238562733238000
[vo/gpu-next/wayland] UST Time: 238562749423000
[vo/gpu-next/wayland] UST Time: 238562757428000
[vo/gpu-next/wayland] UST Time: 238562765771000
[vo/gpu-next/wayland] UST Time: 238562774104000
[vo/gpu-next/wayland] UST Time: 238562782454000
[vo/gpu-next/wayland] UST Time: 238562790930000
[vo/gpu-next/wayland] UST Time: 238562799165000
[vo/gpu-next/wayland] UST Time: 238562807499000
[vo/gpu-next/wayland] UST Time: 238562815822000
[vo/gpu-next/wayland] UST Time: 238562824159000
[vo/gpu-next/wayland] UST Time: 238562832502000
[vo/gpu-next/wayland] UST Time: 238562840866000
[vo/gpu-next/wayland] UST Time: 238562849180000
[vo/gpu-next/wayland] UST Time: 238562857663000
[vo/gpu-next/wayland] UST Time: 238562865882000
[vo/gpu-next/wayland] UST Time: 238562882563000
[vo/gpu-next/wayland] UST Time: 238562890907000
[vo/gpu-next/wayland] UST Time: 238562899353000
[vo/gpu-next/wayland] UST Time: 238562907579000
[vo/gpu-next/wayland] UST Time: 238562924347000
[vo/gpu-next/wayland] UST Time: 238562932681000
[vo/gpu-next/wayland] UST Time: 238562941108000
[vo/gpu-next/wayland] UST Time: 238562949313000
[vo/gpu-next/wayland] UST Time: 238562965987000
[vo/gpu-next/wayland] UST Time: 238562974310000
[vo/gpu-next/wayland] UST Time: 238562982677000
[vo/gpu-next/wayland] UST Time: 238562990999000
[vo/gpu-next/wayland] UST Time: 238562999352000
[vo/gpu-next/wayland] UST Time: 238563007721000
[vo/gpu-next/wayland] UST Time: 238563016038000
[vo/gpu-next/wayland] UST Time: 238563024448000
[vo/gpu-next/wayland] UST Time: 238563032688000
[vo/gpu-next/wayland] UST Time: 238563041043000
[vo/gpu-next/wayland] UST Time: 238563049388000
[vo/gpu-next/wayland] UST Time: 238563057799000
[vo/gpu-next/wayland] UST Time: 238563066103000
[vo/gpu-next/wayland] UST Time: 238563074418000
[vo/gpu-next/wayland] UST Time: 238563082958000
[vo/gpu-next/wayland] UST Time: 238563092158000
[vo/gpu-next/wayland] UST Time: 238563099459000
[vo/gpu-next/wayland] UST Time: 238563116775000
[vo/gpu-next/wayland] UST Time: 238563124484000
[vo/gpu-next/wayland] UST Time: 238563142952000
[vo/gpu-next/wayland] UST Time: 238563166225000
[vo/gpu-next/wayland] UST Time: 238563174529000
[vo/gpu-next/wayland] UST Time: 238563191219000
[vo/gpu-next/wayland] UST Time: 238563199553000
[vo/gpu-next/wayland] UST Time: 238563207907000
[vo/gpu-next/wayland] UST Time: 238563216251000
[vo/gpu-next/wayland] UST Time: 238563224751000
[vo/gpu-next/wayland] UST Time: 238563232922000
[vo/gpu-next/wayland] UST Time: 238563242303000
[vo/gpu-next/wayland] UST Time: 238563249597000
[vo/gpu-next/wayland] UST Time: 238563266876000
[vo/gpu-next/wayland] UST Time: 238563282946000
[vo/gpu-next/wayland] UST Time: 238563299712000
[vo/gpu-next/wayland] UST Time: 238563307985000
[vo/gpu-next/wayland] UST Time: 238563316307000
[vo/gpu-next/wayland] UST Time: 238563324693000
[vo/gpu-next/wayland] UST Time: 238563333099000
[vo/gpu-next/wayland] UST Time: 238563341342000
[vo/gpu-next/wayland] UST Time: 238563349728000
[vo/gpu-next/wayland] UST Time: 238563358075000
[vo/gpu-next/wayland] UST Time: 238563366495000
[vo/gpu-next/wayland] UST Time: 238563374720000
[vo/gpu-next/wayland] UST Time: 238563392510000
[vo/gpu-next/wayland] UST Time: 238563399844000
[vo/gpu-next/wayland] UST Time: 238563417490000
[vo/gpu-next/wayland] UST Time: 238563466485000
[vo/gpu-next/wayland] UST Time: 238563483701000
[vo/gpu-next/wayland] UST Time: 238563517466000
[vo/gpu-next/wayland] UST Time: 238563526595000
[vo/gpu-next/wayland] UST Time: 238563541630000
[vo/gpu-next/wayland] UST Time: 238563550505000
[vo/gpu-next/wayland] UST Time: 238563558241000
[vo/gpu-next/wayland] UST Time: 238563575478000
[vo/gpu-next/wayland] UST Time: 238563599951000
[vo/gpu-next/wayland] UST Time: 238563608305000
[vo/gpu-next/wayland] UST Time: 238563616641000
[vo/gpu-next/wayland] UST Time: 238563625008000
[vo/gpu-next/wayland] UST Time: 238563633341000
[vo/gpu-next/wayland] UST Time: 238563641667000
[vo/gpu-next/wayland] UST Time: 238563649994000
[vo/gpu-next/wayland] UST Time: 238563658341000
[vo/gpu-next/wayland] UST Time: 238563666661000
[vo/gpu-next/wayland] UST Time: 238563675049000
[vo/gpu-next/wayland] UST Time: 238563683377000
[vo/gpu-next/wayland] UST Time: 238563692777000
[vo/gpu-next/wayland] UST Time: 238563700048000
[vo/gpu-next/wayland] UST Time: 238563717916000
[vo/gpu-next/wayland] UST Time: 238563733429000
[vo/gpu-next/wayland] UST Time: 238563751232000
[vo/gpu-next/wayland] UST Time: 238563766793000
[vo/gpu-next/wayland] UST Time: 238563783470000
[vo/gpu-next/wayland] UST Time: 238563791911000
[vo/gpu-next/wayland] UST Time: 238563800143000
[vo/gpu-next/wayland] UST Time: 238563808485000
[vo/gpu-next/wayland] UST Time: 238563816836000
[vo/gpu-next/wayland] UST Time: 238563825164000
[vo/gpu-next/wayland] UST Time: 238563833618000
[vo/gpu-next/wayland] UST Time: 238563842897000
[vo/gpu-next/wayland] UST Time: 238563850192000
[vo/gpu-next/wayland] UST Time: 238563868016000
[vo/gpu-next/wayland] UST Time: 238563903317000
[vo/gpu-next/wayland] UST Time: 238563925271000
[vo/gpu-next/wayland] UST Time: 238563933620000
[vo/gpu-next/wayland] UST Time: 238563950306000
[vo/gpu-next/wayland] UST Time: 238563958634000
[vo/gpu-next/wayland] UST Time: 238563967070000
[vo/gpu-next/wayland] UST Time: 238563975314000
[vo/gpu-next/wayland] UST Time: 238563983905000
[vo/gpu-next/wayland] UST Time: 238563992034000
[vo/gpu-next/wayland] UST Time: 238564000333000
[vo/gpu-next/wayland] UST Time: 238564008779000
[vo/gpu-next/wayland] UST Time: 238564017031000
[vo/gpu-next/wayland] UST Time: 238564025446000
[vo/gpu-next/wayland] UST Time: 238564033748000
[vo/gpu-next/wayland] UST Time: 238564042057000
AV: 00:09:48 / 02:01:25 (8%) A-V:  0.014 DS: 5.02/63 Dropped: 2
Exiting... (Quit)
Dudemanguy commented 3 days ago

it can try to time it to whenever the compositor receives a callback

Other way around. The compositor sends callbacks to clients. We try hard to flip the page when we receive a frame callback. Implementation details of whatever compositors and drivers are doing under the hood should not be relevant to us. At least ideally.

That being said, it appears you are actually getting real presentation feedback numbers. The intervals between them look OK but I don't know if the base clock is actually correct (on xorg it was completely wrong) so it's worth checking to be sure. What happens if you forcibly disable presentation feedback with this patch? Is the behavior any better/worse?

diff --git a/video/out/wayland_common.c b/video/out/wayland_common.c
index dea3d0300a..4a3ea16a2c 100644
--- a/video/out/wayland_common.c
+++ b/video/out/wayland_common.c
@@ -1283,7 +1283,7 @@ static void pres_set_clockid(void *data, struct wp_presentation *pres,
     struct vo_wayland_state *wl = data;

     if (clockid == CLOCK_MONOTONIC || clockid == CLOCK_MONOTONIC_RAW)
-        wl->use_present = true;
+        wl->use_present = false;
 }

 static const struct wp_presentation_listener pres_listener = {

Maybe I should just add this as a debugging option anyway.

spaceman7777 commented 3 days ago

it can try to time it to whenever the compositor receives a callback

Other way around. The compositor sends callbacks to clients. We try hard to flip the page when we receive a frame callback. Implementation details of whatever compositors and drivers are doing under the hood should not be relevant to us. At least ideally.

That being said, it appears you are actually getting real presentation feedback numbers. The intervals between them look OK but I don't know if the base clock is actually correct (on xorg it was completely wrong) so it's worth checking to be sure. What happens if you forcibly disable presentation feedback with this patch? Is the behavior any better/worse?

diff --git a/video/out/wayland_common.c b/video/out/wayland_common.c
index dea3d0300a..4a3ea16a2c 100644
--- a/video/out/wayland_common.c
+++ b/video/out/wayland_common.c
@@ -1283,7 +1283,7 @@ static void pres_set_clockid(void *data, struct wp_presentation *pres,
     struct vo_wayland_state *wl = data;

     if (clockid == CLOCK_MONOTONIC || clockid == CLOCK_MONOTONIC_RAW)
-        wl->use_present = true;
+        wl->use_present = false;
 }

 static const struct wp_presentation_listener pres_listener = {

Maybe I should just add this as a debugging option anyway.

no change unfortunately :/

tested with the 4 permutations of vsync disabled yes/no and swap-mode fifo/default

Dudemanguy commented 3 days ago

I'm afraid there's nothing we can do then.

spaceman7777 commented 3 days ago

:/ that's a shame. it's so close. right now i'm manually generating an estimate of 1e9 / 119.88, minus the 0.18 * 119.88 (roughly how much is was underperforming before), and i'm getting the playback speed from 90fps up to 115fps.

It seems like there must be some way of getting the exact time the last frame rendered in mailbox mode. I'm just unfamiliar with the APIs involved.

Either that, or the time it took to render the frame I guess?

void vo_wayland_wait_frame(struct vo_wayland_state *wl) {
    int64_t vblank_time = 0;
//    wl->compositor->
    /* We need some vblank interval to use for the timeout in
     * this function. The order of preference of values to use is:
     * 1. vsync duration from presentation time
     * 2. refresh interval reported by presentation time
     * 3. refresh rate of the output reported by the compositor
     * 4. make up crap if vblank_time is still <= 0 (better than nothing) */
//    if (wl->use_present && wl->present->head && wl->present->head->vsync_duration > 0) {
//        vblank_time = wl->present->head->vsync_duration;
//        MP_VERBOSE(wl, "code path 1 used\n");
//    }
//    if (vblank_time <= 0 && wl->refresh_interval > 0) {
//        vblank_time = wl->refresh_interval;
//        MP_VERBOSE(wl, "code path 2 used\n");
//    }
//    if (vblank_time <= 0 && wl->current_output->refresh_rate > 0) {
//        vblank_time = 1e9 / wl->current_output->refresh_rate;
//        MP_VERBOSE(wl, "code path 3 used\n");
//    }
    MP_VERBOSE(wl, "code path 4 used %f\n", wl->current_output->refresh_rate);
    if (vblank_time <= 0) {
        // Ideally you should never reach this point.
        vblank_time = 1e9 / 119.88;
        MP_VERBOSE(wl, "code path 4 used\n");
    }

    // Completely arbitrary amount of additional time to wait.
    vblank_time -= 0.18 * vblank_time;
    int64_t finish_time = mp_time_ns() + vblank_time;

    while (wl->frame_wait && finish_time > mp_time_ns()) {
        int64_t poll_time = finish_time - mp_time_ns();
        if (poll_time < 0) {
            poll_time = 0;
        }
        wayland_dispatch_events(wl, 1, poll_time);
    }

    /* If the compositor does not have presentation time, we cannot be sure
     * that this wait is accurate. Do a hacky block with wl_display_roundtrip. */
//    if (!wl->use_present && !wl_display_get_error(wl->display)) {
//        wl_display_roundtrip(wl->display);
//        MP_VERBOSE(wl, "code path 5 used\n");
//    }

    /* Only use this heuristic if the compositor doesn't support the suspended state. */
//    if (wl->frame_wait && xdg_toplevel_get_version(wl->xdg_toplevel) < 6) {
//        // Only consider consecutive missed callbacks.
//        if (wl->timeout_count > 1) {
//            wl->hidden = true;
//            return;
//        } else {
//            wl->timeout_count += 1;
//            return;
//        }
//    }

    wl->timeout_count = 0;
}
Dudemanguy commented 3 days ago

It seems like there must be some way of getting the exact time the last frame rendered in mailbox mode.

The presentation time protocol gives us the exact time when the last frame was presented. I don't have your machine but everything thus far leads me to believe that frame pacing is very unsteady at a driver and/or compositor level for you.

spaceman7777 commented 3 days ago

The presentation time protocol gives us the exact time when the last frame was presented. I don't have your machine but everything thus far leads me to believe that frame pacing is very unsteady at a driver and/or compositor level for you.

yeah. I think I was comparing numbers between two different run configs anyway. So, idk.

Thank you for the input though.