Skip to content

Update/sync 09232026 - #1

Merged
joshyoo-topazlabs merged 1453 commits into
masterfrom
update/sync-09232026
Sep 23, 2026
Merged

joshyoo-topazlabs merged 1453 commits into
masterfrom
update/sync-09232026

Conversation

@joshyoo-topazlabs

Copy link
Copy Markdown

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.

verygoodlee and others added 30 commits June 28, 2026 16:35
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 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.
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>
kasper93 and others added 24 commits September 14, 2026 06:28
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.
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.
Comment thread .github/workflows/lint.yml Fixed
…ntain permissions'

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
@joshyoo-topazlabs
joshyoo-topazlabs merged commit 46d3bbf into master Sep 23, 2026
32 of 38 checks passed
@joshyoo-topazlabs
joshyoo-topazlabs deleted the update/sync-09232026 branch September 23, 2026 20:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.