From 5d90a1adc384ba0b5ebffc148edf3105eba45731 Mon Sep 17 00:00:00 2001 From: Hyunil Date: Mon, 2 Apr 2018 16:30:24 +0900 Subject: [PATCH] tizenwlsink: Change ROI mode behavior for player and camera ROI precondition Change-Id: Ic68169a0b19035b87b779ec0a40e2471f4bd7a42 Signed-off-by: Hyunil --- tizenwlsink/src/gsttizenwlsink.c | 7 ++++++- tizenwlsink/src/wlwindow.c | 16 +++++++++------- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/tizenwlsink/src/gsttizenwlsink.c b/tizenwlsink/src/gsttizenwlsink.c index b334296..ab77c92 100644 --- a/tizenwlsink/src/gsttizenwlsink.c +++ b/tizenwlsink/src/gsttizenwlsink.c @@ -2627,6 +2627,7 @@ gst_tizen_wl_sink_set_render_rectangle (GstVideoOverlay * overlay, g_return_if_fail (sink != NULL); g_mutex_lock (&sink->render_lock); + if (!sink->window) { g_mutex_unlock (&sink->render_lock); GST_WARNING_OBJECT (sink, @@ -2636,11 +2637,15 @@ gst_tizen_wl_sink_set_render_rectangle (GstVideoOverlay * overlay, GST_WARNING_OBJECT (sink, "window geometry changed to (%d, %d) %d x %d", x, y, w, h); + if (gst_wl_window_set_render_rectangle (sink->window, x, y, w, h)) { sink->video_info_changed = TRUE; - if (sink->window && GST_STATE (sink) == GST_STATE_PAUSED) + + if (sink->display_geometry_method == DISP_GEO_METHOD_CUSTOM_ROI + && sink->window && GST_STATE (sink) == GST_STATE_PAUSED) gst_tizen_wl_sink_update_last_buffer_geometry (sink); } + g_mutex_unlock (&sink->render_lock); } diff --git a/tizenwlsink/src/wlwindow.c b/tizenwlsink/src/wlwindow.c index c55473d..ab115fd 100644 --- a/tizenwlsink/src/wlwindow.c +++ b/tizenwlsink/src/wlwindow.c @@ -620,7 +620,9 @@ gst_wl_window_resize_tizen_video_viewport (GstWlWindow * window, } /*set tizen destination mode */ - if (window->disp_geo_method.changed || window->roi_area_changed) { + if (window->disp_geo_method.changed + || (window->disp_geo_method.value == DISP_GEO_METHOD_CUSTOM_ROI + && window->roi_area_changed)) { int tizen_disp_mode = -1; switch (window->disp_geo_method.value) { @@ -664,6 +666,12 @@ gst_wl_window_resize_tizen_video_viewport (GstWlWindow * window, ("tizen_viewport_set_destination (tizen_video_viewport(tizen_viewport)@%p, x@%d, y@%d, w@%d, h@%d)", window->tizen_video_viewport, window->roi.x, window->roi.y, window->roi.w, window->roi.h); + if (window->roi.x == 0 && window->roi.y == 0 && window->roi.w == 0 + && window->roi.h == 0) { + GST_WARNING ("ROI Area isn't set"); + return; + } + tizen_viewport_set_destination (window->tizen_video_viewport, window->roi.x, window->roi.y, window->roi.w, window->roi.h); window->roi_area_changed = FALSE; @@ -940,12 +948,6 @@ gst_wl_window_set_render_rectangle (GstWlWindow * window, gint x, gint y, FUNCTION; g_return_val_if_fail (window != NULL, FALSE); - if (window->disp_geo_method.value != DISP_GEO_METHOD_CUSTOM_ROI) { - GST_ERROR - ("must be set display-geometry-method to DISP_GEO_METHOD_CUSTOM_ROI before setting render rectangle()"); - return FALSE; - } - if (w < 0 || h < 0) { GST_ERROR ("Error : wrong roi size w(%d), h(%d)", w, h); return FALSE; -- 2.7.4