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.
/// Makefile extracts the version number for generating the file name
/// for the distribution archive.
static const char *const VERSION = "3.5.2"
static const char *const VERSION = "3.5.3"
#ifdef GIT_REV
"-GIT" GIT_REV
#endif

42
video.c
View File

@ -2323,8 +2323,10 @@ void createTextureDst(CuvidDecoder * decoder, int anz, unsigned int size_x, unsi
.sampleable = true,
.host_writable = true,
.blit_dst = true,
#if PL_API_VER < 159
.sample_mode = PL_TEX_SAMPLE_LINEAR,
.address_mode = PL_TEX_ADDRESS_CLAMP,
#endif
#if !defined PLACEBO_GL
.export_handle = PL_HANDLE_FD,
#endif
@ -2379,7 +2381,11 @@ void createTextureDst(CuvidDecoder * decoder, int anz, unsigned int size_x, unsi
}
// make image
img = &decoder->pl_frames[i];
#if PL_API_VER < 159
img->signature = i;
img->width = size_x;
img->height = size_y;
#endif
img->num_planes = 2;
img->repr.sys = PL_COLOR_SYSTEM_BT_709; // overwritten later
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.sig_peak = 0.0f; // needs config ????
img->color.sig_avg = 0.0f;
img->width = size_x;
img->height = size_y;
img->num_overlays = 0;
}
NoContext;
@ -2435,9 +2439,10 @@ void generateVAAPIImage(CuvidDecoder * decoder, int index, const AVFrame * frame
if (decoder->PixFmt == AV_PIX_FMT_NV12) {
fmt = pl_find_named_fmt(p->gpu, n == 0 ? "r8" : "rg8"); // 8 Bit YUV
} else {
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);
#ifdef PLACEBO_GL
fmt->fourcc = desc.layers[n].drm_format;
@ -2452,8 +2457,10 @@ void generateVAAPIImage(CuvidDecoder * decoder, int index, const AVFrame * frame
.host_writable = false,
.blit_dst = true,
.renderable = true,
#if PL_API_VER < 159
.address_mode = PL_TEX_ADDRESS_CLAMP ,
.sample_mode = PL_TEX_SAMPLE_LINEAR,
#endif
.import_handle = PL_HANDLE_DMA_BUF,
.shared_mem = (struct pl_shared_mem) {
.handle = {
@ -3198,8 +3205,18 @@ int get_RGB(CuvidDecoder * decoder)
#else
fmt = pl_find_named_fmt(p->gpu, "bgra8");
#endif
#if PL_API_VER < 159
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,
.h = height,
.d = 0,
@ -3208,8 +3225,10 @@ int get_RGB(CuvidDecoder * decoder)
.renderable = true,
.blit_dst = true,
.host_readable = true,
#if PL_API_VER < 159
.sample_mode = PL_TEX_SAMPLE_LINEAR,
.address_mode = PL_TEX_ADDRESS_CLAMP,
#endif
});
#if PL_API_VER >= 100
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
#if PL_API_VER < 159
.tex = target.fbo,
#else
.tex = target.planes[0].texture,
#endif
.ptr = base,
});
#if PL_API_VER < 159
pl_tex_destroy(p->gpu, &target.fbo);
#else
pl_tex_destroy(p->gpu, &target.planes[0].texture);
#endif
#ifdef PLACEBO_GL
unsigned char *b = base;
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,
.host_writable = true,
.blit_dst = true,
#if PL_API_VER < 159
.sample_mode = PL_TEX_SAMPLE_LINEAR,
.address_mode = PL_TEX_ADDRESS_CLAMP,
#endif
});
}
// 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.shift_x = 0.0f;
pl->plane.shift_y = 0.0f;