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;