diff options
Diffstat (limited to 'video')
-rw-r--r-- | video/filter/vf.c | 5 | ||||
-rw-r--r-- | video/out/vo_vdpau.c | 6 | ||||
-rw-r--r-- | video/vaapi.c | 19 |
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; } |