Merge "amlv4l2: CF1 add private event and signal [2/2]"
diff --git a/src/gstamlv4l2videodec.c b/src/gstamlv4l2videodec.c
index 3002fa1..7976513 100644
--- a/src/gstamlv4l2videodec.c
+++ b/src/gstamlv4l2videodec.c
@@ -104,6 +104,14 @@
#endif
};
+enum
+{
+ SIGNAL_DECODED_PTS,
+ MAX_SIGNAL
+};
+
+static guint g_signals[MAX_SIGNAL]= {0};
+
#define gst_aml_v4l2_video_dec_parent_class parent_class
G_DEFINE_ABSTRACT_TYPE(GstAmlV4l2VideoDec, gst_aml_v4l2_video_dec,
GST_TYPE_VIDEO_DECODER);
@@ -1016,6 +1024,10 @@
GST_LOG_OBJECT(decoder, "Process output buffer (switching flow outstanding num:%d)", self->v4l2capture->outstanding_buf_num);
ret = gst_aml_v4l2_buffer_pool_process(v4l2_pool, &buffer);
+
+ GST_DEBUG_OBJECT(decoder, "send pts:%lld - %" GST_TIME_FORMAT, GST_BUFFER_PTS(buffer), GST_TIME_ARGS(GST_BUFFER_PTS(buffer)));
+ g_signal_emit (self, g_signals[SIGNAL_DECODED_PTS], 0, GST_BUFFER_PTS(buffer));
+
if (ret == GST_AML_V4L2_FLOW_SOURCE_CHANGE)
{
gst_aml_v4l2_object_stop(self->v4l2capture);
@@ -1377,6 +1389,18 @@
switch (type)
{
+ case GST_EVENT_STREAM_START:
+ {
+ GstStructure *s;
+ GstEvent *event;
+ GST_DEBUG_OBJECT(self, "new private event");
+ s = gst_structure_new("private_signal", "obj_ptr", G_TYPE_POINTER, self, "sig_name", G_TYPE_STRING, "decoded-pts", NULL);
+ event = gst_event_new_custom (GST_EVENT_CUSTOM_UPSTREAM, s);
+ GST_DEBUG_OBJECT(self, "before Send private_signal Event :%p", event);
+ gst_pad_push_event (decoder->sinkpad, event);
+ GST_DEBUG_OBJECT(self, "after Send private_signal Event :%p", event);
+ break;
+ }
case GST_EVENT_FLUSH_START:
GST_DEBUG_OBJECT(self, "flush start");
@@ -1556,6 +1580,17 @@
element_class->change_state =
GST_DEBUG_FUNCPTR(gst_aml_v4l2_video_dec_change_state);
+ g_signals[SIGNAL_DECODED_PTS] = g_signal_new ("decoded-pts",
+ G_TYPE_FROM_CLASS(GST_ELEMENT_CLASS(klass)),
+ G_SIGNAL_RUN_LAST,
+ 0, /* class offset */
+ NULL, /* accumulator */
+ NULL, /* accu data */
+ g_cclosure_marshal_generic,
+ G_TYPE_NONE,
+ 1,
+ G_TYPE_UINT64);
+
gst_aml_v4l2_object_install_m2m_properties_helper(gobject_class);
#if GST_IMPORT_LGE_PROP
gst_aml_v4l2_video_dec_install_lge_properties_helper(gobject_class);