From 000ce1f671d1f05b76202fd128e272e4ac9da683 Mon Sep 17 00:00:00 2001 From: Andrew Opalach Date: Sat, 22 Feb 2025 10:29:15 -0500 Subject: Support new stl_global_init() Signed-off-by: Andrew Opalach --- src/render/queue_libplacebo.c | 19 ++++++++++--------- src/render/renderer_libplacebo.c | 1 + 2 files changed, 11 insertions(+), 9 deletions(-) (limited to 'src/render') diff --git a/src/render/queue_libplacebo.c b/src/render/queue_libplacebo.c index b6a7477..d078cbc 100644 --- a/src/render/queue_libplacebo.c +++ b/src/render/queue_libplacebo.c @@ -215,26 +215,27 @@ static bool map_av_frame(pl_gpu gpu, pl_tex *tex, const struct pl_source_frame * )); } - if (!ok) { + if (!ok && frame->hw_frames_ctx) { if (!lq->copy_frame_fallback) { al_log_warn("frame_queue_libplacebo", "Falling back to software copy."); lq->copy_frame_fallback = true; lq->swframe = av_frame_alloc(); + enum AVPixelFormat *fmts; + av_hwframe_transfer_get_formats(frame->hw_frames_ctx, AV_HWFRAME_TRANSFER_DIRECTION_FROM, &fmts, 0); + lq->swframe->format = fmts[0]; + av_free(fmts); } ok = av_hwframe_transfer_data(lq->swframe, frame, 0) == 0; if (ok) { av_frame_copy_props(lq->swframe, frame); + ok = pl_map_avframe_ex(gpu, out_frame, pl_avframe_params( + .frame = lq->swframe, + .tex = tex + )); + av_frame_unref(lq->swframe); } } - if (lq->copy_frame_fallback) { - ok = pl_map_avframe_ex(gpu, out_frame, pl_avframe_params( - .frame = lq->swframe, - .tex = tex - )); - av_frame_unref(lq->swframe); - } - ((struct pl_source_frame *)src)->frame_data = NULL; if (ok && lq->have_subtitles) { diff --git a/src/render/renderer_libplacebo.c b/src/render/renderer_libplacebo.c index 0dcff45..8ff718e 100644 --- a/src/render/renderer_libplacebo.c +++ b/src/render/renderer_libplacebo.c @@ -233,6 +233,7 @@ static struct camu_frame_queue *renderer_lp_create_queue(struct camu_renderer *r lq->params.interpolation_threshold = 0.01f; lq->params.radius = pl_frame_mix_radius(&lr->params); lq->params.timeout = 0uL; // vsync + lq->copy_frame_fallback = false; lq->ass = lr->ass; return queue; } -- cgit v1.2.3-101-g0448