mpv-player / mpv-player/mpv

[playback] Seamless branching files drop frames on merging spot

Open
#11,538 17 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

os:win
Dominant language
C
Stars
37k
Forks
3.5k
Avg merge
1d 10h
Merged PRs (30d)
22

Description

Important Information

Information:

  • mpv version: 0.35.0-348-g0f13c38e
  • Windows Version: Win11 x64
  • Source of the mpv binary: shinchiro mpv-winbuild
Reproduction steps

Use any file that was stitched together (two or more small file parts) in the process of creation. In my case, this is a 4k blu ray where the movie is split into many small parts due to having both an extended and theatrical version on one disc. Playing back such a file leads to unexpected behavior. In my case whenever such a "merging spot" (the spot where the first part ends and the second part starts) is hit the frame drop counter gets reset. This happens regardless of displaying framerate. The other issue comes when you play the file at its own (resolution)framerate. In this case 2160@23pHDR. In this scenario, many/visible frame drops occur when the merging spot is being hit in addition to the frame drop counter reset.

I created a small sample, that shows the issue.
mpv.com file-reset-framedrop.mkv -vo=gpu-next -hwdec=d3d11va -v -msg-level=all=v,ffmpeg/video=status

In the log you can see this one

[cplayer] VO: Description: Video output based on libplacebo
[vo/gpu-next] reconfig to 3840x2160 d3d11[p010] bt.2020-ncl/bt.2020/pq/limited/display SP=4.359606 CL=uhd
[vo/gpu-next/win32] reset window bounds: 961:31:958:1000
[vo/gpu-next] Window size: 958x1000 (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, 231) 958x538
[vo/gpu-next] Video scale: 0.249479/0.249074
[vo/gpu-next] OSD borders: l=0 t=231 r=0 b=231
[vo/gpu-next] Video borders: l=0 t=231 r=0 b=231
[statusline] AV: 00:00:03 / 00:00:06 (51%) A-V:  0.004

It looks like a completely new file has been opened...

Expected behavior

Just play the file without introducing additional frame drops and do not reset counters.

Actual behavior

When the merging spot is reached and played, frame drops occur and the framedrop counter is reset.

Log file

file-reset.txt
(I just cleaned it a bit, I only deleted some [ffmpeg/video] hevc: Skipping NAL unit 63 messages...)

Sample files

I hope file.io is okay... The link will expire in about 4 months.
Inside the zip, you will find the mkv file
file-reset-framedrop.zip

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the issue with mpv.com file-reset-framedrop.mkv -vo=gpu-next -hwdec=d3d11va -v -msg-level=all=v,ffmpeg/video=status and inspect the verbose log around the merging spot. Done means stitched files play through joins without additional frame drops or resetting the frame-drop counter.

Written by the indexing model from the issue text.

Assessment

Tech stack
c
Domain
audio-video-rtc
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.