From 76844c9c519f4366463a70c8c2366a3d5dc9046c Mon Sep 17 00:00:00 2001 From: wm4 Date: Fri, 20 Apr 2018 17:48:44 +0200 Subject: vo: move DR helper code to a separate source file So it can be reused by vo_libmpv.c, which needs to use it in a slightly different way. --- video/out/dr_helper.h | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 video/out/dr_helper.h (limited to 'video/out/dr_helper.h') diff --git a/video/out/dr_helper.h b/video/out/dr_helper.h new file mode 100644 index 0000000000..cf37c570e2 --- /dev/null +++ b/video/out/dr_helper.h @@ -0,0 +1,20 @@ +#pragma once + +// This is a helper for implementing thread-safety for DR callbacks. These need +// to allocate GPU buffers on the GPU thread (e.g. OpenGL with its forced TLS), +// and the buffers also need to be freed on the GPU thread. +struct dr_helper; + +struct mp_image; +struct mp_dispatch_queue; + +// This MUST be called on the "target" thread (it will call pthread_self()). +// dr_helper_get_image() calls will use the dispatch queue to run get_image on +// the target thread too. +struct dr_helper *dr_helper_create(struct mp_dispatch_queue *dispatch, + struct mp_image *(*get_image)(void *ctx, int imgfmt, int w, int h, + int stride_align), + void *get_image_ctx); + +struct mp_image *dr_helper_get_image(struct dr_helper *dr, int imgfmt, + int w, int h, int stride_align); -- cgit v1.2.3