static void buffer_latency_probe_cb (GstBuffer * buffer, ProbeData * pdata) { BufferLatencyValues *blv = (BufferLatencyValues *) pdata->invoke_data; GstClockTime time; time = kms_utils_get_time_nsecs (); kms_buffer_add_buffer_latency_meta (buffer, time, blv->valid, blv->type); }
static GstPadProbeReturn add_metadata_data (GstPad * pad, GstPadProbeInfo * info, gpointer user_data) { GstClockTime time; GstBuffer *buffer; buffer = GST_PAD_PROBE_INFO_BUFFER (info); time = g_get_monotonic_time () * GST_USECOND; kms_buffer_add_buffer_latency_meta (buffer, time, TRUE, 0 /*No matter media type */ ); return GST_PAD_PROBE_OK; }
static gboolean kms_buffer_latency_meta_transform (GstBuffer * transbuf, GstMeta * meta, GstBuffer * buffer, GQuark type, gpointer data) { KmsBufferLatencyMeta *lmeta; /* we always copy no matter what transform */ if (GST_META_TRANSFORM_IS_COPY (type)) { lmeta = (KmsBufferLatencyMeta *) meta; GST_DEBUG ("copy latency metadata"); kms_buffer_add_buffer_latency_meta (transbuf, lmeta->ts, lmeta->valid, lmeta->type); } return TRUE; }