[Release version 0.10.30] Fix bug - invalid display setting 04/57104/1 accepted/tizen/mobile/20160115.113231 accepted/tizen/tv/20160115.113244 accepted/tizen/wearable/20160115.113301 submit/tizen/20160115.070542
authorJeongmo Yang <jm80.yang@samsung.com>
Fri, 15 Jan 2016 06:29:05 +0000 (15:29 +0900)
committerJeongmo Yang <jm80.yang@samsung.com>
Fri, 15 Jan 2016 06:29:05 +0000 (15:29 +0900)
Change-Id: I4782c6a1a8feda88823f4bd4f731da9f3831913e
Signed-off-by: Jeongmo Yang <jm80.yang@samsung.com>
packaging/libmm-camcorder.spec
src/include/mm_camcorder_gstcommon.h
src/mm_camcorder_attribute.c
src/mm_camcorder_client.c
src/mm_camcorder_gstcommon.c

index 053b754..119a034 100644 (file)
@@ -2,7 +2,7 @@
 
 Name:       libmm-camcorder
 Summary:    Camera and recorder library
-Version:    0.10.29
+Version:    0.10.30
 Release:    0
 Group:      Multimedia/Libraries
 License:    Apache-2.0
index a402db3..3724cb5 100644 (file)
@@ -159,8 +159,8 @@ int _mmcamcorder_get_eos_message(MMHandleType handle);
 void _mmcamcorder_remove_element_handle(MMHandleType handle, void *element, int first_elem, int last_elem);
 int _mmcamcorder_check_audiocodec_fileformat_compatibility(MMHandleType handle);
 int _mmcamcorder_check_videocodec_fileformat_compatibility(MMHandleType handle);
-bool _mmcamcorder_set_display_rotation(MMHandleType handle, int display_rotate);
-bool _mmcamcorder_set_display_flip(MMHandleType handle, int display_flip);
+bool _mmcamcorder_set_display_rotation(MMHandleType handle, int display_rotate, int videosink_index);
+bool _mmcamcorder_set_display_flip(MMHandleType handle, int display_flip, int videosink_index);
 bool _mmcamcorder_set_videosrc_rotation(MMHandleType handle, int videosrc_rotate);
 bool _mmcamcorder_set_videosrc_caps(MMHandleType handle, unsigned int fourcc, int width, int height, int fps, int rotate);
 bool _mmcamcorder_set_videosrc_flip(MMHandleType handle, int viderosrc_flip);
index c4e312c..e60bf6a 100644 (file)
@@ -3362,7 +3362,7 @@ bool _mmcamcorder_commit_display_rotation(MMHandleType handle, int attr_idx, con
                return TRUE;
        }
 
-       return _mmcamcorder_set_display_rotation(handle, value->value.i_val);
+       return _mmcamcorder_set_display_rotation(handle, value->value.i_val, _MMCAMCORDER_VIDEOSINK_SINK);
 }
 
 
@@ -3387,7 +3387,7 @@ bool _mmcamcorder_commit_display_flip(MMHandleType handle, int attr_idx, const m
                return TRUE;
        }
 
-       return _mmcamcorder_set_display_flip(handle, value->value.i_val);
+       return _mmcamcorder_set_display_flip(handle, value->value.i_val, _MMCAMCORDER_VIDEOSINK_SINK);
 }
 
 
index e682805..2044d8f 100644 (file)
@@ -312,7 +312,7 @@ bool _mmcamcorder_client_commit_display_rotation(MMHandleType handle, int attr_i
                return TRUE;
        }
 
-       return _mmcamcorder_set_display_rotation(handle, value->value.i_val);
+       return _mmcamcorder_set_display_rotation(handle, value->value.i_val, _MMCAMCORDER_CLIENT_VIDEOSINK_SINK);
 }
 
 bool _mmcamcorder_client_commit_display_visible(MMHandleType handle, int attr_idx, const mmf_value_t *value)
@@ -347,8 +347,8 @@ bool _mmcamcorder_client_commit_display_visible(MMHandleType handle, int attr_id
                return FALSE;
        }
 
-       if (!strcmp(videosink_name, "xvimagesink") || !strcmp(videosink_name, "evasimagesink") ||
-           !strcmp(videosink_name, "evaspixmapsink")) {
+       if (!strcmp(videosink_name, "waylandsink") || !strcmp(videosink_name, "xvimagesink") ||
+               !strcmp(videosink_name, "evasimagesink") || !strcmp(videosink_name, "evaspixmapsink")) {
                MMCAMCORDER_G_OBJECT_SET(sc->element[_MMCAMCORDER_CLIENT_VIDEOSINK_SINK].gst, "visible", value->value.i_val);
                _mmcam_dbg_log("Set visible [%d] done.", value->value.i_val);
                return TRUE;
@@ -391,8 +391,8 @@ bool _mmcamcorder_client_commit_display_geometry_method (MMHandleType handle, in
                return FALSE;
        }
 
-       if (!strcmp(videosink_name, "xvimagesink") || !strcmp(videosink_name, "evasimagesink") ||
-           !strcmp(videosink_name, "evaspixmapsink")) {
+       if (!strcmp(videosink_name, "waylandsink") || !strcmp(videosink_name, "xvimagesink") ||
+               !strcmp(videosink_name, "evasimagesink") || !strcmp(videosink_name, "evaspixmapsink")) {
                method = value->value.i_val;
                MMCAMCORDER_G_OBJECT_SET( sc->element[_MMCAMCORDER_CLIENT_VIDEOSINK_SINK].gst, "display-geometry-method", method);
                return TRUE;
@@ -437,7 +437,7 @@ bool _mmcamcorder_client_commit_display_scale(MMHandleType handle, int attr_idx,
        }
 
        zoom = value->value.i_val;
-       if (!strcmp(videosink_name, "xvimagesink")) {
+       if (!strcmp(videosink_name, "waylandsink") || !strcmp(videosink_name, "xvimagesink")) {
                vs_element = sc->element[_MMCAMCORDER_CLIENT_VIDEOSINK_SINK].gst;
 
                MMCAMCORDER_G_OBJECT_SET(vs_element, "zoom", (float)(zoom + 1));
@@ -483,7 +483,7 @@ bool _mmcamcorder_client_commit_display_mode(MMHandleType handle, int attr_idx,
 
        _mmcam_dbg_log("Commit : videosinkname[%s]", videosink_name);
 
-       if (!strcmp(videosink_name, "xvimagesink")) {
+       if (!strcmp(videosink_name, "waylandsink") || !strcmp(videosink_name, "xvimagesink")) {
                _mmcam_dbg_log("Commit : display mode [%d]", value->value.i_val);
                MMCAMCORDER_G_OBJECT_SET(sc->element[_MMCAMCORDER_CLIENT_VIDEOSINK_SINK].gst, "display-mode", value->value.i_val);
                return TRUE;
@@ -559,7 +559,7 @@ bool _mmcamcorder_client_commit_display_flip(MMHandleType handle, int attr_idx,
                return TRUE;
        }
 
-       return _mmcamcorder_set_display_flip(handle, value->value.i_val);
+       return _mmcamcorder_set_display_flip(handle, value->value.i_val, _MMCAMCORDER_CLIENT_VIDEOSINK_SINK);
 }
 
 int _mmcamcorder_client_videosink_window_set(MMHandleType handle, type_element* VideosinkElement)
@@ -690,8 +690,8 @@ int _mmcamcorder_client_videosink_window_set(MMHandleType handle, type_element*
                       videosink_name, display_geometry_method, origin_size, visible, rotation, flip);
 
        /* Set attribute */
-       if (!strcmp(videosink_name, "xvimagesink") ||
-           !strcmp(videosink_name, "evaspixmapsink")) {
+       if (!strcmp(videosink_name, "waylandsink") || !strcmp(videosink_name, "xvimagesink") ||
+               !strcmp(videosink_name, "evaspixmapsink")) {
                /* set rotation */
                MMCAMCORDER_G_OBJECT_SET(vsink, "rotate", rotation);
 
@@ -727,6 +727,8 @@ int _mmcamcorder_client_videosink_window_set(MMHandleType handle, type_element*
                                     "dst-roi-h", retheight,
                                     NULL);
                }
+       } else {
+               _mmcam_dbg_warn("unsupported videosink [%s]", videosink_name);
        }
 
        return MM_ERROR_NONE;
@@ -1256,11 +1258,10 @@ int _mmcamcorder_client_create_preview_elements(MMHandleType handle, const char
        /* create sink */
        _MMCAMCORDER_ELEMENT_MAKE(sc, sc->element, _MMCAMCORDER_CLIENT_VIDEOSINK_SINK, videosink_name, "client_videosink_sink", element_list, ret);
 
-       if (strcmp(videosink_name, "fakesink") &&
-           strcmp(videosink_name, "tizenipcsink") &&
-           strcmp(videosink_name, "shmsink")) {
+       if (strcmp(videosink_name, "fakesink") && strcmp(videosink_name, "tizenipcsink") &&
+               strcmp(videosink_name, "shmsink")) {
                if (_mmcamcorder_client_videosink_window_set(handle, sc->VideosinkElement) != MM_ERROR_NONE) {
-                       _mmcam_dbg_err("_mmcamcorder_videosink_window_set error");
+                       _mmcam_dbg_err("_mmcamcorder_client_videosink_window_set error");
                        ret = MM_ERROR_CAMCORDER_INVALID_ARGUMENT;
                        goto pipeline_creation_error;
                }
index 955e7da..0586cbc 100644 (file)
@@ -329,12 +329,17 @@ int _mmcamcorder_create_preview_elements(MMHandleType handle)
                if (err != MM_ERROR_NONE) {
                        _mmcam_dbg_warn("Get socket path failed 0x%x", err);
                        SAFE_FREE(err_name);
-                       return err;
+                       goto pipeline_creation_error;
                }
 
                g_object_set(G_OBJECT(sc->element[_MMCAMCORDER_VIDEOSINK_SINK].gst), "socket-path", socket_path, NULL);
        } else {
                _MMCAMCORDER_ELEMENT_MAKE(sc, sc->element, _MMCAMCORDER_VIDEOSINK_SINK, videosink_name, "videosink_sink", element_list, err);
+               if (_mmcamcorder_videosink_window_set(handle, sc->VideosinkElement) != MM_ERROR_NONE) {
+                       _mmcam_dbg_err("_mmcamcorder_videosink_window_set error");
+                       err = MM_ERROR_CAMCORDER_INVALID_ARGUMENT;
+                       goto pipeline_creation_error;
+               }
        }
 
        _mmcamcorder_conf_set_value_element_property(sc->element[_MMCAMCORDER_VIDEOSINK_SINK].gst, sc->VideosinkElement);
@@ -2013,7 +2018,7 @@ int _mmcamcorder_check_videocodec_fileformat_compatibility(MMHandleType handle)
 }
 
 
-bool _mmcamcorder_set_display_rotation(MMHandleType handle, int display_rotate)
+bool _mmcamcorder_set_display_rotation(MMHandleType handle, int display_rotate, int videosink_index)
 {
        const char* videosink_name = NULL;
 
@@ -2027,7 +2032,7 @@ bool _mmcamcorder_set_display_rotation(MMHandleType handle, int display_rotate)
        mmf_return_val_if_fail(sc, MM_ERROR_CAMCORDER_NOT_INITIALIZED);
        mmf_return_val_if_fail(sc->element, MM_ERROR_CAMCORDER_NOT_INITIALIZED);
 
-       if (sc->element[_MMCAMCORDER_VIDEOSINK_SINK].gst) {
+       if (sc->element[videosink_index].gst) {
                /* Get videosink name */
                _mmcamcorder_conf_get_value_element_name(sc->VideosinkElement, &videosink_name);
                if (videosink_name == NULL) {
@@ -2035,10 +2040,9 @@ bool _mmcamcorder_set_display_rotation(MMHandleType handle, int display_rotate)
                        return FALSE;
                }
 
-               if (!strcmp(videosink_name, "xvimagesink") || !strcmp(videosink_name, "evasimagesink") ||
-                   !strcmp(videosink_name, "evaspixmapsink")) {
-                       MMCAMCORDER_G_OBJECT_SET(sc->element[_MMCAMCORDER_VIDEOSINK_SINK].gst,
-                                                "rotate", display_rotate);
+               if (!strcmp(videosink_name, "waylandsink") || !strcmp(videosink_name, "xvimagesink") ||
+                       !strcmp(videosink_name, "evasimagesink") || !strcmp(videosink_name, "evaspixmapsink")) {
+                       MMCAMCORDER_G_OBJECT_SET(sc->element[videosink_index].gst, "rotate", display_rotate);
                        _mmcam_dbg_log("Set display-rotate [%d] done.", display_rotate);
                        return TRUE;
                } else {
@@ -2052,7 +2056,7 @@ bool _mmcamcorder_set_display_rotation(MMHandleType handle, int display_rotate)
 }
 
 
-bool _mmcamcorder_set_display_flip(MMHandleType handle, int display_flip)
+bool _mmcamcorder_set_display_flip(MMHandleType handle, int display_flip, int videosink_index)
 {
        const char* videosink_name = NULL;
 
@@ -2066,7 +2070,7 @@ bool _mmcamcorder_set_display_flip(MMHandleType handle, int display_flip)
        mmf_return_val_if_fail(sc, MM_ERROR_CAMCORDER_NOT_INITIALIZED);
        mmf_return_val_if_fail(sc->element, MM_ERROR_CAMCORDER_NOT_INITIALIZED);
 
-       if (sc->element[_MMCAMCORDER_VIDEOSINK_SINK].gst) {
+       if (sc->element[videosink_index].gst) {
                /* Get videosink name */
                _mmcamcorder_conf_get_value_element_name(sc->VideosinkElement, &videosink_name);
                if (videosink_name == NULL) {
@@ -2074,10 +2078,9 @@ bool _mmcamcorder_set_display_flip(MMHandleType handle, int display_flip)
                        return FALSE;
                }
 
-               if (!strcmp(videosink_name, "xvimagesink") || !strcmp(videosink_name, "evasimagesink") ||
-                   !strcmp(videosink_name, "evaspixmapsink")) {
-                       MMCAMCORDER_G_OBJECT_SET(sc->element[_MMCAMCORDER_VIDEOSINK_SINK].gst,
-                                                "flip", display_flip);
+               if (!strcmp(videosink_name, "waylandsink") || !strcmp(videosink_name, "xvimagesink") ||
+                       !strcmp(videosink_name, "evasimagesink") || !strcmp(videosink_name, "evaspixmapsink")) {
+                       MMCAMCORDER_G_OBJECT_SET(sc->element[videosink_index].gst, "flip", display_flip);
                        _mmcam_dbg_log("Set display flip [%d] done.", display_flip);
                        return TRUE;
                } else {