Loading drivers/media/platform/msm/vpu/vpu_configuration.c +11 −12 Original line number Diff line number Diff line Loading @@ -1004,26 +1004,25 @@ u32 get_bytesperline(u32 width, u32 bitsperpixel, u32 input_bytesperline) u32 padding_factor = CEIL(bytesperline, PADDING); u32 min_bytesperline = PADDING * padding_factor; if (input_bytesperline < min_bytesperline) /* input too small */ if (!input_bytesperline) { return min_bytesperline; else if (input_bytesperline % PADDING) /* must be multiple of padding */ return min_bytesperline; else if (input_bytesperline > SZ_32K) /* not too big */ return min_bytesperline; else return input_bytesperline; /* input bytesperline was fine */ } else if (input_bytesperline < min_bytesperline || input_bytesperline % PADDING || input_bytesperline > SZ_16K) { pr_err("Invalid input bytesperline %d\n", input_bytesperline); return 0; } else { return input_bytesperline; } } int is_format_valid(struct v4l2_format *fmt) { #define VPU_HEIGHT_MINIMUM 72 #define VPU_HEIGHT_MULTIPLE 8 #define VPU_DIM_MINIMUM 72 u32 height = fmt->fmt.pix_mp.height; u32 width = fmt->fmt.pix_mp.width; if (height < VPU_HEIGHT_MINIMUM) return 0; if ((height / VPU_HEIGHT_MULTIPLE) * VPU_HEIGHT_MULTIPLE != height) if (width < VPU_DIM_MINIMUM || height < VPU_DIM_MINIMUM) return 0; if ((height & 1) || (width & 1)) /* must be even */ return 0; Loading drivers/media/platform/msm/vpu/vpu_ioctl.c +13 −6 Original line number Diff line number Diff line Loading @@ -486,9 +486,9 @@ int vpu_get_fmt(struct vpu_client *client, struct v4l2_format *f) int vpu_try_fmt(struct vpu_client *client, struct v4l2_format *f) { int i; u32 hfi_pixelformat; const struct vpu_format_desc *vpu_format; u32 hfi_pixelformat, bytesperline; int i; hfi_pixelformat = translate_pixelformat_to_hfi(f->fmt.pix_mp.pixelformat); Loading @@ -496,18 +496,25 @@ int vpu_try_fmt(struct vpu_client *client, struct v4l2_format *f) if (!vpu_format) return -EINVAL; pr_debug("width = %d, height = %d\n", f->fmt.pix_mp.width, f->fmt.pix_mp.height); if (!is_format_valid(f)) return -EINVAL; f->fmt.pix_mp.num_planes = vpu_format->num_planes; for (i = 0; i < vpu_format->num_planes; i++) { f->fmt.pix_mp.plane_fmt[i].bytesperline = get_bytesperline(f->fmt.pix_mp.width, bytesperline = get_bytesperline(f->fmt.pix_mp.width, vpu_format->plane[i].bitsperpixel, f->fmt.pix_mp.plane_fmt[i].bytesperline); if (!bytesperline) { pr_err("Invalid plane %d bytesperline\n", i); return -EINVAL; } f->fmt.pix_mp.plane_fmt[i].bytesperline = bytesperline; f->fmt.pix_mp.plane_fmt[i].sizeimage = get_sizeimage(f->fmt.pix_mp.plane_fmt[i].bytesperline, f->fmt.pix_mp.height, get_sizeimage(bytesperline, f->fmt.pix_mp.height, vpu_format->plane[i].heightfactor); } Loading drivers/media/platform/msm/vpu/vpu_translate.c +1 −2 Original line number Diff line number Diff line Loading @@ -122,8 +122,7 @@ u32 translate_pixelformat_to_hfi(u32 api_pix_fmt) break; default: hfi_pix_fmt = PIXEL_FORMAT_MAX; pr_warn("Unsupported api pixel format: %d (%4c)\n", api_pix_fmt, (char)api_pix_fmt); pr_warn("Unsupported api pixel format: %d\n", api_pix_fmt); break; } Loading Loading
drivers/media/platform/msm/vpu/vpu_configuration.c +11 −12 Original line number Diff line number Diff line Loading @@ -1004,26 +1004,25 @@ u32 get_bytesperline(u32 width, u32 bitsperpixel, u32 input_bytesperline) u32 padding_factor = CEIL(bytesperline, PADDING); u32 min_bytesperline = PADDING * padding_factor; if (input_bytesperline < min_bytesperline) /* input too small */ if (!input_bytesperline) { return min_bytesperline; else if (input_bytesperline % PADDING) /* must be multiple of padding */ return min_bytesperline; else if (input_bytesperline > SZ_32K) /* not too big */ return min_bytesperline; else return input_bytesperline; /* input bytesperline was fine */ } else if (input_bytesperline < min_bytesperline || input_bytesperline % PADDING || input_bytesperline > SZ_16K) { pr_err("Invalid input bytesperline %d\n", input_bytesperline); return 0; } else { return input_bytesperline; } } int is_format_valid(struct v4l2_format *fmt) { #define VPU_HEIGHT_MINIMUM 72 #define VPU_HEIGHT_MULTIPLE 8 #define VPU_DIM_MINIMUM 72 u32 height = fmt->fmt.pix_mp.height; u32 width = fmt->fmt.pix_mp.width; if (height < VPU_HEIGHT_MINIMUM) return 0; if ((height / VPU_HEIGHT_MULTIPLE) * VPU_HEIGHT_MULTIPLE != height) if (width < VPU_DIM_MINIMUM || height < VPU_DIM_MINIMUM) return 0; if ((height & 1) || (width & 1)) /* must be even */ return 0; Loading
drivers/media/platform/msm/vpu/vpu_ioctl.c +13 −6 Original line number Diff line number Diff line Loading @@ -486,9 +486,9 @@ int vpu_get_fmt(struct vpu_client *client, struct v4l2_format *f) int vpu_try_fmt(struct vpu_client *client, struct v4l2_format *f) { int i; u32 hfi_pixelformat; const struct vpu_format_desc *vpu_format; u32 hfi_pixelformat, bytesperline; int i; hfi_pixelformat = translate_pixelformat_to_hfi(f->fmt.pix_mp.pixelformat); Loading @@ -496,18 +496,25 @@ int vpu_try_fmt(struct vpu_client *client, struct v4l2_format *f) if (!vpu_format) return -EINVAL; pr_debug("width = %d, height = %d\n", f->fmt.pix_mp.width, f->fmt.pix_mp.height); if (!is_format_valid(f)) return -EINVAL; f->fmt.pix_mp.num_planes = vpu_format->num_planes; for (i = 0; i < vpu_format->num_planes; i++) { f->fmt.pix_mp.plane_fmt[i].bytesperline = get_bytesperline(f->fmt.pix_mp.width, bytesperline = get_bytesperline(f->fmt.pix_mp.width, vpu_format->plane[i].bitsperpixel, f->fmt.pix_mp.plane_fmt[i].bytesperline); if (!bytesperline) { pr_err("Invalid plane %d bytesperline\n", i); return -EINVAL; } f->fmt.pix_mp.plane_fmt[i].bytesperline = bytesperline; f->fmt.pix_mp.plane_fmt[i].sizeimage = get_sizeimage(f->fmt.pix_mp.plane_fmt[i].bytesperline, f->fmt.pix_mp.height, get_sizeimage(bytesperline, f->fmt.pix_mp.height, vpu_format->plane[i].heightfactor); } Loading
drivers/media/platform/msm/vpu/vpu_translate.c +1 −2 Original line number Diff line number Diff line Loading @@ -122,8 +122,7 @@ u32 translate_pixelformat_to_hfi(u32 api_pix_fmt) break; default: hfi_pix_fmt = PIXEL_FORMAT_MAX; pr_warn("Unsupported api pixel format: %d (%4c)\n", api_pix_fmt, (char)api_pix_fmt); pr_warn("Unsupported api pixel format: %d\n", api_pix_fmt); break; } Loading