From bb5f4008b3cb5b5f684f9cbf8948267eb45bdfb5 Mon Sep 17 00:00:00 2001 From: Jeongmo Yang Date: Mon, 10 Sep 2018 19:46:54 +0900 Subject: [PATCH] [ACR-1299] Update preview data structure for RGB format [Version] 0.4.15 [Profile] Common [Issue Type] Update [Dependency module] N/A [Test] [M(T) - Boot=(OK), sdb=(OK), Home=(OK), Touch=(OK), Version=tizen-unified_20180910.1] Change-Id: Ie5c61826c6c063da09fb16c2ffb63f95f00334da Signed-off-by: Jeongmo Yang --- include/camera.h | 5 ++++ include/camera_private.h | 2 +- packaging/capi-media-camera.spec | 2 +- src/camera.c | 5 ++++ test/camera_test.c | 42 ++++++++++++++++++++------------ 5 files changed, 38 insertions(+), 18 deletions(-) diff --git a/include/camera.h b/include/camera.h index c5223f4..a374a1e 100644 --- a/include/camera.h +++ b/include/camera.h @@ -263,6 +263,11 @@ typedef struct { unsigned char *data; /**< The depth data pointer */ unsigned int size; /**< The size of depth data */ } depth_plane; /**< Depth plane frame data (Since 5.0) */ + + struct { + unsigned char *data; /**< The RGB data pointer */ + unsigned int size; /**< The size of RGB data */ + } rgb_plane; /**< RGB plane frame data (Since 5.0) */ } data; } camera_preview_data_s; diff --git a/include/camera_private.h b/include/camera_private.h index 27bc050..fc8c578 100644 --- a/include/camera_private.h +++ b/include/camera_private.h @@ -80,7 +80,7 @@ typedef struct _camera_stream_data_s { struct { unsigned char *data; unsigned int length_data; - } encoded, depth; + } encoded, depth, rgb; } data; /**< pointer of captured stream */ int data_type; /**< data type */ unsigned int length_total; /**< total length of stream buffer (in byte)*/ diff --git a/packaging/capi-media-camera.spec b/packaging/capi-media-camera.spec index 4edd005..f0fae57 100644 --- a/packaging/capi-media-camera.spec +++ b/packaging/capi-media-camera.spec @@ -1,6 +1,6 @@ Name: capi-media-camera Summary: A Camera API -Version: 0.4.14 +Version: 0.4.15 Release: 0 Group: Multimedia/API License: Apache-2.0 diff --git a/src/camera.c b/src/camera.c index 092a012..28b1399 100644 --- a/src/camera.c +++ b/src/camera.c @@ -879,6 +879,11 @@ static void _camera_preview_frame_create(camera_stream_data_s *stream, int num_b frame->data.depth_plane.data = buf_pos; frame->data.depth_plane.size = stream->data.depth.length_data; total_size = stream->data.depth.length_data; + } else if (stream->format == MM_PIXEL_FORMAT_RGBA || + stream->format == MM_PIXEL_FORMAT_ARGB) { + frame->data.rgb_plane.data = buf_pos; + frame->data.rgb_plane.size = stream->data.rgb.length_data; + total_size = stream->data.rgb.length_data; } else { switch (stream->num_planes) { case 1: diff --git a/test/camera_test.c b/test/camera_test.c index 97b7610..bfe68d7 100644 --- a/test/camera_test.c +++ b/test/camera_test.c @@ -464,28 +464,38 @@ static void _camera_interrupt_started_cb(camera_policy_e policy, camera_state_e void _camera_preview_cb(camera_preview_data_s *frame, void *user_data) { -#if 0 - FILE *fp = fopen("/opt/usr/media/test.yuv", "a"); +#if 1 + FILE *fp = fopen(DEFAULT_FILE_PATH"/test.raw", "a"); if (fp == NULL) { - g_print("\n============ file open failed ===========================\n"); + g_print("\n==== file[%s] open failed ====\n", DEFAULT_FILE_PATH"/test.raw"); return; } - switch (frame->num_of_planes) { - case 1: - fwrite(frame->data.single_plane.yuv, 1, frame->data.single_plane.size, fp); - case 2: - fwrite(frame->data.double_plane.y, 1, frame->data.double_plane.y_size, fp); - fwrite(frame->data.double_plane.uv, 1, frame->data.double_plane.uv_size, fp); - case 3: - fwrite(frame->data.triple_plane.y, 1, frame->data.triple_plane.y_size, fp); - fwrite(frame->data.triple_plane.u, 1, frame->data.triple_plane.u_size, fp); - fwrite(frame->data.triple_plane.v, 1, frame->data.triple_plane.v_size, fp); - default: - break; + if (frame->format == CAMERA_PIXEL_FORMAT_RGBA || + frame->format == CAMERA_PIXEL_FORMAT_ARGB) { + fwrite(frame->data.rgb_plane.data, 1, frame->data.rgb_plane.size, fp); + } else if (frame->format == CAMERA_PIXEL_FORMAT_INVZ) { + fwrite(frame->data.depth_plane.data, 1, frame->data.depth_plane.size, fp); + } else { + switch (frame->num_of_planes) { + case 1: + fwrite(frame->data.single_plane.yuv, 1, frame->data.single_plane.size, fp); + break; + case 2: + fwrite(frame->data.double_plane.y, 1, frame->data.double_plane.y_size, fp); + fwrite(frame->data.double_plane.uv, 1, frame->data.double_plane.uv_size, fp); + break; + case 3: + fwrite(frame->data.triple_plane.y, 1, frame->data.triple_plane.y_size, fp); + fwrite(frame->data.triple_plane.u, 1, frame->data.triple_plane.u_size, fp); + fwrite(frame->data.triple_plane.v, 1, frame->data.triple_plane.v_size, fp); + break; + default: + break; + } } - g_print("file write done ---\n"); + g_print("==== file[%s] write done ====\n", DEFAULT_FILE_PATH"/test.raw"); fclose(fp); fp = NULL; -- 2.34.1