[ACR-1299] Update preview data structure for RGB format 02/188802/3 accepted/tizen/5.0/unified/20181102.014138 accepted/tizen/unified/20180914.073202 submit/tizen/20180913.075210 submit/tizen_5.0/20181101.000002
authorJeongmo Yang <jm80.yang@samsung.com>
Mon, 10 Sep 2018 10:46:54 +0000 (19:46 +0900)
committerJeongmo Yang <jm80.yang@samsung.com>
Wed, 12 Sep 2018 01:53:50 +0000 (10:53 +0900)
[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 <jm80.yang@samsung.com>
include/camera.h
include/camera_private.h
packaging/capi-media-camera.spec
src/camera.c
test/camera_test.c

index c5223f4..a374a1e 100644 (file)
@@ -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;
 
index 27bc050..fc8c578 100644 (file)
@@ -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)*/
index 4edd005..f0fae57 100644 (file)
@@ -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
index 092a012..28b1399 100644 (file)
@@ -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:
index 97b7610..bfe68d7 100644 (file)
@@ -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;