libplacebo is, in a nutshell, the core rendering algorithms and ideas of mpv rewritten as an independent library. As of today, libplacebo contains a large assortment of video processing shaders, focusing on both quality and performance. These include features such as the following:
High-quality, optimized upscaling and downscaling including support for polar filters ("Jinc"), anti-aliasing, anti-ringing and gamma correct scaling.
Dynamic HDR tone mapping, including real-time measurement of scene histogram, scene change detection, dynamic exposure control, perceptual gamut stretching, contrast recovery and more.
Native support for Dolby Vision HDR, including Profile 5 conversion to HDR/PQ or SDR, reading DV side data, and reshaping. (BL only, currently)
A colorimetrically accurate color management engine with support for soft gamut mapping, ICC profiles, accurate ITU-R BT.1886 emulation, black point compensation, and custom 3DLUTs (.cube).
A pluggable, extensible custom shader system. This can be used to arbitrarily extend the range of custom shaders to include popular user shaders like RAVU, FSRCNNX, or Anime4K. See the mpv wiki on user scripts for more information.
High performance film grain synthesis for AV1 and H.274, allowing media players to offload this part of decoding from the CPU to the GPU.
Tunable, fast debanding and deinterlacing shaders.
High quality gamma-correct dithering, including error diffusion modes.
Every attempt was made to provide these features at a
Homepage
Download
Recent Releases
7.349.003 Jun 2024 05:45
minor feature:
v7.349.0-rc1
This release introduces a number of minor and maintenance changes, and.
Bumps the major version to v7 in order to clean up old deprecations. The
Main focus was on ing and performance improvements, with some new
API additions as a side product of that.
Additions:
Add pl_peak_detect_params.black_cutoff, ing unnatural flickering from.
Encoding noise near black
Add pl_queue_params.drift_compensation (and PL_QUEUE_DEFAULTS), to help.
Adjust for slight discrepencancies due to e.g. 0.1 differences between 60.00
Hz and 59.94 Hz.
Add pl_cache_signature() to test if a cache object needs to be updated.
Add pl_map_avdovi_metadata().
Add PL_ALPHA_NONE, distinguishing itself from PL_ALPHA_UNKNOWN.
Add pl_frame_clear_tiles().
Add pl_gpu_limits.max_mapped_vram.
Add pl_color_linearize() and pl_color_delinearize().
Add pl_color_ primaries,system,transfer _name(s).
Add fourcc codes for AB48 and AR48.
Add support for dovi extension block parsing in utils/libav.h.
Changes:
Remove fields deprecated in libplacebo v5.
Deprecate pl_frame_map_avdovi_metadata(), see pl_map_avdovi_metadata() for
a replacement.
Deprecate pl_render_params.skip_target_clearing and.blend_against_tiles.
Instead introduce new fields pl_render_params.background and.border, which
Can be set to an explicit value to control how the background and border are
Drawn (respectively).
ICC profiles with well-known transfer functions are now identified as such.
And performance enhancements:
Accidentally removed symbols (cubic samplers).
Improve cache efficiency of plplay.
Segfault when writing to oddly sized vulkan buffers under some.
Circumstances
Various extension checks for GLES.
Rgba8 not being marked host-readable on GLES.
Bit shift of vulkan P010 frames.
Also allow built-in fast paths for custom filters which are equivalent to.
Built-in filters
Massively improve compilation time of large ortho samplers, by not unrolling.
Past a certain point
Build past certain versions of glslang.
Slightly modify debanding a
6.338.230 Jan 2024 12:03
minor feature:
This release fixes a number of minor issues with v6.338.1, in particular a fix for the new caching subsystem when using custom cache callbacks.
Fixes and performance improvements:
- properly align AVFrame planes when using oddly-sized pixels
- correct some reported GPU buffer size limits
- properly report texture transfer failures
- avoid ICC-related error spam
- avoid using some deprecated APIs and syntax
- fix pl_find_filter_* missing symbols
- fix duplicate initialization of vulkan debug layers
- fix assertion when using custom cache allocator API
- avoid redundant scale shader variable declarations
- avoid redundant linearization step when using sigmoid scaling
- avoid generating redundant dependency on xxhash
- fix possible integer overflow on 32-bit textures
- fix cropped frame dimensions when using vulkan hwframes