1
0
mirror of https://github.com/jojo61/vdr-plugin-softhdcuvid.git synced 2023-10-10 13:37:41 +02:00

Update libplacebo till API 175

This commit is contained in:
jojo61 2021-11-16 15:05:49 +01:00
parent 59a82d409e
commit cc099e24ea
2 changed files with 36 additions and 8 deletions

View File

@ -63,7 +63,7 @@ extern void ToggleLUT();
/// vdr-plugin version number. /// vdr-plugin version number.
/// Makefile extracts the version number for generating the file name /// Makefile extracts the version number for generating the file name
/// for the distribution archive. /// for the distribution archive.
static const char *const VERSION = "3.5.2" static const char *const VERSION = "3.5.3"
#ifdef GIT_REV #ifdef GIT_REV
"-GIT" GIT_REV "-GIT" GIT_REV
#endif #endif

38
video.c
View File

@ -2323,8 +2323,10 @@ void createTextureDst(CuvidDecoder * decoder, int anz, unsigned int size_x, unsi
.sampleable = true, .sampleable = true,
.host_writable = true, .host_writable = true,
.blit_dst = true, .blit_dst = true,
#if PL_API_VER < 159
.sample_mode = PL_TEX_SAMPLE_LINEAR, .sample_mode = PL_TEX_SAMPLE_LINEAR,
.address_mode = PL_TEX_ADDRESS_CLAMP, .address_mode = PL_TEX_ADDRESS_CLAMP,
#endif
#if !defined PLACEBO_GL #if !defined PLACEBO_GL
.export_handle = PL_HANDLE_FD, .export_handle = PL_HANDLE_FD,
#endif #endif
@ -2379,7 +2381,11 @@ void createTextureDst(CuvidDecoder * decoder, int anz, unsigned int size_x, unsi
} }
// make image // make image
img = &decoder->pl_frames[i]; img = &decoder->pl_frames[i];
#if PL_API_VER < 159
img->signature = i; img->signature = i;
img->width = size_x;
img->height = size_y;
#endif
img->num_planes = 2; img->num_planes = 2;
img->repr.sys = PL_COLOR_SYSTEM_BT_709; // overwritten later img->repr.sys = PL_COLOR_SYSTEM_BT_709; // overwritten later
img->repr.levels = PL_COLOR_LEVELS_TV; img->repr.levels = PL_COLOR_LEVELS_TV;
@ -2389,8 +2395,6 @@ void createTextureDst(CuvidDecoder * decoder, int anz, unsigned int size_x, unsi
img->color.light = PL_COLOR_LIGHT_SCENE_709_1886; // needs config ??? img->color.light = PL_COLOR_LIGHT_SCENE_709_1886; // needs config ???
img->color.sig_peak = 0.0f; // needs config ???? img->color.sig_peak = 0.0f; // needs config ????
img->color.sig_avg = 0.0f; img->color.sig_avg = 0.0f;
img->width = size_x;
img->height = size_y;
img->num_overlays = 0; img->num_overlays = 0;
} }
NoContext; NoContext;
@ -2438,6 +2442,7 @@ void generateVAAPIImage(CuvidDecoder * decoder, int index, const AVFrame * frame
fmt = pl_find_fourcc(p->gpu, n == 0 ? 0x20363152 : 0x32335247); // 10 Bit YUV fmt = pl_find_fourcc(p->gpu, n == 0 ? 0x20363152 : 0x32335247); // 10 Bit YUV
} }
#endif #endif
assert(fmt != NULL); assert(fmt != NULL);
#ifdef PLACEBO_GL #ifdef PLACEBO_GL
fmt->fourcc = desc.layers[n].drm_format; fmt->fourcc = desc.layers[n].drm_format;
@ -2452,8 +2457,10 @@ void generateVAAPIImage(CuvidDecoder * decoder, int index, const AVFrame * frame
.host_writable = false, .host_writable = false,
.blit_dst = true, .blit_dst = true,
.renderable = true, .renderable = true,
#if PL_API_VER < 159
.address_mode = PL_TEX_ADDRESS_CLAMP , .address_mode = PL_TEX_ADDRESS_CLAMP ,
.sample_mode = PL_TEX_SAMPLE_LINEAR, .sample_mode = PL_TEX_SAMPLE_LINEAR,
#endif
.import_handle = PL_HANDLE_DMA_BUF, .import_handle = PL_HANDLE_DMA_BUF,
.shared_mem = (struct pl_shared_mem) { .shared_mem = (struct pl_shared_mem) {
.handle = { .handle = {
@ -3198,8 +3205,18 @@ int get_RGB(CuvidDecoder * decoder)
#else #else
fmt = pl_find_named_fmt(p->gpu, "bgra8"); fmt = pl_find_named_fmt(p->gpu, "bgra8");
#endif #endif
#if PL_API_VER < 159
target.fbo = pl_tex_create(p->gpu, &(struct pl_tex_params) { target.fbo = pl_tex_create(p->gpu, &(struct pl_tex_params) {
#else
target.num_planes = 1;
target.planes[0].components = 4;
target.planes[0].component_mapping[0] = PL_CHANNEL_R;
target.planes[0].component_mapping[1] = PL_CHANNEL_G;
target.planes[0].component_mapping[2] = PL_CHANNEL_B;
target.planes[0].component_mapping[3] = PL_CHANNEL_A;
target.planes[0].texture = pl_tex_create(p->gpu, &(struct pl_tex_params) {
#endif
.w = width, .w = width,
.h = height, .h = height,
.d = 0, .d = 0,
@ -3208,8 +3225,10 @@ int get_RGB(CuvidDecoder * decoder)
.renderable = true, .renderable = true,
.blit_dst = true, .blit_dst = true,
.host_readable = true, .host_readable = true,
#if PL_API_VER < 159
.sample_mode = PL_TEX_SAMPLE_LINEAR, .sample_mode = PL_TEX_SAMPLE_LINEAR,
.address_mode = PL_TEX_ADDRESS_CLAMP, .address_mode = PL_TEX_ADDRESS_CLAMP,
#endif
}); });
#if PL_API_VER >= 100 #if PL_API_VER >= 100
target.crop.x0 = (float)decoder->OutputX * faktorx; target.crop.x0 = (float)decoder->OutputX * faktorx;
@ -3283,11 +3302,18 @@ int get_RGB(CuvidDecoder * decoder)
} }
pl_tex_download(p->gpu, &(struct pl_tex_transfer_params) { // download Data pl_tex_download(p->gpu, &(struct pl_tex_transfer_params) { // download Data
#if PL_API_VER < 159
.tex = target.fbo, .tex = target.fbo,
#else
.tex = target.planes[0].texture,
#endif
.ptr = base, .ptr = base,
}); });
#if PL_API_VER < 159
pl_tex_destroy(p->gpu, &target.fbo); pl_tex_destroy(p->gpu, &target.fbo);
#else
pl_tex_destroy(p->gpu, &target.planes[0].texture);
#endif
#ifdef PLACEBO_GL #ifdef PLACEBO_GL
unsigned char *b = base; unsigned char *b = base;
for (int i = 0 ; i < width * height * 4; i+=4) for (int i = 0 ; i < width * height * 4; i+=4)
@ -4244,12 +4270,14 @@ void make_osd_overlay(int x, int y, int width, int height)
.sampleable = true, .sampleable = true,
.host_writable = true, .host_writable = true,
.blit_dst = true, .blit_dst = true,
#if PL_API_VER < 159
.sample_mode = PL_TEX_SAMPLE_LINEAR, .sample_mode = PL_TEX_SAMPLE_LINEAR,
.address_mode = PL_TEX_ADDRESS_CLAMP, .address_mode = PL_TEX_ADDRESS_CLAMP,
#endif
}); });
} }
// make overlay // make overlay
//pl_tex_clear(p->gpu, pl->plane.texture, (float[4]) { 0 }); pl_tex_clear(p->gpu, pl->plane.texture, (float[4]) { 0 });
pl->plane.components = 4; pl->plane.components = 4;
pl->plane.shift_x = 0.0f; pl->plane.shift_x = 0.0f;
pl->plane.shift_y = 0.0f; pl->plane.shift_y = 0.0f;