From d7c94fbe1aba32bc88bcd13985f0436d1fe9de3b Mon Sep 17 00:00:00 2001 From: hwangjae lee Date: Mon, 14 May 2018 11:26:12 +0900 Subject: [PATCH] [9610] include: linux: videodev2_exynos_media.h file is added Change-Id: Id4c02c2fcbc5c554d3b2bf44677bee7baf9bc2ca Signed-off-by: hwangjae lee --- include/uapi/linux/videodev2_exynos_media.h | 91 +++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 include/uapi/linux/videodev2_exynos_media.h diff --git a/include/uapi/linux/videodev2_exynos_media.h b/include/uapi/linux/videodev2_exynos_media.h new file mode 100644 index 000000000000..a82ad9b8fe06 --- /dev/null +++ b/include/uapi/linux/videodev2_exynos_media.h @@ -0,0 +1,91 @@ +/* + * Video for Linux Two header file for Exynos + * + * Copyright (c) 2012 Samsung Electronics Co., Ltd. + * http://www.samsung.com + * + * This header file contains several v4l2 APIs to be proposed to v4l2 + * community and until being accepted, will be used restrictly for Exynos. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#ifndef __LINUX_VIDEODEV2_EXYNOS_MEDIA_H +#define __LINUX_VIDEODEV2_EXYNOS_MEDIA_H + +#include + +/* + * C O N T R O L S + */ +/* CID base for Exynos controls (USER_CLASS) */ +#define V4L2_CID_EXYNOS_BASE (V4L2_CTRL_CLASS_USER | 0x2000) + +/* cacheable configuration */ +#define V4L2_CID_CACHEABLE (V4L2_CID_EXYNOS_BASE + 10) + +/* for color space conversion equation selection */ +#define V4L2_CID_CSC_EQ_MODE (V4L2_CID_EXYNOS_BASE + 100) +#define V4L2_CID_CSC_EQ (V4L2_CID_EXYNOS_BASE + 101) +#define V4L2_CID_CSC_RANGE (V4L2_CID_EXYNOS_BASE + 102) + +/* for DRM playback scenario */ +#define V4L2_CID_CONTENT_PROTECTION (V4L2_CID_EXYNOS_BASE + 201) + +/* + * V I D E O I M A G E F O R M A T + */ +/* 1 plane -- one Y, one Cb + Cr interleaved, non contiguous */ +#define V4L2_PIX_FMT_NV12N v4l2_fourcc('N', 'N', '1', '2') +#define V4L2_PIX_FMT_NV12NT v4l2_fourcc('T', 'N', '1', '2') + +/* 1 plane -- one Y, one Cb, one Cr, non contiguous */ +#define V4L2_PIX_FMT_YUV420N v4l2_fourcc('Y', 'N', '1', '2') + +/* 1 plane -- 8bit Y, 2bit Y, 8bit Cb + Cr interleaved, 2bit Cb + Cr interleaved, non contiguous */ +#define V4L2_PIX_FMT_NV12N_10B v4l2_fourcc('B', 'N', '1', '2') +#define V4L2_PIX_FMT_NV12M_S10B v4l2_fourcc('B', 'M', '1', '2') +#define V4L2_PIX_FMT_NV21M_S10B v4l2_fourcc('B', 'M', '2', '1') +#define V4L2_PIX_FMT_NV16M_S10B v4l2_fourcc('B', 'M', '1', '6') +#define V4L2_PIX_FMT_NV61M_S10B v4l2_fourcc('B', 'M', '6', '1') +#define V4L2_PIX_FMT_NV12M_P010 v4l2_fourcc('P', 'M', '1', '2') +#define V4L2_PIX_FMT_NV21M_P010 v4l2_fourcc('P', 'M', '2', '1') +#define V4L2_PIX_FMT_NV16M_P210 v4l2_fourcc('P', 'M', '1', '6') +#define V4L2_PIX_FMT_NV61M_P210 v4l2_fourcc('P', 'M', '6', '1') + +/* helper macros */ +#ifndef __ALIGN_UP +#define __ALIGN_UP(x, a) (((x) + ((a) - 1)) & ~((a) - 1)) +#endif + +#define NV12N_Y_SIZE(w, h) (__ALIGN_UP((w), 16) * __ALIGN_UP((h), 16) + 256) +#define NV12N_CBCR_SIZE(w, h) (__ALIGN_UP((__ALIGN_UP((w), 16) * (__ALIGN_UP((h), 16) / 2) + 256), 16)) +#define NV12N_CBCR_BASE(base, w, h) ((base) + NV12N_Y_SIZE((w), (h))) +#define NV12N_10B_Y_8B_SIZE(w, h) (__ALIGN_UP((w), 64) * __ALIGN_UP((h), 16) + 256) +#define NV12N_10B_Y_2B_SIZE(w, h) ((__ALIGN_UP((w) / 4, 16) * __ALIGN_UP((h), 16) + 64)) +#define NV12N_10B_CBCR_8B_SIZE(w, h) (__ALIGN_UP((__ALIGN_UP((w), 64) * (__ALIGN_UP((h), 16) / 2) + 256), 16)) +#define NV12N_10B_CBCR_2B_SIZE(w, h) ((__ALIGN_UP((w) / 4, 16) * (__ALIGN_UP((h), 16) / 2) + 64)) +#define NV12N_10B_CBCR_BASE(base, w, h) ((base) + NV12N_10B_Y_8B_SIZE((w), (h)) + NV12N_10B_Y_2B_SIZE((w), (h))) + +#define YUV420N_Y_SIZE(w, h) (__ALIGN_UP((w), 16) * __ALIGN_UP((h), 16) + 256) +#define YUV420N_CB_SIZE(w, h) (__ALIGN_UP((__ALIGN_UP((w) / 2, 16) * (__ALIGN_UP((h), 16) / 2) + 256), 16)) +#define YUV420N_CR_SIZE(w, h) (__ALIGN_UP((__ALIGN_UP((w) / 2, 16) * (__ALIGN_UP((h), 16) / 2) + 256), 16)) +#define YUV420N_CB_BASE(base, w, h) ((base) + YUV420N_Y_SIZE((w), (h))) +#define YUV420N_CR_BASE(base, w, h) (YUV420N_CB_BASE((base), (w), (h)) + YUV420N_CB_SIZE((w), (h))) + +#define NV12M_Y_SIZE(w, h) (__ALIGN_UP((w), 64) * __ALIGN_UP((h), 16) + 256) +#define NV12M_CBCR_SIZE(w, h) ((__ALIGN_UP((w), 64) * __ALIGN_UP((h), 16) / 2) + 256) +#define NV12M_Y_2B_SIZE(w, h) (__ALIGN_UP((w / 4), 16) * __ALIGN_UP((h), 16) + 256) +#define NV12M_CBCR_2B_SIZE(w, h) ((__ALIGN_UP((w / 4), 16) * __ALIGN_UP((h), 16) / 2) + 256) + +#define NV16M_Y_SIZE(w, h) (__ALIGN_UP((w), 64) * __ALIGN_UP((h), 16) + 256) +#define NV16M_CBCR_SIZE(w, h) (__ALIGN_UP((w), 64) * __ALIGN_UP((h), 16) + 256) +#define NV16M_Y_2B_SIZE(w, h) (__ALIGN_UP((w / 4), 16) * __ALIGN_UP((h), 16) + 256) +#define NV16M_CBCR_2B_SIZE(w, h) (__ALIGN_UP((w / 4), 16) * __ALIGN_UP((h), 16) + 256) + +#define S10B_8B_STRIDE(w) (__ALIGN_UP((w), 64)) +#define S10B_2B_STRIDE(w) (__ALIGN_UP((w / 4), 16)) + +#endif /* __LINUX_VIDEODEV2_EXYNOS_MEDIA_H */ -- 2.20.1