Release version 0.2.31 56/55656/1 accepted/tizen/mobile/20151228.233209 accepted/tizen/tv/20151228.232144 accepted/tizen/wearable/20151228.231438 submit/tizen/20151228.105332
authorJeongmo Yang <jm80.yang@samsung.com>
Mon, 28 Dec 2015 10:36:25 +0000 (19:36 +0900)
committerJeongmo Yang <jm80.yang@samsung.com>
Mon, 28 Dec 2015 10:36:25 +0000 (19:36 +0900)
1. Support encoded data preview callback

Change-Id: I42810dadcfbf37f3358060b619115d8b7a011202
Signed-off-by: Jeongmo Yang <jm80.yang@samsung.com>
include/camera.h
packaging/capi-media-camera.spec
src/camera.c

index 4440998..0fe79de 100644 (file)
@@ -227,6 +227,11 @@ typedef struct {
                        unsigned int u_size;    /**< The size of u data */
                        unsigned int v_size;    /**< The size of v data */
                } triple_plane;                 /**< triple plane frame data */
+
+               struct {
+                       unsigned char *data;    /**< The encoded data pointer */
+                       unsigned int size;              /**< The size of encoded data */
+               } encoded_plane;
        } data;
 } camera_preview_data_s;
 
index 06c6d8b..51102ba 100644 (file)
@@ -3,8 +3,8 @@
 
 Name:       capi-media-camera
 Summary:    A Camera API
-Version:    0.2.30
-Release:    2
+Version:    0.2.31
+Release:    0
 Group:      Multimedia/API
 License:    Apache-2.0
 Source0:    %{name}-%{version}.tar.gz
index 2c46bbd..05378f2 100644 (file)
@@ -561,36 +561,43 @@ static void _client_user_callback(camera_cb_info_s *cb_info, char *recv_msg, mus
                                if (num_buffer_key == 0) {
                                        /* non-zero copy */
                                        buf_pos += sizeof(MMCamcorderVideoStreamDataType);
-                                       switch (stream->num_planes) {
-                                       case 1:
-                                               frame.data.single_plane.yuv = buf_pos;
-                                               frame.data.single_plane.size = stream->data.yuv420.length_yuv;
-                                               total_size = stream->data.yuv420.length_yuv;
-                                               break;
-                                       case 2:
-                                               frame.data.double_plane.y = buf_pos;
-                                               frame.data.double_plane.y_size = stream->data.yuv420sp.length_y;
-                                               buf_pos += stream->data.yuv420sp.length_y;
-                                               frame.data.double_plane.uv = buf_pos;
-                                               frame.data.double_plane.uv_size = stream->data.yuv420sp.length_uv;
-                                               total_size = stream->data.yuv420sp.length_y + \
-                                                       stream->data.yuv420sp.length_uv;
-                                               break;
-                                       case 3:
-                                               frame.data.triple_plane.y = buf_pos;
-                                               frame.data.triple_plane.y_size = stream->data.yuv420p.length_y;
-                                               buf_pos += stream->data.yuv420p.length_y;
-                                               frame.data.triple_plane.u = buf_pos;
-                                               frame.data.triple_plane.u_size = stream->data.yuv420p.length_u;
-                                               buf_pos += stream->data.yuv420p.length_u;
-                                               frame.data.triple_plane.v = buf_pos;
-                                               frame.data.triple_plane.v_size = stream->data.yuv420p.length_v;
-                                               total_size = stream->data.yuv420p.length_y + \
-                                                       stream->data.yuv420p.length_u + \
-                                                       stream->data.yuv420p.length_v;
-                                               break;
-                                       default:
-                                               break;
+
+                                       if (stream->format == MM_PIXEL_FORMAT_ENCODED_H264) {
+                                               frame.data.encoded_plane.data = buf_pos;
+                                               frame.data.encoded_plane.size = stream->data.encoded.length_data;
+                                               total_size = stream->data.encoded.length_data;
+                                       } else {
+                                               switch (stream->num_planes) {
+                                               case 1:
+                                                       frame.data.single_plane.yuv = buf_pos;
+                                                       frame.data.single_plane.size = stream->data.yuv420.length_yuv;
+                                                       total_size = stream->data.yuv420.length_yuv;
+                                                       break;
+                                               case 2:
+                                                       frame.data.double_plane.y = buf_pos;
+                                                       frame.data.double_plane.y_size = stream->data.yuv420sp.length_y;
+                                                       buf_pos += stream->data.yuv420sp.length_y;
+                                                       frame.data.double_plane.uv = buf_pos;
+                                                       frame.data.double_plane.uv_size = stream->data.yuv420sp.length_uv;
+                                                       total_size = stream->data.yuv420sp.length_y + \
+                                                               stream->data.yuv420sp.length_uv;
+                                                       break;
+                                               case 3:
+                                                       frame.data.triple_plane.y = buf_pos;
+                                                       frame.data.triple_plane.y_size = stream->data.yuv420p.length_y;
+                                                       buf_pos += stream->data.yuv420p.length_y;
+                                                       frame.data.triple_plane.u = buf_pos;
+                                                       frame.data.triple_plane.u_size = stream->data.yuv420p.length_u;
+                                                       buf_pos += stream->data.yuv420p.length_u;
+                                                       frame.data.triple_plane.v = buf_pos;
+                                                       frame.data.triple_plane.v_size = stream->data.yuv420p.length_v;
+                                                       total_size = stream->data.yuv420p.length_y + \
+                                                               stream->data.yuv420p.length_u + \
+                                                               stream->data.yuv420p.length_v;
+                                                       break;
+                                               default:
+                                                       break;
+                                               }
                                        }
                                } else {
                                        /* zero copy */