gst-amlvideosink: CB1 add pip prop [1/1]
PD#SWPL-87831
Problem:
add pip property
Solution:
(detail info)
Verify:
(detail info)
Change-Id: Ic02899d9c2ac634d081b91c6e8122a268ad74f54
Signed-off-by: xuesong.jiang <xuesong.jiang@amlogic.com>
diff --git a/src/gstamlvideosink.c b/src/gstamlvideosink.c
index 83cdfbf..35194de 100644
--- a/src/gstamlvideosink.c
+++ b/src/gstamlvideosink.c
@@ -99,6 +99,7 @@
PROP_AVSYNC_MODE,
PROP_VIDEO_FRAME_DROP_NUM,
PROP_WINDOW_SET,
+ PROP_RES_USAGE,
#if GST_IMPORT_LGE_PROP
PROP_LGE_RESOURCE_INFO,
PROP_LGE_CURRENT_PTS,
@@ -294,6 +295,12 @@
"Window Set Format: x,y,width,height",
NULL, G_PARAM_WRITABLE));
+ g_object_class_install_property (
+ G_OBJECT_CLASS(klass), PROP_RES_USAGE,
+ g_param_spec_int ("res-usage", "res-usage",
+ "Flags to indicate intended usage",
+ G_MININT, G_MAXINT, 0, G_PARAM_WRITABLE));
+
#if GST_IMPORT_LGE_PROP
g_object_class_install_property(
G_OBJECT_CLASS(klass), PROP_LGE_RESOURCE_INFO,
@@ -355,6 +362,7 @@
sink->rendered = 0;
sink->droped = 0;
sink->avsync_mode = GST_DEFAULT_AVSYNC_MODE;
+ sink->pip_mode = 0;
sink->secure_mode = FALSE;
g_mutex_init(&sink->eos_lock);
g_cond_init(&sink->eos_cond);
@@ -451,7 +459,7 @@
if (mode >= 0)
{
sink->avsync_mode = mode;
- GST_WARNING("AV sync mode %d", mode);
+ GST_DEBUG_OBJECT(sink, "AV sync mode %d", mode);
}
GST_OBJECT_UNLOCK(sink);
break;
@@ -496,6 +504,14 @@
g_strfreev(parts);
break;
}
+ case PROP_RES_USAGE:
+ {
+ GST_OBJECT_LOCK(sink);
+ sink->pip_mode = 1;
+ GST_DEBUG_OBJECT(sink, "play video in sub layer(pip)");
+ GST_OBJECT_UNLOCK(sink);
+ break;
+ }
#if GST_IMPORT_LGE_PROP
case PROP_LGE_RESOURCE_INFO:
{
@@ -618,6 +634,14 @@
render_set_callback(sink_priv->render_device_handle, &cb);
render_set_user_data(sink_priv->render_device_handle, sink);
+ GST_DEBUG_OBJECT(sink, "tunnel lib: set pip mode");
+ int pip = 1;
+ if (sink->pip_mode && render_set(sink_priv->render_device_handle, KEY_VIDEO_PIP, &pip) == -1)
+ {
+ GST_ERROR_OBJECT(sink, "tunnel lib: set pip error");
+ goto error;
+ }
+
GST_DEBUG_OBJECT(sink, "set qos fail");
gst_base_sink_set_qos_enabled((GstBaseSink *)sink, FALSE);
@@ -916,6 +940,12 @@
return FALSE;
}
sink_priv->window_set.window_change = FALSE;
+
+ GST_DEBUG_OBJECT(sink, "tunnel lib: set window size to %d,%d,%d,%d",
+ sink_priv->window_set.x,
+ sink_priv->window_set.y,
+ sink_priv->window_set.w,
+ sink_priv->window_set.h);
}
if (sink_priv->video_info_changed)
@@ -1024,6 +1054,7 @@
break;
}
case GST_EVENT_CUSTOM_DOWNSTREAM:
+ case GST_EVENT_CUSTOM_DOWNSTREAM_STICKY:
{
if (gst_event_has_name (event, "IS_SVP"))
{
@@ -1032,18 +1063,8 @@
sink->secure_mode = TRUE;
GST_OBJECT_UNLOCK(sink);
}
- break;
- }
- case GST_EVENT_CUSTOM_DOWNSTREAM_STICKY:
- {
- if (gst_event_has_name (event, "IS_SVP"))
- {
- GST_OBJECT_LOCK(sink);
- GST_DEBUG_OBJECT(sink, "Got SVP-custom sticky Event");
- sink->secure_mode = TRUE;
- GST_OBJECT_UNLOCK(sink);
- }
- break;
+ gst_event_unref(event);
+ return result;
}
case GST_EVENT_EOS:
{
diff --git a/src/gstamlvideosink.h b/src/gstamlvideosink.h
index 3cfe878..b505256 100644
--- a/src/gstamlvideosink.h
+++ b/src/gstamlvideosink.h
@@ -57,6 +57,7 @@
gint rendered;
gint droped;
gint avsync_mode;
+ gboolean pip_mode;
GMutex eos_lock;
GCond eos_cond;