videosink: CB1 add immediately_render property for LLP [1/2]

PD#SWPL-172811

Problem:
add immediately_render property for LLP

Solution:
add immediately_render property for LLP
this property may affect PROP_DEFAULT_SYNC func.

Verify:
AH212

Signed-off-by: le.han <le.han@amlogic.com>
Change-Id: I4cdd4bf1f5619f47a25c998ec91b7b5d53fcc612
diff --git a/src/gstamlvideosink.c b/src/gstamlvideosink.c
index 34a2531..d1398be 100644
--- a/src/gstamlvideosink.c
+++ b/src/gstamlvideosink.c
@@ -108,6 +108,8 @@
     PROP_SHOW_FIRST_FRAME_ASAP,
     PROP_KEEP_LAST_FRAME_ON_FLUSH,
     PROP_ENABLE_USER_RENDERING,
+    PROP_IMMEDIATELY_RENDER,
+    PROP_VIDEO_FRAME_DISPLAY_NUM,
 #if GST_IMPORT_LGE_PROP
     PROP_LGE_RESOURCE_INFO,
     PROP_LGE_CURRENT_PTS,
@@ -295,6 +297,12 @@
                              FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
     g_object_class_install_property(
+        gobject_class, PROP_IMMEDIATELY_RENDER,
+        g_param_spec_int("set-immediately-render", "set immediately render",
+                             "set renderlib immediately render ",
+                             G_MININT, G_MAXINT, 0, G_PARAM_READWRITE));
+
+    g_object_class_install_property(
         gobject_class, PROP_SETMUTE,
         g_param_spec_boolean("set mute", "set mute params",
                              "Whether set screen mute ",
@@ -319,6 +327,12 @@
                          0, G_MAXINT32, 0, G_PARAM_READABLE));
 
     g_object_class_install_property(
+        gobject_class, PROP_VIDEO_FRAME_DISPLAY_NUM,
+        g_param_spec_int("display-frame-num", "display frame num",
+                             "number of displayed frames ",
+                             0, G_MAXINT32, 0, G_PARAM_READABLE));
+
+    g_object_class_install_property(
         G_OBJECT_CLASS(klass), PROP_WINDOW_SET,
         g_param_spec_string("rectangle", "rectangle",
                             "Window Set Format: x,y,width,height",
@@ -443,6 +457,7 @@
     sink->droped = 0;
     sink->avsync_mode = GST_DEFAULT_AVSYNC_MODE;
     sink->default_sync = FALSE;
+    sink->immediately_render = 0;
     sink->pip_mode = 0;
     sink->display_output_index = 0;
     sink->secure_mode = FALSE;
@@ -490,6 +505,11 @@
         g_value_set_boolean(value, sink->default_sync);
         GST_OBJECT_UNLOCK(sink);
         break;
+    case PROP_IMMEDIATELY_RENDER:
+        GST_OBJECT_LOCK(sink);
+        g_value_set_int(value, sink->immediately_render);
+        GST_OBJECT_UNLOCK(sink);
+        break;
     case PROP_AVSYNC_MODE:
         GST_OBJECT_LOCK(sink);
         g_value_set_boolean(value, sink->avsync_mode);
@@ -502,6 +522,12 @@
         g_value_set_int(value, sink->droped);
         GST_OBJECT_UNLOCK(sink);
         break;
+    case PROP_VIDEO_FRAME_DISPLAY_NUM:
+        GST_OBJECT_LOCK(sink);
+        GST_DEBUG_OBJECT(sink, "displayed frame num: %d", sink->queued);
+        g_value_set_int(value, sink->queued);
+        GST_OBJECT_UNLOCK(sink);
+        break;
     case PROP_DISPLAY_OUTPUT:
     {
         GST_OBJECT_LOCK(sink);
@@ -577,6 +603,14 @@
         GST_DEBUG_OBJECT(sink, "use basessink avsync flow %d", sink->default_sync);
         break;
     }
+    case PROP_IMMEDIATELY_RENDER:
+    {
+        GST_OBJECT_LOCK(sink);
+        sink->immediately_render = g_value_get_int(value);
+        GST_OBJECT_UNLOCK(sink);
+        GST_DEBUG_OBJECT(sink, "set renderlib immediately render %d", sink->immediately_render);
+        break;
+    }
     case PROP_AVSYNC_MODE:
         GST_OBJECT_LOCK(sink);
         gint mode = g_value_get_int(value);
@@ -837,6 +871,12 @@
             goto error;
         }
 
+        if (render_set_value(sink_priv->render_device_handle, KEY_IMMEDIATELY_OUTPUT, &sink->immediately_render) == -1)
+        {
+            GST_ERROR_OBJECT(sink, "render lib set immediately output error");
+            goto error;
+        }
+
         if (render_pause(sink_priv->render_device_handle) == -1)
         {
             GST_ERROR_OBJECT(sink, "render lib pause device fail when first into paused state");
diff --git a/src/gstamlvideosink.h b/src/gstamlvideosink.h
index 6ced153..d793c47 100644
--- a/src/gstamlvideosink.h
+++ b/src/gstamlvideosink.h
@@ -57,6 +57,7 @@
   gint rendered;
   gint droped;
   gboolean default_sync;
+  gint immediately_render;
   gint avsync_mode;
   gboolean pip_mode;
   gint display_output_index;