github haasn/libplacebo v7.387.0

4 hours ago

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

Don't miss a new libplacebo release

NewReleases is sending notifications on new releases.