tizenwlsink: Change ROI mode behavior for player and camera ROI precondition 52/174452/1 accepted/tizen/unified/20180404.063337 submit/tizen/20180403.040903
authorHyunil <hyunil46.park@samsung.com>
Mon, 2 Apr 2018 07:30:24 +0000 (16:30 +0900)
committerHyunil <hyunil46.park@samsung.com>
Mon, 2 Apr 2018 07:30:24 +0000 (16:30 +0900)
Change-Id: Ic68169a0b19035b87b779ec0a40e2471f4bd7a42
Signed-off-by: Hyunil <hyunil46.park@samsung.com>
tizenwlsink/src/gsttizenwlsink.c
tizenwlsink/src/wlwindow.c

index b334296..ab77c92 100644 (file)
@@ -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);
 }
 
index c55473d..ab115fd 100644 (file)
@@ -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;