Add ENABLE_FUNCTION define and lock some property.
authorHyunil <hyunil46.park@samsung.com>
Tue, 30 Aug 2016 02:13:31 +0000 (11:13 +0900)
committerHyunil <hyunil46.park@samsung.com>
Tue, 30 Aug 2016 02:13:31 +0000 (11:13 +0900)
Change-Id: I3ab4dc8d6b9b29f5acef7678d2226649e58f4b6c
Signed-off-by: Hyunil <hyunil46.park@samsung.com>
ext/wayland/gstwaylandsink.c
ext/wayland/gstwaylandsink.h
ext/wayland/wlwindow.c
ext/wayland/wlwindow.h

index 66a14a2..bec1875 100755 (executable)
@@ -325,6 +325,19 @@ gst_wayland_sink_class_init (GstWaylandSinkClass * klass)
           "Draws screen or blacks out, true means visible, false blacks out",
           TRUE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
+#ifdef ENABLE_FUNCTION
+  g_object_class_install_property (gobject_class, PROP_SCALE_WIDTH,
+      g_param_spec_double ("scale-w", "ratio width",
+          "scale width for rendering video,"
+          "Function is not supported in DISP_GEO_METHOD_CUSTOM_ROI. ", 0.0,
+          G_MAXDOUBLE, 1.0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_property (gobject_class, PROP_SCALE_HEIGHT,
+      g_param_spec_double ("scale-h", "scale height",
+          "scale width for rendering video, "
+          "Function is not support in DISP_GEO_METHOD_CUSTOM_ROI. ", 0.0,
+          G_MAXDOUBLE, 1.0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
   g_object_class_install_property (gobject_class, PROP_FOLLOW_PARENT_TRANSFORM,
       g_param_spec_boolean ("follow-parent-transform",
           "follow parent transform",
@@ -378,18 +391,6 @@ gst_wayland_sink_class_init (GstWaylandSinkClass * klass)
           "Function is not support in DISP_GEO_METHOD_CUSTOM_ROI. ", -1.0,
           G_MAXDOUBLE, -1.0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
-  g_object_class_install_property (gobject_class, PROP_SCALE_WIDTH,
-      g_param_spec_double ("scale-w", "ratio width",
-          "scale width for rendering video,"
-          "Function is not supported in DISP_GEO_METHOD_CUSTOM_ROI. ", 0.0,
-          G_MAXDOUBLE, 1.0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
-  g_object_class_install_property (gobject_class, PROP_SCALE_HEIGHT,
-      g_param_spec_double ("scale-h", "scale height",
-          "scale width for rendering video, "
-          "Function is not support in DISP_GEO_METHOD_CUSTOM_ROI. ", 0.0,
-          G_MAXDOUBLE, 1.0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
   g_object_class_install_property (gobject_class, PROP_OFFSET_X,
       g_param_spec_uint ("offset-x", "offset x",
           "x offset for moving x-coordinate of video pixel, "
@@ -431,6 +432,7 @@ gst_wayland_sink_class_init (GstWaylandSinkClass * klass)
           "Please set align-w and align-h togethrer"
           "Function is not supported in DISP_GEO_METHOD_CUSTOM_ROI. ", 0.0,
           1.0, 0.5, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+#endif
 
   /* fakesink function for stream callback of MSL with browser */
   g_object_class_install_property (gobject_class, PROP_SIGNAL_HANDOFFS,
@@ -482,13 +484,15 @@ gst_wayland_sink_init (GstWaylandSink * sink)
   sink->flip = DEF_DISPLAY_FLIP;
   sink->rotate_angle = DEGREE_0;
   sink->visible = TRUE;
-  sink->follow_parent_transform = FALSE;
   sink->crop_x = sink->crop_y = sink->crop_w = sink->crop_h = 0;
+#ifdef ENABLE_FUNCTION
+  sink->follow_parent_transform = FALSE;
   sink->ratio_w = sink->ratio_h = -1.0; //need to set -1.0 for original video ratio
-  sink->scale_w = sink->scale_h = 1.0;
   sink->align_w = sink->align_h = 0.5;
+  sink->scale_w = sink->scale_h = 1.0;
   sink->offset_x = sink->offset_y = sink->offset_w = sink->offset_h = 0;
 #endif
+#endif
   g_mutex_init (&sink->display_lock);
   g_mutex_init (&sink->render_lock);
 }
@@ -816,6 +820,13 @@ gst_wayland_sink_get_property (GObject * object,
     case PROP_VISIBLE:
       g_value_set_boolean (value, sink->visible);
       break;
+#ifdef ENABLE_FUNCTION
+    case PROP_SCALE_WIDTH:
+      g_value_set_double (value, sink->scale_w);
+      break;
+    case PROP_SCALE_HEIGHT:
+      g_value_set_double (value, sink->scale_h);
+      break;
     case PROP_FOLLOW_PARENT_TRANSFORM:
       g_value_set_boolean (value, sink->follow_parent_transform);
       break;
@@ -837,12 +848,6 @@ gst_wayland_sink_get_property (GObject * object,
     case PROP_RATIO_HEIGHT:
       g_value_set_double (value, sink->ratio_h);
       break;
-    case PROP_SCALE_WIDTH:
-      g_value_set_double (value, sink->scale_w);
-      break;
-    case PROP_SCALE_HEIGHT:
-      g_value_set_double (value, sink->scale_h);
-      break;
     case PROP_OFFSET_X:
       g_value_set_uint (value, sink->offset_x);
       break;
@@ -862,6 +867,7 @@ gst_wayland_sink_get_property (GObject * object,
       g_value_set_double (value, sink->align_h);
       break;
 #endif
+#endif
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -946,6 +952,29 @@ gst_wayland_sink_set_property (GObject * object,
         }
       }
       break;
+#ifdef ENABLE_FUNCTION
+    case PROP_SCALE_WIDTH:
+      if (sink->scale_w == g_value_get_double (value)
+          || sink->display_geometry_method == DISP_GEO_METHOD_CUSTOM_ROI)
+        break;
+      sink->scale_w = g_value_get_double (value);
+      GST_WARNING_OBJECT (sink, "scale-w is set (%f)", sink->scale_w);
+      sink->video_info_changed = TRUE;
+      if (sink->window)
+        gst_wl_window_set_destination_mode_scale (sink->window, sink->scale_w,
+            sink->scale_h);
+      break;
+    case PROP_SCALE_HEIGHT:
+      if (sink->scale_h == g_value_get_double (value)
+          || sink->display_geometry_method == DISP_GEO_METHOD_CUSTOM_ROI)
+        break;
+      sink->scale_h = g_value_get_double (value);
+      GST_WARNING_OBJECT (sink, "scale-h is set (%f)", sink->scale_h);
+      sink->video_info_changed = TRUE;
+      if (sink->window)
+        gst_wl_window_set_destination_mode_scale (sink->window, sink->scale_w,
+            sink->scale_h);
+      break;
     case PROP_FOLLOW_PARENT_TRANSFORM:
       if (sink->follow_parent_transform == g_value_get_boolean (value)
           || sink->display_geometry_method == DISP_GEO_METHOD_CUSTOM_ROI)
@@ -1019,17 +1048,6 @@ gst_wayland_sink_set_property (GObject * object,
         gst_wl_window_set_destination_mode_ratio (sink->window, sink->ratio_w,
             sink->ratio_h);
       break;
-    case PROP_SCALE_WIDTH:
-      if (sink->scale_w == g_value_get_double (value)
-          || sink->display_geometry_method == DISP_GEO_METHOD_CUSTOM_ROI)
-        break;
-      sink->scale_w = g_value_get_double (value);
-      GST_WARNING_OBJECT (sink, "scale-h is set (%f)", sink->scale_w);
-      sink->video_info_changed = TRUE;
-      if (sink->window)
-        gst_wl_window_set_destination_mode_scale (sink->window, sink->ratio_w,
-            sink->ratio_h);
-      break;
     case PROP_OFFSET_X:
       if (sink->offset_x == g_value_get_uint (value)
           || sink->display_geometry_method == DISP_GEO_METHOD_CUSTOM_ROI)
@@ -1080,7 +1098,7 @@ gst_wayland_sink_set_property (GObject * object,
         gst_wl_window_set_destination_mode_align (sink->window, sink->align_w,
             sink->align_h);
       break;
-
+#endif
 #endif
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -1706,9 +1724,6 @@ gst_wayland_sink_update_window_geometry (GstWaylandSink * sink)
   gst_wl_window_set_destination_mode (sink->window,
       sink->display_geometry_method);
   gst_wl_window_set_flip (sink->window, sink->flip);
-  gst_wl_window_set_destination_mode_follow_parent_transform (sink->window,
-      sink->follow_parent_transform);
-
   if (sink->crop_w == 0 && sink->crop_h == 0) {
     sink->crop_w =
         gst_util_uint64_scale_int_round (sink->video_info.width,
@@ -1717,6 +1732,9 @@ gst_wayland_sink_update_window_geometry (GstWaylandSink * sink)
   }
   gst_wl_window_set_destination_mode_crop_wl_buffer (sink->window, sink->crop_x,
       sink->crop_y, sink->crop_w, sink->crop_h);
+#ifdef ENABLE_FUNCTION
+  gst_wl_window_set_destination_mode_follow_parent_transform (sink->window,
+      sink->follow_parent_transform);
   gst_wl_window_set_destination_mode_ratio (sink->window, sink->ratio_w,
       sink->ratio_h);
   gst_wl_window_set_destination_mode_scale (sink->window, sink->scale_w,
@@ -1725,7 +1743,7 @@ gst_wayland_sink_update_window_geometry (GstWaylandSink * sink)
       sink->offset_y, sink->offset_w, sink->offset_h);
   gst_wl_window_set_destination_mode_align (sink->window, sink->align_w,
       sink->align_h);
-
+#endif
 }
 #endif
 /* must be called with the render lock */
index 702ec4e..331cdc8 100644 (file)
@@ -110,11 +110,13 @@ struct _GstWaylandSink
   guint display_geometry_method;
   guint flip;
   guint crop_x, crop_y, crop_w, crop_h;
+#ifdef ENABLE_FUNCTION
   guint offset_x, offset_y, offset_w, offset_h;
   gdouble ratio_w, ratio_h;
   gdouble scale_w, scale_h;
   gdouble align_w, align_h;
 #endif
+#endif
 };
 
 struct _GstWaylandSinkClass
index e416c8b..fad56f3 100644 (file)
@@ -297,7 +297,7 @@ gst_wl_window_new_internal (GstWlDisplay * display)
   window->tizen_video_viewport =
       tizen_video_get_viewport (display->tizen_video, window->video_surface);
   GST_INFO
-      ("tizen_video_viewport(tizen_viewport)@%p = tizen_video_get_viewport(tizen_video@%p, video_surface(wl_surface%p)",
+      ("tizen_video_viewport(tizen_viewport)@%p = tizen_video_get_viewport(tizen_video@%p, video_surface(wl_surface)@%p)",
       window->tizen_video_viewport, display->tizen_video,
       window->video_surface);
   window->tizen_video_dest_mode =
@@ -619,7 +619,7 @@ gst_wl_window_resize_tizen_video_viewport (GstWlWindow * window,
   g_return_if_fail (window->tizen_video_viewport != NULL);
   g_return_if_fail (window->tizen_video_dest_mode != NULL);
 
-  /* Set crop, wayland need to set tizen_viewport_set_source always when change video info */
+  /* Set crop, wayland need to set "tizen_viewport_set_source" always when change video info */
   if (window->mode_crop.changed) {
     /* we have known issue about mobile team kernel, when set orign green line can be shown with tbm */
     GST_INFO
@@ -677,6 +677,8 @@ gst_wl_window_resize_tizen_video_viewport (GstWlWindow * window,
   if (window->disp_geo_method.value == DISP_GEO_METHOD_CUSTOM_ROI)
     goto done;
 
+  /* Even though area_viewport is set to ROI mode, we can set below functions too if video_viewport is set to tizen_destination_mode_set. */
+#ifdef ENABLE_FUNCTION
   /* set or unset follow parent transform */
   if (window->follow_parent_transform.changed
       && !gst_wl_window_is_toplevel (window)) {
@@ -722,6 +724,18 @@ gst_wl_window_resize_tizen_video_viewport (GstWlWindow * window,
     window->mode_ratio.changed = FALSE;
   }
 
+  /* set offset */
+  if (window->mode_offset.changed) {
+    GST_INFO
+        ("tizen_destination_mode_set_offset (tizen_destination_mode@%p, x@%d, y@%d, w@%d, h@%d)",
+        window->tizen_video_dest_mode, window->mode_offset.x,
+        window->mode_offset.y, window->mode_offset.w, window->mode_offset.h);
+    tizen_destination_mode_set_offset (window->tizen_video_dest_mode,
+        window->mode_offset.x, window->mode_offset.y, window->mode_offset.w,
+        window->mode_offset.h);
+    window->mode_offset.changed = FALSE;
+  }
+
   /* set scale */
   if (window->mode_scale.changed) {
     wl_fixed_t f_width, f_height;
@@ -734,19 +748,7 @@ gst_wl_window_resize_tizen_video_viewport (GstWlWindow * window,
         window->mode_scale.h);
     tizen_destination_mode_set_scale (window->tizen_video_dest_mode, f_width,
         f_height);
-    window->mode_ratio.changed = FALSE;
-  }
-
-  /* set offset */
-  if (window->mode_offset.changed) {
-    GST_INFO
-        ("tizen_destination_mode_set_offset (tizen_destination_mode@%p, x@%d, y@%d, w@%d, h@%d)",
-        window->tizen_video_dest_mode, window->mode_offset.x,
-        window->mode_offset.y, window->mode_offset.w, window->mode_offset.h);
-    tizen_destination_mode_set_offset (window->tizen_video_dest_mode,
-        window->mode_offset.x, window->mode_offset.y, window->mode_offset.w,
-        window->mode_offset.h);
-    window->mode_offset.changed = FALSE;
+    window->mode_scale.changed = FALSE;
   }
 
   /* set align */
@@ -762,6 +764,7 @@ gst_wl_window_resize_tizen_video_viewport (GstWlWindow * window,
         f_height);
     window->mode_align.changed = FALSE;
   }
+#endif
 
 done:
 
@@ -1024,18 +1027,6 @@ gst_wl_window_set_flip (GstWlWindow * window, guint flip)
 }
 
 void
-gst_wl_window_set_destination_mode_follow_parent_transform (GstWlWindow *
-    window, gboolean follow_parent_transform)
-{
-  FUNCTION;
-  g_return_if_fail (window != NULL);
-  window->follow_parent_transform.value = follow_parent_transform;
-  GST_LOG ("follow_parent_transform value is (%d)",
-      window->follow_parent_transform.value);
-  window->follow_parent_transform.changed = TRUE;
-}
-
-void
 gst_wl_window_set_destination_mode_crop_wl_buffer (GstWlWindow * window,
     guint x, guint y, guint w, guint h)
 {
@@ -1049,6 +1040,20 @@ gst_wl_window_set_destination_mode_crop_wl_buffer (GstWlWindow * window,
   window->mode_crop.changed = TRUE;
 }
 
+#ifdef ENABLE_FUNCTION
+void
+gst_wl_window_set_destination_mode_follow_parent_transform (GstWlWindow *
+    window, gboolean follow_parent_transform)
+{
+  FUNCTION;
+  g_return_if_fail (window != NULL);
+  window->follow_parent_transform.value = follow_parent_transform;
+  GST_LOG ("follow_parent_transform value is (%d)",
+      window->follow_parent_transform.value);
+  window->follow_parent_transform.changed = TRUE;
+}
+
+
 void
 gst_wl_window_set_destination_mode_offset (GstWlWindow * window, guint x,
     guint y, guint w, guint h)
@@ -1098,7 +1103,7 @@ gst_wl_window_set_destination_mode_align (GstWlWindow * window, gdouble w,
   window->mode_align.h = h;
   window->mode_align.changed = TRUE;
 }
-
+#endif
 void
 gst_wl_window_set_video_info_change (GstWlWindow * window, guint changed)
 {
index 0cc48a1..a5eb65f 100644 (file)
@@ -84,13 +84,15 @@ struct _GstWlWindow
   WinGeometryValue disp_geo_method;
   WinGeometryValue rotate_angle;
   WinGeometryValue flip;
-  WinGeometryValue follow_parent_transform;
   WinGeometryRect mode_crop;
+#ifdef ENABLE_FUNCTION
+  WinGeometryValue follow_parent_transform;
   WinGeometryRect mode_offset;
   WinGeometryRange mode_ratio;
   WinGeometryRange mode_scale;
   WinGeometryRange mode_align;
 #endif
+#endif
 
   /* the size and position of the area_(sub)surface */
   GstVideoRectangle render_rectangle;
@@ -125,13 +127,16 @@ void gst_wl_window_set_video_info (GstWlWindow * window,
     const GstVideoInfo * info);
 void gst_wl_window_set_rotate_angle (GstWlWindow * window, guint rotate_angle);
 void gst_wl_window_set_flip (GstWlWindow * window, guint flip);
+void gst_wl_window_set_destination_mode_crop_wl_buffer (GstWlWindow * window, guint x, guint y, guint w, guint h);
 void gst_wl_window_set_destination_mode (GstWlWindow * window, guint disp_geo_method);
+#ifdef ENABLE_FUNCTION
+/* if video mode is set, below function can use */
 void gst_wl_window_set_destination_mode_follow_parent_transform (GstWlWindow * window, gboolean follow_parent_transform);
-void gst_wl_window_set_destination_mode_crop_wl_buffer (GstWlWindow * window, guint x, guint y, guint w, guint h);
 void gst_wl_window_set_destination_mode_offset (GstWlWindow * window, guint x, guint y, guint w, guint h);
 void gst_wl_window_set_destination_mode_ratio (GstWlWindow * window, gdouble w, gdouble h);
 void gst_wl_window_set_destination_mode_scale (GstWlWindow * window, gdouble w, gdouble h);
 void gst_wl_window_set_destination_mode_align (GstWlWindow * window, gdouble w, gdouble h);
+#endif
 void gst_wl_window_set_video_info_change (GstWlWindow * window, guint changed);
 #endif