waylandsink : Change ROI mode behavior for player and camera ROI precondition 92/174192/2 accepted/tizen/4.0/unified/20180403.060207 submit/tizen_4.0/20180330.043617
authorHyunil <hyunil46.park@samsung.com>
Thu, 29 Mar 2018 04:31:46 +0000 (13:31 +0900)
committerHyunil <hyunil46.park@samsung.com>
Thu, 29 Mar 2018 04:37:51 +0000 (13:37 +0900)
Change-Id: I0cc714e294fbbbc4ceafa532199a291eaa71db7b
Signed-off-by: Hyunil <hyunil46.park@samsung.com>
ext/wayland/gstwaylandsink.c
ext/wayland/wlwindow.c

index d9722c719f36a146a6a7759f862711890dc77ad7..818b3e3613f7cbdd81237442d30166a130109794 100755 (executable)
@@ -2619,6 +2619,7 @@ gst_wayland_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,
@@ -2628,11 +2629,15 @@ gst_wayland_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_wayland_sink_update_last_buffer_geometry (sink);
   }
+
   g_mutex_unlock (&sink->render_lock);
 }
 
index 5f84d3692a31a0e8a2c5bc0374ab4bb3d53f7125..35b99f56d432d8ad78771202e0c4dd7116cae4ce 100644 (file)
@@ -613,7 +613,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) {
 
@@ -657,6 +659,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;
@@ -933,12 +941,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;