diff options
| author | 2025-02-22 10:29:15 -0500 | |
|---|---|---|
| committer | 2025-02-22 10:29:15 -0500 | |
| commit | 000ce1f671d1f05b76202fd128e272e4ac9da683 (patch) | |
| tree | 315812307bd8c5b7ab0efedfd29a43e52c270989 /src/render | |
| parent | c7f00bb4a70e94a5b0ded8255e34e094e884f7a0 (diff) | |
| download | camu-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.c | 19 | ||||
| -rw-r--r-- | src/render/renderer_libplacebo.c | 1 |
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; } |