amlvideosink: CB1 fix event handle flow [1/1]

PD#SWPL-100364

Problem:
fix event handle flow, reuse parent class event func

Solution:
(detail info)

Verify:
(detail info)

Change-Id: Ie23cd3dac910cacfd90a895358acb6852ee23f30
Signed-off-by: xuesong.jiang <xuesong.jiang@amlogic.com>
diff --git a/src/gstamlvideosink.c b/src/gstamlvideosink.c
index c8e979b..1b514e1 100644
--- a/src/gstamlvideosink.c
+++ b/src/gstamlvideosink.c
@@ -216,7 +216,7 @@
                                             GstCaps *filter);
 static gboolean gst_aml_video_sink_set_caps(GstBaseSink *bsink, GstCaps *caps);
 static gboolean gst_aml_video_sink_show_frame(GstVideoSink *bsink, GstBuffer *buffer);
-static gboolean gst_aml_video_sink_pad_event(GstPad *pad, GstObject *parent, GstEvent *event);
+static gboolean gst_aml_video_sink_pad_event (GstBaseSink *basesink, GstEvent *event);
 static gboolean gst_aml_video_sink_send_event(GstElement *element, GstEvent *event);
 
 /* private interface define */
@@ -265,6 +265,7 @@
     gstbasesink_class->propose_allocation = GST_DEBUG_FUNCPTR(gst_aml_video_sink_propose_allocation);
     gstbasesink_class->get_caps = GST_DEBUG_FUNCPTR(gst_aml_video_sink_get_caps);
     gstbasesink_class->set_caps = GST_DEBUG_FUNCPTR(gst_aml_video_sink_set_caps);
+    gstbasesink_class->event = GST_DEBUG_FUNCPTR (gst_aml_video_sink_pad_event);
 
     gstvideosink_class->show_frame = GST_DEBUG_FUNCPTR(gst_aml_video_sink_show_frame);
 
@@ -384,8 +385,6 @@
     g_mutex_init(&sink->eos_lock);
     g_cond_init(&sink->eos_cond);
 
-    gst_pad_set_event_function(basesink->sinkpad, gst_aml_video_sink_pad_event);
-
     GST_AML_VIDEO_SINK_GET_PRIVATE(sink) = malloc(sizeof(GstAmlVideoSinkPrivate));
     gst_aml_video_sink_reset_private(sink);
     gst_base_sink_set_sync(basesink, FALSE);
@@ -484,7 +483,7 @@
         GST_OBJECT_LOCK(sink);
         sink->default_sync = g_value_get_boolean(value);
         GST_OBJECT_UNLOCK(sink);
-        gst_base_sink_set_sync(sink, sink->default_sync);
+        gst_base_sink_set_sync(GST_BASE_SINK(sink), sink->default_sync);
         GST_DEBUG_OBJECT(sink, "use basessink avsync flow %d", sink->default_sync);
         break;
     }
@@ -766,8 +765,8 @@
     {
     case GST_STATE_CHANGE_PLAYING_TO_PAUSED:
     {
-        GstBaseSink *basesink;
-        basesink = GST_BASE_SINK(sink);
+        // GstBaseSink *basesink;
+        // basesink = GST_BASE_SINK(sink);
 
         if (render_pause(sink_priv->render_device_handle) == -1)
         {
@@ -889,7 +888,6 @@
 
     caps = gst_pad_get_pad_template_caps(GST_VIDEO_SINK_PAD(sink));
     caps = gst_caps_make_writable(caps);
-    // TODO 这里是需要从template直接取出支持的caps还是要通过tunnel lib拿到caps?
 
     if (filter)
     {
@@ -900,6 +898,8 @@
         gst_caps_unref(caps);
         caps = intersection;
     }
+    GST_DEBUG_OBJECT(sink, "filter caps: %" GST_PTR_FORMAT, filter);
+    GST_DEBUG_OBJECT(sink, "final  caps: %" GST_PTR_FORMAT, caps);
 
     return caps;
 }
@@ -1071,10 +1071,10 @@
     return ret;
 }
 
-static gboolean gst_aml_video_sink_pad_event(GstPad *pad, GstObject *parent, GstEvent *event)
+static gboolean gst_aml_video_sink_pad_event (GstBaseSink *basesink, GstEvent *event)
 {
     gboolean result = TRUE;
-    GstAmlVideoSink *sink = GST_AML_VIDEO_SINK(parent);
+    GstAmlVideoSink *sink = GST_AML_VIDEO_SINK(basesink);
     GstAmlVideoSinkPrivate *sink_priv = GST_AML_VIDEO_SINK_GET_PRIVATE(sink);
 
     GST_DEBUG_OBJECT(sink, "received event %p %" GST_PTR_FORMAT, event, event);