Repository navigation
Update/sync 09232026 - #1
Merged
Merged
Conversation
select.lua: `properties` is a large table containing 10k+ elements, currently it's a global variable, which makes its memory cannot be reclaimed by the GC after menu closing, so let's simply change it to a local variable. console.lua: `selectable_items` has the same issue, however, it cannot be changed to a local variable because it is used by too many functions, but at least we can reset it to nil when closing console.
This filter only converts SDR to HDR, so disable it if we have already HDR on input. Note that it also seems to be disabled if HDR is disabled in Windows, but we don't check that, because filters are not related to display. Use conditional profile to enable this filter when needed, this commit is only small convenience change. Fixes: mpv-player#17800
Unfortunately ffmpeg missed the backport of <https://code.ffmpeg.org/FFmpeg/FFmpeg/commit/1a7e802c8f970e76807f08c3d3fb3513ae5a4882>, so custom IO is still segfaulting on the older versions.
Don't try to select dependent track as main and feedback to base track. To avoid situations where tracks are deselected only to select the same group again.
This is refactor only.
This joins Dolby Vision EL track with base one. libbluray current (as of 1.4.1) doesn't even expose this info, it will be available in next version, but it is less code to ask lavf for this info in fact.
To avoid truncated description.
It's always true now.
In the 2020s, now known as "the twilight years of modern civilization", Silicon Valley's two most morbidly obese failsons finally found their niche: a product that lets complete imbeciles pretend to be software developers. This was, at least for a while, a smash hit. Hordes of claudecucked vibechuds began spamming free software projects with bogus "security bugs" and associated even worse fixes, both of which they did not know how to reason about, and definitely did not care to learn how to reason about. The entire exercise, after all, was to get one's name into the list of contributors, to get ahead in a highly competitive job market of economies with equally torturous education systems. To the disturbingly moist-looking tech oligarchs recording Goldman Sachs jerk-off instructons on their podcasts, this was a profound shift in software development. Now, they no longer had to pay 6 figures to some idiot who doesn't know how to program so chooses React, and instead they can pay 6 figures to some application that doesn't know how to program so chooses React. For everyone else, it just added to the torment that is life in a modern globalised service economy, where the fruits of their labour are siphoned off and directed towards building ever grander and more opulent paedophile island resorts. But back to the code. Someone submitted a slop issue about how there's UB if you run an input command with bogus parameters. This is hardly a bug, since the commands are trusted, so the fix is "don't do dumb shit". However, contextless vibechuddies saw this as an opportunity to fire up their deeply subsidized planet-burners and shit out some code they had no idea about what it did. LLMs, failing to have any real reasoning, tried twice, and failed twice, to find the real """fix""" here. mpv-player#18144 decided that another condition needed to be added to the logical OR, whereas the subsequent mpv-player#18211 instead wanted to do an explicit cast to size_t for no fucking reason. Funnily enough, the unsignedness of size_t doesn't cause any problems here, because of the earlier check to make sure `w` is positive. Both of them missed that if `foo < bar * 4` overflows `bar`, you can just check for `foo / 4 < bar`, which is an efficient division as 4 is a power of 2, and the integer division here does not lead to any problems because the check is a range check. Do that, just to stop these stupid fucking PRs from popping up, and deny these dumb shitheads the satisfaction of getting their name into the contributor stats. Closes mpv-player#18128.
This logic can then be reused by other streams that work on static data.
The XDG Base Directory specification says “All paths set in these environment variables must be absolute. If an implementation encounters a relative path in any of these variables it should consider the path invalid and ignore it.”
Implement `lavfi-tempo` audio filter, which uses `atempo` or `ascale` form libavfilter for setting the tempo. Users (myself included) seem to be always looking for alternative tempo scalers to try, and this provides a faster implementation (or two), and may prove useful beyond performance/speed. `atempo` is picked as a default, and as a fall-back if `ascale` is not available. Signed-off-by: Mohammad AlSaleh <CE.Mohammad.AlSaleh@gmail.com>
Since haasn/libplacebo@4d82c6898 the HDR10+ metadata also sets those values, so strip it when they are not from DV.
Bumps [cross-platform-actions/action](https://github.com/cross-platform-actions/action) from 1.5.0 to 1.6.0. - [Release notes](https://github.com/cross-platform-actions/action/releases) - [Changelog](https://github.com/cross-platform-actions/action/blob/master/changelog.md) - [Commits](cross-platform-actions/action@v1.5.0...v1.6.0) --- updated-dependencies: - dependency-name: cross-platform-actions/action dependency-version: 1.6.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
The string returned by mp_tprintf is only valid within its enclosing block, but was assigned to prefix and used after that block in demux_compose_edition_title. Allocate own buffer for the generated title first before using it. Fixes: 91b6d8f ("demux: enrich edition titles with codec/resolution/bitrate info")
Log a warning and assume 'progressive' so that callers' codepaths aren't disrupted with a `nil`.
Drive-by contributions have become more and more problematic, so we need to make the rules more explicit. At the same time, we don't want to limit contributions, but make it clear that the submitter is supposed to take responsibility for the change they are sending. The biggest issue is overly verbose walls of text in issue or PR descriptions for trivial code changes. What's worse, a big part of the analysis is often simply wrong, making reviewers work twice as hard to untangle the mess. Contributions are welcome, but we have to be mindful of the time of everyone involved.
norio-nomura/action-swiftlint has not been updated since November 2020 and rebuilds a Docker image on every run from a base that is at SwiftLint 0.63.0. Use the image SwiftLint publishes itself as a container job instead, pinned to the current release.
lunarmodules/luacheck is a Docker action, which cannot run on ubuntu-slim where this job is about to move. The luacheck release ships a standalone Linux binary that only needs libc, so download the same 1.2.0 the action's image contains and run it directly.
It is published as immutable releases without a floating major tag, which is why Dependabot never proposed it, so pin the exact tag and let Dependabot follow it from here. This the runner images soon will remove Node 20, so this is needed change.
Just to not have floating version, we can update it as needed.
We can update it as needed.
The action is in maintenance-only mode, its last release is from February 2024, and it wraps actions/cache@v4, which still targets Node 20 and warns on every run. It only installs pre-commit, caches its environments and runs it, so do that in the job directly.
ubuntu-slim is a single vCPU container runner meant for short jobs.
windows-latest and windows-2025 ship the Visual Studio 2026 image since June 2026.
The only source of the stereo 3D layout was the Matroska StereoMode element read by demux_mkv. libavcodec attaches the layout signaled in the bitstream, such as the H.264 and HEVC frame packing arrangement SEI, or by the container, such as the MP4 st3d box, to the decoded frame as AV_FRAME_DATA_STEREO3D. Map it onto mp_image_params.stereo3d. Frames coming back from libavfilter keep mpv's own value restored from opaque_ref. Co-authored-by: Kacper Michajłow <kasper93@gmail.com>
fix_image_params() unconditionally overwrote the layout with the container tag, so the value mp_image_from_av_frame() reads from AV_FRAME_DATA_STEREO3D never reached the output. Fall back to the tag only when the bitstream signals nothing, the same rule rotation already follows. Fixes: mpv-player#18489 Co-authored-by: Kacper Michajłow <kasper93@gmail.com>
set_params() treated 0 as unset, but 0 is mono, so stereo-in=mono was a no-op and the only way to drop a stereo 3D mode was stereo-in=no, which wrote the invalid value -1 into the image params. Use -1 as the unset default like rotate does, so no keeps the source mode and mono overrides it.
mpv stopped inserting vf_stereo3d itself in a5610b2, the names only need to stay recognizable next to the stereo3d filter documentation that DOCS/man/vf.rst points to. The filter also accepts icl and icr as input formats.
The last caller went away with the rpi code in 343a5fd. It also regenerated the OSD with stereo mode 0, so any new user would have reset the per eye OSD layout on stereo 3D content. Drop the change tracking state that only existed for it.
Move it out of mp_image_from_av_frame() next to mp_stereo3d_names[], so demuxers can map stream side data the same way.
libavcodec maps the stream side data onto every frame it allocates through ff_get_buffer(), so this changes nothing for most decoders. Decoders that build their frames by hand, v4l2m2m and rkmpp, never see it, and the container fallback in fix_image_params() is all they get. This also matches demux_mkv, which fills the field from StereoMode.
…ntain permissions' Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
bloxgate
approved these changes
Sep 23, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Read this before you submit this pull request:
https://github.com/mpv-player/mpv/blob/master/DOCS/contribute.md
Reading this link and following the rules will get your pull request reviewed
and merged faster. Nobody wants lazy pull requests.