Ecosyste.ms: OpenCollective
An open API service for software projects hosted on Open Collective.
github.com/haasn/libplacebo
Official mirror of libplacebo
https://github.com/haasn/libplacebo
Very hard to get precise controls here.
5ef779c769472b85c8a00d8100815d717e903009 authored over 1 year ago by Niklas Haas <[email protected]>
Based on two-pass design where the main interpolation kernel is combined
with a smaller, second ...
Normalizes the two branches by simply assigning to `c` in the `in`
branch.
To help with debugging this stuff a bit more.
2e82bf5588ee5fad5d5f64781f76bc729f030732 authored over 1 year ago by Niklas Haas <[email protected]>
This can force the program into certain framerates on VRR displays, for
testing purposes. (Or it...
This effectively makes the render loop time itself to the system clock
instead of the display/vs...
Based on nanosleep(). No point in using clock_nanosleep() since
nanosleep() already implies CLOC...
Rather than always adding the measured delta from the previous frame,
use a single clock as the ...
Sorely needed for being able to programmaticaly debug or reason about
the contents of a pl_queue.
There are 240 Hz monitors on the market now. 200 Hz is definitely not a
valid cut-off point.
Instead of floats. Floating precision is around 1e-7f, so after ~10000
seconds of playback (a fe...
When source FPS exceeds display FPS (and we know this fact), we should
increase the number of fr...
In VFR sources, delaying for 8 frames unnecessarily prolongs the time it
takes to react to chang...
To mirror the D3D11 option, and to work around driver-related dithering
bugs.
See-Also: https:/...
4d20c8b6b1ad86e18ec79c5e69b754314373810b authored over 1 year ago by Niklas Haas <[email protected]>
No inherent need to use the sync2 command here because we don't require
the extra granularity pr...
Notably missing on MoltenVK. Work around it for now.
Fixes: https://github.com/haasn/libplacebo...
1d7092334dead779c42f15fd66b01e3086d472f6 authored over 1 year ago by Niklas Haas <[email protected]>
Not very efficient (does a bunch of allocations per submit), but such is
the price of being on o...
Requires some annoying boilerplate to map the flags and barriers, but
fortunately we can get awa...
After this became available inside vk_cmdpool. Saves a bunch of
redundant boilerplate struct pas...
And even if we need this in the future, we can get it from the
vk_cmdpool now.
As a convenience.
c5ff38bb1967a637b6da36a8ecdcad7a36182e3d authored over 1 year ago by Niklas Haas <[email protected]>
The cutoff radius was being computed with the normalized radius, rather
than the scaled radius, ...
Instead of forcing everything but linear/saturation to clip, force
everything *but* clip to line...
This reverts commit d03db4df6c4242daf47ee40cdd426533ccfa66c5.
Fixes: https://github.com/mpv-pla...
384f8d73e9ec118e61c16593ed753e7d096e3bc4 authored over 1 year ago by Niklas Haas <[email protected]>
Needed to ensure the extended capabilities required by vf_libplacebo
(i.e. rendering) are actual...
Fixes: https://github.com/mpv-player/mpv/issues/11905
9855b663f1da050c36dd2278ceb372044c44fc73 authored over 1 year ago by Niklas Haas <[email protected]>
If expressions would end up with the same slugify'd name, we need to
properly deduplicate them, ...
After a long deliberation period, I settled on this design to improve
both the workflow of writi...
More of a test / proof of concept than anything else.
c8267bd426f5e767604c75a0079e61e18bb36e1f authored over 1 year ago by Niklas Haas <[email protected]>
This is one of the main use cases where it actually provides a benefit,
as this significantly re...
Including the new #pragma GLSL macro
6c581096ed950f6e244e742177f763eff7f47e6b authored over 1 year ago by Niklas Haas <[email protected]>Required for the GLSL pragma refactor step.
6097f32494adb74d1715b51d53cf1c7df566ed6c authored over 1 year ago by Niklas Haas <[email protected]>For consistency and better syntax highlighting.
eb19a6afbdaba839361cef30784682c532a19be3 authored over 1 year ago by Niklas Haas <[email protected]>
To better show the size of the 'protected region' in a various color
mapping scheme, as well as ...
For overlays, which are probably saturated synthetic graphics, this
probably leads to a subjecti...
Much better than clipping here, if the target brightness is less than
the monitor's brightness (...
This can be done for free by just multiplying the appropriate conversion
matrix into the colorsp...
No reason to forbid this, because it's implemented in pure GLSL.
Override the force-tone-mapping...
Ideally we'd somehow auto-detect this based on detected GPU performance
or type (iGPU vs discret...
32d2276ae337665a254b91ac616b1ceb0c8d1564 authored over 1 year ago by Niklas Haas <[email protected]>
Splits peak detection and tone-mapping params into standard and high
quality. The former disable...
This is not a performance/quality trade-off option.
d5a7474877f27c992636780f10ddfc1afaa4825f authored over 1 year ago by Niklas Haas <[email protected]>
It really is impossible to stress how much peak detection improves
out-of-the-box HDR tone-mappi...
We hard-code gaussian for this so there's no reason to disable it here.
I'm pretty sure it was a...
Enables histogram estimation and contrast recovery on high quality
systems out of the box.
To match the existing logic of silently disabling them if the FBO is
non-storable. Probably bett...
Always enables this feature if requested by the user, period.
ff7756a76cadb4fe02eb21a267dd8923bfd33d7f authored over 1 year ago by Niklas Haas <[email protected]>
Except when upscaling, in which case we update the peak before
upscaling.
Note that there is no...
fcf81635df58489f33e2d8521f56eb876dbf666e authored over 1 year ago by Niklas Haas <[email protected]>But not PRE/POST-kernel, since no kernel was applied.
ad052218c552bd0a5d46fa891dee4d57304318c2 authored over 1 year ago by Niklas Haas <[email protected]>
Image overlays haven't been drawn directly onto the indirect image in
quite a while, making this...
Substantially improves performance on systems that are constrained by
global atomic pressure, li...
Makes user-applied modifications visible.
e158e30774147ec6e4e770c66d57e8214b81e97b authored over 1 year ago by Niklas Haas <[email protected]>
With the new tone-mapping in place, this now produces a substantially
better image out-of-the-box.
More descriptive name.
59c393f505dca6071a58785b6c809fad41e90ce3 authored over 1 year ago by Niklas Haas <[email protected]>
But not 100%, just somewhere in the middle. Constant tuned to preserve a
nice balance between ex...
So I can actually understand what's going on a bit more easily.
8a9aa4e2523781f8d9e43d8ed68a4fe0f07a83b9 authored over 1 year ago by Niklas Haas <[email protected]>Requires indirection via pl_buf_copy.
Fixes: https://github.com/mpv-player/mpv/issues/11864
e2e235a0f8fec04ac37061eca9b2877afbb3b697 authored over 1 year ago by Niklas Haas <[email protected]>
The reason this new curve works so well is because it incorporates a bit
of hard clipping in RGB...
To allow re-using it in other places.
3042c927979250032feb301a6978f987b10b7460 authored over 1 year ago by Niklas Haas <[email protected]>
Instead of applying this complicated soft-knee along the gamma axis, as
inspired by the gamut ma...
This reverts commit f016363d589a1ffd744be65a14455e4e79750bbd.
This change had unintended conseq...
ab68ef88171f6252fabf7d8ade0cdfa2e958d7a2 authored over 1 year ago by Niklas Haas <[email protected]>
After rotating hue vectors, strongly saturated colors may exceed the
source chromaticity bounds ...
Check for unguarded availability to avoid calling possiblly not
available weak symbols.
Make this less confusing re: HLG, now that we no longer allow users to
change the OOTF.
As advertised/documented. Also clamp to the upper bound of 10k nits
(sane PQ value range), and h...
The old logic incorrectly inferred SDR min_luma from the static
max_luma, even if maximum lumina...
Add a series of explicit tests to ensure not regressing this logic
during refactors. Note that t...
min_luma missing should not count against HDR10 metadata validity,
especially given that this va...
In particular, how values of 0 are treated as "unknown / missing".
38d0a682beea6c8468bba67aa8fb7fcc50ad3d50 authored over 1 year ago by Niklas Haas <[email protected]>
To be more informative about what values we're setting and why. I also
decided to drop the HDR b...
When requesting a dynamic metadata type, we currently fall back to the
fixed 10k from PQ. It mak...
It's better to filter those illegal values out closer to the source
(i.e. when parsing the struct).
Sanity clamp here, to avoid regressing badly broken metadata samples.
b6f2c374132ad06cf24d9099dcd75597796ad1ae authored over 1 year ago by Niklas Haas <[email protected]>a03718eecf1d6da2d02ffeacb858e48331702a4b authored over 1 year ago by Kacper Michajłow <[email protected]>
5aedc0ec08e06110ed4994dd0611c9150429b8df authored over 1 year ago by Kacper Michajłow <[email protected]>
This is in sync with mpv minimum value. If anything just for test we can
go so low.
This is the minimum value in mpv and users expect it to work. So let them
set it so low, for bet...
This is a documentation bug only, the actual sover is and continues to
be 290.
cc2d043a950fb37b6f89952fd03b16720eb57e27 authored over 1 year ago by Kacper Michajłow <[email protected]>
76edbcce9751aa1731c8f3726260a8916371bcd9 authored over 1 year ago by Kacper Michajłow <[email protected]>
92db71aaef35140f715a283aa17a61631c81e445 authored over 1 year ago by Kacper Michajłow <[email protected]>
Makes this transition a lot softer, especially around blue, to preserve
gradients better. We sti...
Significantly improves cache hit rate by allowing us to have a separate
per-hue cache before and...
Costs us basically nothing and improves the result slightly.
81df430b365a1d9f410f7d24ad3d9962082ceb7a authored over 1 year ago by Niklas Haas <[email protected]>Absolutely massive speedup on typical systems, for very little overhead.
Probably not the smart...
aa0822f6c23e674367125dbd61572ebc844e1e0d authored over 1 year ago by Niklas Haas <[email protected]>No longer needed after 8ceb7a544, at least in theory.
e82e5c8bdb28094db1f8e0aca621637b391bacdf authored over 1 year ago by Niklas Haas <[email protected]>
Move this to a dedicated struct so we can more easily replace the cache
by a different one. Stil...
Dramatically improves appearance on test samples and other badly
out-of-range content. In such c...
This helps hide issues with badly out-of-range values in certain test
patterns, Mad Max, etc.
And re-organize slightly.
b9b2b59d6f7e4ca966e6a40734d99be7b382f9e4 authored over 1 year ago by Niklas Haas <[email protected]>
After the recent series of improvements, LMS hybrid mixing is no longer
needed and actually hurt...
Hue is the most important axis, and even 45 is not enough by far.
Increase it considerably. Idea...
For my own experimentation.
5f8d419b3e447561292b8a4fcaa737205f20a782 authored over 1 year ago by Niklas Haas <[email protected]>
Substantially higher quality than the default trilinear interpolation,
but also significantly sl...
Could probably be improved further by avoiding some redundant mix()
calls on the texture coordin...
Do the calculation with 64-bit floating points, converting the final
matrix back to 32-bit float...
47f1ce7c13d64794cf2b8682319151182140113e authored over 1 year ago by Niklas Haas <[email protected]>
4e-3 was an extremely optimistic, and in practice too low, cutoff value,
resulting in very bad 3...
Documentation fix only.
d1de874f6daa48c5257c832692cdcd39fdece48f authored over 1 year ago by Niklas Haas <[email protected]>To be odd, instead of even, for accuracy reasons.
a36906babf0d8abf8ede542e52af416919a77203 authored over 1 year ago by Niklas Haas <[email protected]>