Add new fields to MMCamcorderVideoStreamDataType for metadata 62/265662/5
authorJeongmo Yang <jm80.yang@samsung.com>
Tue, 26 Oct 2021 12:43:03 +0000 (21:43 +0900)
committerJeongmo Yang <jm80.yang@samsung.com>
Wed, 10 Nov 2021 02:43:46 +0000 (11:43 +0900)
[Version] 0.10.248
[Issue Type] New feature

Change-Id: Ic58d433867b4826cd85887a70ae9678e0aeefd04
Signed-off-by: Jeongmo Yang <jm80.yang@samsung.com>
packaging/libmm-camcorder.spec
src/include/mm_camcorder.h
src/include/mm_camcorder_internal.h
src/mm_camcorder_gstcommon.c

index d1d7efc..13eb2d1 100755 (executable)
@@ -1,6 +1,6 @@
 Name:       libmm-camcorder
 Summary:    Camera and recorder library
-Version:    0.10.247
+Version:    0.10.248
 Release:    0
 Group:      Multimedia/Libraries
 License:    Apache-2.0
index c6b915b..a7d35c4 100644 (file)
@@ -1855,6 +1855,10 @@ typedef struct {
        int stride[BUFFER_MAX_PLANE_NUM];    /**< Stride of each plane */
        int elevation[BUFFER_MAX_PLANE_NUM]; /**< Elevation of each plane */
        int extra_stream_id;            /**< ID of extra preview stream */
+       int focus_state;                /**< Focus state */
+       int facing_direction;           /**< Facing direction */
+       int flip;                       /**< Flip */
+       int rotation;                   /**< Rotation */
 } MMCamcorderVideoStreamDataType;
 
 
index b875239..e9400f4 100644 (file)
@@ -858,6 +858,8 @@ typedef struct mmf_camcorder {
        int support_extra_preview;
        _MMCamcorderExtraPreviewStreamFormat extra_preview_format[MM_CAMCORDER_EXTRA_PREVIEW_STREAM_NUM];
 
+       GQuark buffer_quark;                                    /**< Quark for buffer */
+
        int reserved[4];                                        /**< reserved */
 } mmf_camcorder_t;
 
index 6e708b2..c820bcc 100755 (executable)
@@ -352,6 +352,17 @@ gboolean _mmcamcorder_invoke_video_stream_cb(MMHandleType handle, GstSample *sam
                return FALSE;
        }
 
+       structure = gst_mini_object_get_qdata(GST_MINI_OBJECT_CAST(buffer), hcamcorder->buffer_quark);
+       if (structure) {
+               gst_structure_get_int(structure, "focus-state", &stream.focus_state);
+               gst_structure_get_int(structure, "facing-direction", &stream.facing_direction);
+               gst_structure_get_int(structure, "flip", &stream.flip);
+               gst_structure_get_int(structure, "rotation", &stream.rotation);
+
+               MMCAM_LOG_VERBOSE("structure[%p], [fs:%d,fd:%d,f:%d,r:%d]", structure,
+                       stream.focus_state, stream.facing_direction, stream.flip, stream.rotation);
+       }
+
        /* set zero-copy related information */
        if (hcamcorder->use_zero_copy_format) {
                t_surface = (tbm_surface_h)gst_tizen_memory_get_surface(memory);
@@ -549,13 +560,14 @@ int _mmcamcorder_create_preview_elements(MMHandleType handle)
         */
        MMCAMCORDER_G_OBJECT_SET_POINTER(sc->element[_MMCAMCORDER_VIDEOSRC_SRC].gst, "hal-name", hcamcorder->network_hal_name);
 
-       /* set camera properties */
+       /* camera properties */
        MMCAMCORDER_G_OBJECT_SET(sc->element[_MMCAMCORDER_VIDEOSRC_SRC].gst, "high-speed-fps", 0);
        MMCAMCORDER_G_OBJECT_SET(sc->element[_MMCAMCORDER_VIDEOSRC_SRC].gst, "capture-width", capture_width);
        MMCAMCORDER_G_OBJECT_SET(sc->element[_MMCAMCORDER_VIDEOSRC_SRC].gst, "capture-height", capture_height);
        MMCAMCORDER_G_OBJECT_SET(sc->element[_MMCAMCORDER_VIDEOSRC_SRC].gst, "capture-jpg-quality", capture_jpg_quality);
        MMCAMCORDER_G_OBJECT_SET(sc->element[_MMCAMCORDER_VIDEOSRC_SRC].gst, "hdr-capture", sc->info_image->hdr_capture_mode);
        MMCAMCORDER_G_OBJECT_SET(sc->element[_MMCAMCORDER_VIDEOSRC_SRC].gst, "extra-preview", extra_preview_enable);
+       MMCAMCORDER_G_OBJECT_GET(sc->element[_MMCAMCORDER_VIDEOSRC_SRC].gst, "buffer-quark", &hcamcorder->buffer_quark);
 
        _MMCAMCORDER_ELEMENT_MAKE(sc, sc->element, _MMCAMCORDER_VIDEOSRC_QUE, "queue", "videosrc_queue", element_list, err);