Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[media] soc-camera: Add soc_mbus_image_size

The function returns the minimum size of an image for a given number of
bytes per line (as per the V4L2 specification), width and format.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>

authored by

Laurent Pinchart and committed by
Mauro Carvalho Chehab
8929c963 4e0e620c

+20
+18
drivers/media/video/soc_mediabus.c
··· 397 397 } 398 398 EXPORT_SYMBOL(soc_mbus_bytes_per_line); 399 399 400 + s32 soc_mbus_image_size(const struct soc_mbus_pixelfmt *mf, 401 + u32 bytes_per_line, u32 height) 402 + { 403 + if (mf->layout == SOC_MBUS_LAYOUT_PACKED) 404 + return bytes_per_line * height; 405 + 406 + switch (mf->packing) { 407 + case SOC_MBUS_PACKING_2X8_PADHI: 408 + case SOC_MBUS_PACKING_2X8_PADLO: 409 + return bytes_per_line * height * 2; 410 + case SOC_MBUS_PACKING_1_5X8: 411 + return bytes_per_line * height * 3 / 2; 412 + default: 413 + return -EINVAL; 414 + } 415 + } 416 + EXPORT_SYMBOL(soc_mbus_image_size); 417 + 400 418 const struct soc_mbus_pixelfmt *soc_mbus_find_fmtdesc( 401 419 enum v4l2_mbus_pixelcode code, 402 420 const struct soc_mbus_lookup *lookup,
+2
include/media/soc_mediabus.h
··· 99 99 const struct soc_mbus_pixelfmt *soc_mbus_get_fmtdesc( 100 100 enum v4l2_mbus_pixelcode code); 101 101 s32 soc_mbus_bytes_per_line(u32 width, const struct soc_mbus_pixelfmt *mf); 102 + s32 soc_mbus_image_size(const struct soc_mbus_pixelfmt *mf, 103 + u32 bytes_per_line, u32 height); 102 104 int soc_mbus_samples_per_pixel(const struct soc_mbus_pixelfmt *mf, 103 105 unsigned int *numerator, unsigned int *denominator); 104 106 unsigned int soc_mbus_config_compatible(const struct v4l2_mbus_config *cfg,