summaryrefslogtreecommitdiff
path: root/include/media
diff options
context:
space:
mode:
authorGuennadi Liakhovetski <g.liakhovetski@gmx.de>2011-05-13 13:21:36 -0300
committerMauro Carvalho Chehab <mchehab@redhat.com>2011-05-20 12:04:22 -0300
commit93f116d595e9aa7dca5f6507376d6995f217d420 (patch)
tree683617d71b12678ed976cc5c2eaa7a2e5bcb9d11 /include/media
parentee1b6f4bf3aa827b0daf65d7441e75212604b1c9 (diff)
downloadlinux-3.10-93f116d595e9aa7dca5f6507376d6995f217d420.tar.gz
linux-3.10-93f116d595e9aa7dca5f6507376d6995f217d420.tar.bz2
linux-3.10-93f116d595e9aa7dca5f6507376d6995f217d420.zip
[media] V4L: soc-camera: avoid huge arrays, caused by changed format codes
Recently mediabus pixel format codes have become a part of the user- space API, at which time their values also have been changed from contiguous numbers, running from 0 to sparse numbers with values around 0x1000, 0x2000, 0x3000... This made them unsuitable for the use as array indices. This patch switches soc-camera internal format look-ups to not depend on values of those macros. Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'include/media')
-rw-r--r--include/media/soc_mediabus.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/include/media/soc_mediabus.h b/include/media/soc_mediabus.h
index 3b5a70b9752..3eed98ed02f 100644
--- a/include/media/soc_mediabus.h
+++ b/include/media/soc_mediabus.h
@@ -58,6 +58,20 @@ struct soc_mbus_pixelfmt {
u8 bits_per_sample;
};
+/**
+ * struct soc_mbus_lookup - Lookup FOURCC IDs by mediabus codes for pass-through
+ * @code: mediabus pixel-code
+ * @fmt: pixel format description
+ */
+struct soc_mbus_lookup {
+ enum v4l2_mbus_pixelcode code;
+ struct soc_mbus_pixelfmt fmt;
+};
+
+const struct soc_mbus_pixelfmt *soc_mbus_find_fmtdesc(
+ enum v4l2_mbus_pixelcode code,
+ const struct soc_mbus_lookup *lookup,
+ int n);
const struct soc_mbus_pixelfmt *soc_mbus_get_fmtdesc(
enum v4l2_mbus_pixelcode code);
s32 soc_mbus_bytes_per_line(u32 width, const struct soc_mbus_pixelfmt *mf);