From 2d85fa41c04866c24d73326a2167499e06627ef8 Mon Sep 17 00:00:00 2001 From: Jeongmo Yang Date: Fri, 15 Jan 2016 15:29:05 +0900 Subject: [PATCH] [Release version 0.10.30] Fix bug - invalid display setting Change-Id: I4782c6a1a8feda88823f4bd4f731da9f3831913e Signed-off-by: Jeongmo Yang --- packaging/libmm-camcorder.spec | 2 +- src/include/mm_camcorder_gstcommon.h | 4 ++-- src/mm_camcorder_attribute.c | 4 ++-- src/mm_camcorder_client.c | 29 +++++++++++++++-------------- src/mm_camcorder_gstcommon.c | 29 ++++++++++++++++------------- 5 files changed, 36 insertions(+), 32 deletions(-) diff --git a/packaging/libmm-camcorder.spec b/packaging/libmm-camcorder.spec index 053b754..119a034 100644 --- a/packaging/libmm-camcorder.spec +++ b/packaging/libmm-camcorder.spec @@ -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 diff --git a/src/include/mm_camcorder_gstcommon.h b/src/include/mm_camcorder_gstcommon.h index a402db3..3724cb5 100644 --- a/src/include/mm_camcorder_gstcommon.h +++ b/src/include/mm_camcorder_gstcommon.h @@ -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); diff --git a/src/mm_camcorder_attribute.c b/src/mm_camcorder_attribute.c index c4e312c..e60bf6a 100644 --- a/src/mm_camcorder_attribute.c +++ b/src/mm_camcorder_attribute.c @@ -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); } diff --git a/src/mm_camcorder_client.c b/src/mm_camcorder_client.c index e682805..2044d8f 100644 --- a/src/mm_camcorder_client.c +++ b/src/mm_camcorder_client.c @@ -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; } diff --git a/src/mm_camcorder_gstcommon.c b/src/mm_camcorder_gstcommon.c index 955e7da..0586cbc 100644 --- a/src/mm_camcorder_gstcommon.c +++ b/src/mm_camcorder_gstcommon.c @@ -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 { -- 2.7.4