summaryrefslogtreecommitdiffstats
path: root/video
diff options
context:
space:
mode:
Diffstat (limited to 'video')
-rw-r--r--video/filter/vf.c5
-rw-r--r--video/out/vo_vdpau.c6
-rw-r--r--video/vaapi.c19
3 files changed, 16 insertions, 14 deletions
diff --git a/video/filter/vf.c b/video/filter/vf.c
index 6ad484c7ff..b16c0b3627 100644
--- a/video/filter/vf.c
+++ b/video/filter/vf.c
@@ -269,12 +269,15 @@ static vf_instance_t *vf_open_filter(struct vf_chain *c, const char *name,
for (i = 0; args && args[2 * i]; i++)
l += 1 + strlen(args[2 * i]) + 1 + strlen(args[2 * i + 1]);
l += strlen(name);
- char str[l + 1];
+ char *str = malloc(l + 1);
+ if (!str)
+ return NULL;
char *p = str;
p += sprintf(str, "%s", name);
for (i = 0; args && args[2 * i]; i++)
p += sprintf(p, " %s=%s", args[2 * i], args[2 * i + 1]);
MP_INFO(c, "Opening video filter: [%s]\n", str);
+ free(str);
return vf_open(c, name, args);
}
diff --git a/video/out/vo_vdpau.c b/video/out/vo_vdpau.c
index 73aae1d45c..72a08adac7 100644
--- a/video/out/vo_vdpau.c
+++ b/video/out/vo_vdpau.c
@@ -651,13 +651,15 @@ static void generate_osd_part(struct vo *vo, struct sub_bitmaps *imgs)
CHECK_VDP_WARNING(vo, "OSD: error when creating surface");
}
if (imgs->scaled) {
- char zeros[sfc->packer->used_width * format_size];
- memset(zeros, 0, sizeof(zeros));
+ char *zeros = calloc(sfc->packer->used_width, format_size);
+ if (!zeros)
+ return;
vdp_st = vdp->bitmap_surface_put_bits_native(sfc->surface,
&(const void *){zeros}, &(uint32_t){0},
&(VdpRect){0, 0, sfc->packer->used_width,
sfc->packer->used_height});
CHECK_VDP_WARNING(vo, "OSD: error uploading OSD bitmap");
+ free(zeros);
}
if (sfc->surface == VDP_INVALID_HANDLE)
diff --git a/video/vaapi.c b/video/vaapi.c
index a8d27d50e4..1b4cdf6000 100644
--- a/video/vaapi.c
+++ b/video/vaapi.c
@@ -95,19 +95,16 @@ struct va_image_formats {
static void va_get_formats(struct mp_vaapi_ctx *ctx)
{
- int num = vaMaxNumImageFormats(ctx->display);
- VAImageFormat entries[num];
- VAStatus status = vaQueryImageFormats(ctx->display, entries, &num);
+ struct va_image_formats *formats = talloc_ptrtype(ctx, formats);
+ formats->num = vaMaxNumImageFormats(ctx->display);
+ formats->entries = talloc_array(formats, VAImageFormat, formats->num);
+ VAStatus status = vaQueryImageFormats(ctx->display, formats->entries,
+ &formats->num);
if (!CHECK_VA_STATUS(ctx, "vaQueryImageFormats()"))
return;
- struct va_image_formats *formats = talloc_ptrtype(ctx, formats);
- formats->entries = talloc_array(formats, VAImageFormat, num);
- formats->num = num;
- MP_VERBOSE(ctx, "%d image formats available:\n", num);
- for (int i = 0; i < num; i++) {
- formats->entries[i] = entries[i];
- MP_VERBOSE(ctx, " %s\n", VA_STR_FOURCC(entries[i].fourcc));
- }
+ MP_VERBOSE(ctx, "%d image formats available:\n", formats->num);
+ for (int i = 0; i < formats->num; i++)
+ MP_VERBOSE(ctx, " %s\n", VA_STR_FOURCC(formats->entries[i].fourcc));
ctx->image_formats = formats;
}