v7.387.0
This release introduces a new compositor API with support for multiple
video inputs, JSON-based scene descriptions and animation, alongside
support for Dolby Vision Profile 7 FEL. It also includes significant
improvements to color management, HDR tone mapping, frame interpolation,
deinterlacing and GPU backends, as well as numerous bug fixes.
Additions:
- add PL_COLOR_TRC_SCRGB and PL_COLOR_SCRGB_WHITE
- add pl_frame.pixel_aspect_ratio and populate it from FFmpeg metadata
- add pl_vulkan_queue.flags
- add pl_dovi_metadata.nlq, .nlq_active, and pl_dovi_nlq_data.hdr_in_max
- add pl_frame.enhancement_layer
- add pl_shader_decode_color_ex and pl_color_decode
- add pl_color_decode_args.enhancement_layer and .primaries
- add pl_color_repr_limits
- add pl_color_map_params.film_strength and .mastering_clip
- add pl_color_repr_decode_ex and pl_shader_encode_color_ex
- add pl_frame_size
- add pl_vec2d(f), pl_vec3d(f) and matrix/transform vector helpers
- add pl_compositor API for multi-input video compositing
- add pl_render_params.transparency
- add pl_renderer_reset
- add PL_OPT_STRUCT and pl_opt_data.path for nested options
- add pl_scene API for JSON-based scene graphs with animated parameters
- add pl_compositor and pl_input colorspace and chroma loc overrides
- add pl_queue_set_status and pl_queue_get_status
- add support for Dolby Vision Profile 7 FEL merging
- support VK_COLOR_SPACE_PASS_THROUGH_EXT in Vulkan swapchain colorspace
hints - support VK_KHR_internally_synchronized_queues when explicitly
requested
Changes:
- deprecate pl_shader_decode_color in favor of pl_shader_decode_color_ex
- deprecate pl_avdovi_metadata_supported and
pl_avframe_params.map_dovi_force - change frame queue timing parameters and estimates from float to
double - change the units of pl_dovi_metadata.comp.pivots
- preserve full-range signal bit depth during color representation
normalization - increase MAX_SHEXP_SIZE from 32 to 64 for custom shaders
- fall back to MaxCLL when mastering display peak luminance is
unavailable - blend frames in linear light, while overlays remain blended in the
target transfer function - respect signaled black level metadata for PQ sources instead of always
forcing zero nits - re-enable linear-light downscaling for HDR sources
- fix luminance handling for input frames with ICC profiles
- mark the AMD proprietary Vulkan driver as host_ptr_slow
Fixes and enhancements:
- workaround broken timeline semaphore support on MoltenVK
- fix AV1 film grain at 1:1 output on D3D11
- fix flashing artifacts with certain temporal scaling filter kernels
- fix background blur edge cases and simplify blurred background
rendering - fix attempting to merge failed shaders
- fix AV1 film grain vertical flip on flipped targets
- fix non-multiplane format bit_shift not being set in pl_map_avframe*
- fix FBO format fallback for narrower component counts
- workaround rendering artifacts on Nvidia Vulkan drivers
- workaround rendering artifacts on Nvidia OpenGL drivers
- disable broken glInvalidateFramebuffer on Nvidia OpenGL
- improve Vulkan Host Image Copy compatibility and handling
- fix alpha mode handling during frame blending
- preserve energy during orthogonal scaling
- snap alpha values near 0 or 1 before blending
- improve numerical stability of sigmoidization
- preserve true black instead of raising it to PL_COLOR_HDR_BLACK
- prevent dithering from lifting true black off zero
- fix BWDIF clamping range calculation
- match input and output luminance for SDR-to-SDR rendering
- respect transfer function hints for D3D11 swapchains
- avoid clamping output luminance when tone mapping is disabled
- use HDR10+ maximum scene luminance metadata and fix scene_max fallback
- fix FPS estimation with deferred second fields in frame queues
- improve deinterlacing, including bob interpolation, border handling
and BWDIF edge cases - fix several Vulkan synchronization issues
- fix YCgCo-Re/Ro color range calculations
- fix full-range YUV decoding
- reject rendering to UINT/SINT formats
- clip integer outputs to the permissible signal range without
unnecessarily clamping floating-point outputs - correct output quantization and dithering to the target sample grid
- keep sRGB background colors display-referred on SDR targets
- improve HDR tone mapping with cone-space film response and
mastering-peak soft clipping - perform tone mapping in the mastering display's RGB space
- run HDR peak detection alongside dynamic scene metadata
- improve dynamic tone mapping targets and scene luminance measurements
- avoid scaling debanding grain with SDR white
- disable tone mapping visualization for overlays
- improve XYZ decoding and encoding, including support for arbitrary RGB
primaries and SMPTE ST 428-1 - detect OpenGL shader subgroup support
- improve OpenGL ES precision and floating-point texture support
- correct Dolby Vision reshaping according to ETSI GS CCM 001
- reject white points on the gamut boundary in pl_primaries_valid
- discard invalid mastering display primaries in FFmpeg and dav1d
mappers - clamp PQ signals before applying the EOTF
- fix several use-after-free bugs, integer overflows and data races
- skip no-op rendering stages to reduce unnecessary processing
- improve frame queue resource cleanup, error reporting and still-frame
handling