From cbbb0c16dc3d9c375ac2a18ca3d59cc308d41beb Mon Sep 17 00:00:00 2001 From: Andrew Opalach Date: Sun, 17 Aug 2025 20:38:35 -0400 Subject: Improve "default" params in renderer_libplacebo - Allow libass to fallback in build. - Remove incorrect log message about subtitles. Signed-off-by: Andrew Opalach --- src/render/meson.build | 101 +++++++++++++++++++-------------------- src/render/queue_libplacebo.c | 3 +- src/render/renderer_libplacebo.c | 15 ++++-- 3 files changed, 60 insertions(+), 59 deletions(-) (limited to 'src') diff --git a/src/render/meson.build b/src/render/meson.build index af68036..b567a03 100644 --- a/src/render/meson.build +++ b/src/render/meson.build @@ -126,62 +126,59 @@ elif get_option('renderer') == 'libplacebo' endif if get_option('subtitles').enabled() - libass = dependency('libass', required: false, allow_fallback: false) - if not libass.found() - libass_opts = ['test=disabled'] - if not is_windows - libass_opts += ['fontconfig=enabled'] - # libass(e46aede):meson.build:126 - fontconfig = dependency('fontconfig', - version: '>=2.10.92', - default_options: [ - 'doc=disabled', - 'nls=disabled', - 'tests=disabled', - 'tools=disabled', - 'cache-build=disabled' - ]) - else - libass_opts += ['directwrite=enabled'] - endif - # libass(e46aede):meson.build:84 - # fontconfig(72b9a48):meson.build:28 - freetype = dependency('freetype2', - version: '>=9.17.3', - default_options: [ - 'warning_level=0', - 'tests=disabled', - 'harfbuzz=disabled', - 'png=disabled' - ]) - # libass(e46aede):meson.build:90 - fribidi = dependency('fribidi', - version: '>=0.19.1', - default_options: [ - 'warning_level=0', - 'c_args=-Wno-stringop-overflow', # This doesn't work. - 'docs=false', - 'tests=false', - 'bin=false' - ]) - # freetype2(42608f7):meson.build:346 - harfbuz = dependency('harfbuzz', - version: '>=2.0.0', + libass_opts = ['test=disabled'] + if not is_windows + libass_opts += ['fontconfig=enabled'] + # libass(e46aede):meson.build:126 + fontconfig = dependency('fontconfig', + version: '>=2.10.92', default_options: [ - 'glib=disabled', - 'gobject=disabled', - 'cairo=disabled', - 'chafa=disabled', - 'freetype=disabled', - # This does not override yield, and yielding breaks the build if tests=enabled. - # https://github.com/mesonbuild/meson/issues/5214 + 'doc=disabled', + 'nls=disabled', 'tests=disabled', - 'introspection=disabled', - 'docs=disabled', - 'utilities=disabled' + 'tools=disabled', + 'cache-build=disabled' ]) - libass = dependency('libass', default_options: libass_opts) + else + libass_opts += ['directwrite=enabled'] endif + # libass(e46aede):meson.build:84 + # fontconfig(72b9a48):meson.build:28 + freetype = dependency('freetype2', + version: '>=9.17.3', + default_options: [ + 'warning_level=0', + 'tests=disabled', + 'harfbuzz=disabled', + 'png=disabled' + ]) + # libass(e46aede):meson.build:90 + fribidi = dependency('fribidi', + version: '>=0.19.1', + default_options: [ + 'warning_level=0', + 'c_args=-Wno-stringop-overflow', # This doesn't work. + 'docs=false', + 'tests=false', + 'bin=false' + ]) + # freetype2(42608f7):meson.build:346 + harfbuz = dependency('harfbuzz', + version: '>=2.0.0', + default_options: [ + 'glib=disabled', + 'gobject=disabled', + 'cairo=disabled', + 'chafa=disabled', + 'freetype=disabled', + # This does not override yield, and yielding breaks the build if tests=enabled. + # https://github.com/mesonbuild/meson/issues/5214 + 'tests=disabled', + 'introspection=disabled', + 'docs=disabled', + 'utilities=disabled' + ]) + libass = dependency('libass', default_options: libass_opts) render_deps += [libass] render_args += ['-DCAMU_HAVE_SUBTITLES'] endif diff --git a/src/render/queue_libplacebo.c b/src/render/queue_libplacebo.c index d1f7d88..90e7239 100644 --- a/src/render/queue_libplacebo.c +++ b/src/render/queue_libplacebo.c @@ -259,6 +259,7 @@ static bool map_av_frame(pl_gpu gpu, pl_tex *tex, const struct pl_source_frame * s64 pts = av_rescale_q(frame->best_effort_timestamp, stream->time_base, (AVRational){ 1, 1000 }); nn_mutex_lock(&lq->subtitle_lock); s32 change; // 1 = different position, 2 = different content. + // ass_frame = NULL and lq->ass_track->n_events = 0 can also mean parsing completely failed. ASS_Image *ass_frame = ass_render_frame(lq->ass_renderer, lq->ass_track, pts, &change); if (ass_frame) { struct camu_overlay_lp *overlay = NULL; @@ -272,8 +273,6 @@ static bool map_av_frame(pl_gpu gpu, pl_tex *tex, const struct pl_source_frame * out_frame->overlays = overlay->overlays; out_frame->num_overlays = overlay->num; ((struct pl_source_frame *)src)->frame_data = overlay; - } else if (change > 0) { - log_error("Failed to parse or render subtitle."); } nn_mutex_unlock(&lq->subtitle_lock); } diff --git a/src/render/renderer_libplacebo.c b/src/render/renderer_libplacebo.c index 562c486..6ddca70 100644 --- a/src/render/renderer_libplacebo.c +++ b/src/render/renderer_libplacebo.c @@ -28,6 +28,8 @@ static f32 clear_color[4] = { 0.f, 0.f, 0.f, 1.f }; +static struct pl_render_params default_params; + static inline void pl_swapchain_resize_compat(pl_swapchain swapchain, u32 *width, u32 *height) { s32 req_width = (s32)*width; @@ -64,9 +66,9 @@ static void renderer_lp_set(struct camu_renderer *renderer, u8 option, u8 value) case CAMU_RENDERER_SCALING: switch (value) { case CAMU_SCALING_DEFAULT: - lr->params.upscaler = pl_render_default_params.upscaler; - lr->params.downscaler = pl_render_default_params.downscaler; - lr->params.skip_anti_aliasing = pl_render_default_params.skip_anti_aliasing; + lr->params.upscaler = default_params.upscaler; + lr->params.downscaler = default_params.downscaler; + lr->params.skip_anti_aliasing = default_params.skip_anti_aliasing; break; case CAMU_SCALING_NEAREST: lr->params.upscaler = &pl_filter_nearest; @@ -268,9 +270,12 @@ static bool renderer_lp_create_renderer(struct camu_renderer *renderer, u32 *wid pl_swapchain_resize_compat(lr->swapchain, width, height); lr->have_frame = false; + //default_params = pl_render_high_quality_params; + default_params = pl_render_default_params; + //default_params = pl_render_fast_params; + al_memset(&lr->params, 0, sizeof(struct pl_render_params)); - //lr->params = pl_render_fast_params; - lr->params = pl_render_default_params; + lr->params = default_params; lr->params.deband_params = NULL; //lr->params.frame_mixer = NULL; -- cgit v1.2.3-101-g0448