summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Kocialkowski <contact@paulk.fr>2014-07-01 21:40:55 +0200
committerPaul Kocialkowski <contact@paulk.fr>2014-07-01 21:40:55 +0200
commit8ea7d441ff49c8cd2e489bb107dd7fa987f80c2a (patch)
tree91a54e09472e983d89698ddd223d384757b59c63
parent5c76d7f3f606e0e565190480af9916c0f01ce8d0 (diff)
downloaddevice_samsung_galaxys2-common-8ea7d441ff49c8cd2e489bb107dd7fa987f80c2a.zip
device_samsung_galaxys2-common-8ea7d441ff49c8cd2e489bb107dd7fa987f80c2a.tar.gz
device_samsung_galaxys2-common-8ea7d441ff49c8cd2e489bb107dd7fa987f80c2a.tar.bz2
camera: Move utils to smdk4210_utils.c
Signed-off-by: Paul Kocialkowski <contact@paulk.fr>
-rw-r--r--camera/Android.mk1
-rw-r--r--camera/smdk4210_camera.c95
-rw-r--r--camera/smdk4210_camera.h14
-rw-r--r--camera/smdk4210_utils.c116
4 files changed, 126 insertions, 100 deletions
diff --git a/camera/Android.mk b/camera/Android.mk
index 95c9701..417b04f 100644
--- a/camera/Android.mk
+++ b/camera/Android.mk
@@ -21,6 +21,7 @@ LOCAL_SRC_FILES := \
smdk4210_camera.c \
smdk4210_exif.c \
smdk4210_param.c \
+ smdk4210_utils.c \
smdk4210_v4l2.c
LOCAL_C_INCLUDES := \
diff --git a/camera/smdk4210_camera.c b/camera/smdk4210_camera.c
index 3fe8377..bf0d8b9 100644
--- a/camera/smdk4210_camera.c
+++ b/camera/smdk4210_camera.c
@@ -306,101 +306,6 @@ void smdk4210_camera_deinit(struct smdk4210_camera *smdk4210_camera)
smdk4210_v4l2_close(smdk4210_camera, 2);
}
-// Utils
-
-int smdk4210_camera_buffer_length(int width, int height, int format)
-{
- float bpp;
- int buffer_length;
-
- switch (format) {
- case V4L2_PIX_FMT_RGB32:
- bpp = 4.0f;
- buffer_length = (int) ((float) width * (float) height * bpp);
- break;
- case V4L2_PIX_FMT_RGB565:
- case V4L2_PIX_FMT_YUYV:
- case V4L2_PIX_FMT_UYVY:
- case V4L2_PIX_FMT_VYUY:
- case V4L2_PIX_FMT_YVYU:
- case V4L2_PIX_FMT_YUV422P:
- case V4L2_PIX_FMT_NV16:
- case V4L2_PIX_FMT_NV61:
- bpp = 2.0f;
- buffer_length = (int) ((float) width * (float) height * bpp);
- break;
- case V4L2_PIX_FMT_NV12:
- case V4L2_PIX_FMT_NV12T:
- case V4L2_PIX_FMT_YUV420:
- case V4L2_PIX_FMT_YVU420:
- bpp = 1.5f;
- buffer_length = SMDK4210_CAMERA_ALIGN(width * height);
- buffer_length += SMDK4210_CAMERA_ALIGN(width * height / 2);
- break;
- case V4L2_PIX_FMT_NV21:
- bpp = 1.5f;
- buffer_length = (int) ((float) width * (float) height * bpp);
- break;
- case V4L2_PIX_FMT_JPEG:
- case V4L2_PIX_FMT_INTERLEAVED:
- default:
- buffer_length = -1;
- bpp = 0;
- break;
- }
-
- return buffer_length;
-}
-
-int smdk4210_gralloc_format(int format)
-{
- switch (format) {
- case V4L2_PIX_FMT_NV21:
- return HAL_PIXEL_FORMAT_YCrCb_420_SP;
- case V4L2_PIX_FMT_YUV420:
- return HAL_PIXEL_FORMAT_YV12;
- case V4L2_PIX_FMT_RGB565:
- return HAL_PIXEL_FORMAT_RGB_565;
- case V4L2_PIX_FMT_RGB32:
- return HAL_PIXEL_FORMAT_RGBX_8888;
- default:
- return HAL_PIXEL_FORMAT_YCrCb_420_SP;
- }
-}
-
-int smdk4210_scale_yuv422(void *src, int src_width, int src_height, void *dst,
- int dst_width, int dst_height)
-{
- unsigned char *src_p, *dst_p;
- int stride_x, stride_y;
- int step_x, step_y;
- int start_y;
- int x, y;
-
- step_x = src_width / dst_width;
- step_y = src_height / dst_height;
-
- stride_x = step_x * 2;
- stride_y = src_width * 2;
-
- dst_p = (unsigned char *) dst;
-
- for (y = 0; y < dst_height; y++) {
- start_y = stride_y * step_y * y;
-
- for (x = 0; x < dst_width; x += 2) {
- src_p = (unsigned char *) src + start_y + stride_x * x;
-
- *dst_p++ = *src_p++;
- *dst_p++ = *src_p++;
- *dst_p++ = *src_p++;
- *dst_p++ = *src_p++;
- }
- }
-
- return 0;
-}
-
// Params
int smdk4210_camera_params_init(struct smdk4210_camera *smdk4210_camera, int id)
diff --git a/camera/smdk4210_camera.h b/camera/smdk4210_camera.h
index 77aaba6..7086c35 100644
--- a/camera/smdk4210_camera.h
+++ b/camera/smdk4210_camera.h
@@ -287,11 +287,6 @@ enum m5mo_af_status {
* Camera
*/
-int smdk4210_camera_buffer_length(int width, int height, int format);
-int smdk4210_gralloc_format(int format);
-int smdk4210_scale_yuv422(void *src, int src_width, int src_height, void *dst,
- int dst_width, int dst_height);
-
int smdk4210_camera_params_init(struct smdk4210_camera *smdk4210_camera, int id);
int smdk4210_camera_params_apply(struct smdk4210_camera *smdk4210_camera);
@@ -341,6 +336,15 @@ char *smdk4210_params_string_get(struct smdk4210_camera *smdk4210_camera);
int smdk4210_params_string_set(struct smdk4210_camera *smdk4210_camera, char *string);
/*
+ * Utils
+ */
+
+int smdk4210_camera_buffer_length(int width, int height, int format);
+int smdk4210_gralloc_format(int format);
+int smdk4210_scale_yuv422(void *src, int src_width, int src_height, void *dst,
+ int dst_width, int dst_height);
+
+/*
* V4L2
*/
diff --git a/camera/smdk4210_utils.c b/camera/smdk4210_utils.c
new file mode 100644
index 0000000..ecdc80e
--- /dev/null
+++ b/camera/smdk4210_utils.c
@@ -0,0 +1,116 @@
+/*
+ * Copyright (C) 2013-2014 Paul Kocialkowski <contact@paulk.fr>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <stdlib.h>
+
+#define LOG_TAG "smdk4210_camera"
+#include <utils/Log.h>
+
+#include "smdk4210_camera.h"
+
+int smdk4210_camera_buffer_length(int width, int height, int format)
+{
+ float bpp;
+ int buffer_length;
+
+ switch (format) {
+ case V4L2_PIX_FMT_RGB32:
+ bpp = 4.0f;
+ buffer_length = (int) ((float) width * (float) height * bpp);
+ break;
+ case V4L2_PIX_FMT_RGB565:
+ case V4L2_PIX_FMT_YUYV:
+ case V4L2_PIX_FMT_UYVY:
+ case V4L2_PIX_FMT_VYUY:
+ case V4L2_PIX_FMT_YVYU:
+ case V4L2_PIX_FMT_YUV422P:
+ case V4L2_PIX_FMT_NV16:
+ case V4L2_PIX_FMT_NV61:
+ bpp = 2.0f;
+ buffer_length = (int) ((float) width * (float) height * bpp);
+ break;
+ case V4L2_PIX_FMT_NV12:
+ case V4L2_PIX_FMT_NV12T:
+ case V4L2_PIX_FMT_YUV420:
+ case V4L2_PIX_FMT_YVU420:
+ bpp = 1.5f;
+ buffer_length = SMDK4210_CAMERA_ALIGN(width * height);
+ buffer_length += SMDK4210_CAMERA_ALIGN(width * height / 2);
+ break;
+ case V4L2_PIX_FMT_NV21:
+ bpp = 1.5f;
+ buffer_length = (int) ((float) width * (float) height * bpp);
+ break;
+ case V4L2_PIX_FMT_JPEG:
+ case V4L2_PIX_FMT_INTERLEAVED:
+ default:
+ buffer_length = -1;
+ bpp = 0;
+ break;
+ }
+
+ return buffer_length;
+}
+
+int smdk4210_gralloc_format(int format)
+{
+ switch (format) {
+ case V4L2_PIX_FMT_NV21:
+ return HAL_PIXEL_FORMAT_YCrCb_420_SP;
+ case V4L2_PIX_FMT_YUV420:
+ return HAL_PIXEL_FORMAT_YV12;
+ case V4L2_PIX_FMT_RGB565:
+ return HAL_PIXEL_FORMAT_RGB_565;
+ case V4L2_PIX_FMT_RGB32:
+ return HAL_PIXEL_FORMAT_RGBX_8888;
+ default:
+ return HAL_PIXEL_FORMAT_YCrCb_420_SP;
+ }
+}
+
+int smdk4210_scale_yuv422(void *src, int src_width, int src_height, void *dst,
+ int dst_width, int dst_height)
+{
+ unsigned char *src_p, *dst_p;
+ int stride_x, stride_y;
+ int step_x, step_y;
+ int start_y;
+ int x, y;
+
+ step_x = src_width / dst_width;
+ step_y = src_height / dst_height;
+
+ stride_x = step_x * 2;
+ stride_y = src_width * 2;
+
+ dst_p = (unsigned char *) dst;
+
+ for (y = 0; y < dst_height; y++) {
+ start_y = stride_y * step_y * y;
+
+ for (x = 0; x < dst_width; x += 2) {
+ src_p = (unsigned char *) src + start_y + stride_x * x;
+
+ *dst_p++ = *src_p++;
+ *dst_p++ = *src_p++;
+ *dst_p++ = *src_p++;
+ *dst_p++ = *src_p++;
+ }
+ }
+
+ return 0;
+}