summaryrefslogtreecommitdiff
path: root/src/render
diff options
context:
space:
mode:
authorAndrew Opalach <andrew@akon.city> 2025-02-22 10:29:15 -0500
committerAndrew Opalach <andrew@akon.city> 2025-02-22 10:29:15 -0500
commit000ce1f671d1f05b76202fd128e272e4ac9da683 (patch)
tree315812307bd8c5b7ab0efedfd29a43e52c270989 /src/render
parentc7f00bb4a70e94a5b0ded8255e34e094e884f7a0 (diff)
downloadcamu-000ce1f671d1f05b76202fd128e272e4ac9da683.tar.gz
camu-000ce1f671d1f05b76202fd128e272e4ac9da683.tar.bz2
camu-000ce1f671d1f05b76202fd128e272e4ac9da683.zip
Support new stl_global_init()
Signed-off-by: Andrew Opalach <andrew@akon.city>
Diffstat (limited to 'src/render')
-rw-r--r--src/render/queue_libplacebo.c19
-rw-r--r--src/render/renderer_libplacebo.c1
2 files changed, 11 insertions, 9 deletions
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;
}