[prev in list] [next in list] [prev in thread] [next in thread]
List: gstreamer-cvs
Subject: gst-plugins-ugly: mpeg2dec: post QoS messages when dropping a frame
From: tpm () kemper ! freedesktop ! org (Tim Müller)
Date: 2011-09-30 13:28:56
Message-ID: 20110930132856.5B0DA10009 () kemper ! freedesktop ! org
[Download RAW message or body]
Module: gst-plugins-ugly
Branch: master
Commit: 2cb398d20dd85b206b1ef5f67de704f090fe5b5b
URL: http://cgit.freedesktop.org/gstreamer/gst-plugins-ugly/commit/?id=2cb398d20dd85b206b1ef5f67de704f090fe5b5b
Author: Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
Date: Mon Sep 5 11:11:52 2011 +0100
mpeg2dec: post QoS messages when dropping a frame due to QoS
https://bugzilla.gnome.org/show_bug.cgi?id=658241
---
ext/mpeg2dec/gstmpeg2dec.c | 27 ++++++++++++++++++++++++++-
ext/mpeg2dec/gstmpeg2dec.h | 2 ++
2 files changed, 28 insertions(+), 1 deletions(-)
diff --git a/ext/mpeg2dec/gstmpeg2dec.c b/ext/mpeg2dec/gstmpeg2dec.c
index 4e03c69..833c8e4 100644
--- a/ext/mpeg2dec/gstmpeg2dec.c
+++ b/ext/mpeg2dec/gstmpeg2dec.c
@@ -284,6 +284,8 @@ gst_mpeg2dec_qos_reset (GstMpeg2dec * mpeg2dec)
GST_OBJECT_LOCK (mpeg2dec);
mpeg2dec->proportion = 1.0;
mpeg2dec->earliest_time = -1;
+ mpeg2dec->dropped = 0;
+ mpeg2dec->processed = 0;
GST_OBJECT_UNLOCK (mpeg2dec);
}
@@ -918,10 +920,33 @@ handle_slice (GstMpeg2dec * mpeg2dec, const mpeg2_info_t * \
info) && qostime <= mpeg2dec->earliest_time;
GST_OBJECT_UNLOCK (mpeg2dec);
- if (need_skip)
+ if (need_skip) {
+ GstMessage *qos_msg;
+ guint64 stream_time;
+ gint64 jitter;
+
+ mpeg2dec->dropped++;
+
+ stream_time =
+ gst_segment_to_stream_time (&mpeg2dec->segment, GST_FORMAT_TIME,
+ time);
+ jitter = GST_CLOCK_DIFF (qostime, mpeg2dec->earliest_time);
+
+ qos_msg =
+ gst_message_new_qos (GST_OBJECT_CAST (mpeg2dec), FALSE, qostime,
+ stream_time, time, GST_BUFFER_DURATION (outbuf));
+ gst_message_set_qos_values (qos_msg, jitter, mpeg2dec->proportion,
+ 1000000);
+ gst_message_set_qos_stats (qos_msg, GST_FORMAT_BUFFERS,
+ mpeg2dec->processed, mpeg2dec->dropped);
+ gst_element_post_message (GST_ELEMENT_CAST (mpeg2dec), qos_msg);
+
goto dropping_qos;
+ }
}
+ mpeg2dec->processed++;
+
/* ref before pushing it out, so we still have the ref in our
* array of buffers */
gst_buffer_ref (outbuf);
diff --git a/ext/mpeg2dec/gstmpeg2dec.h b/ext/mpeg2dec/gstmpeg2dec.h
index 43ba42d..69f4fe3 100644
--- a/ext/mpeg2dec/gstmpeg2dec.h
+++ b/ext/mpeg2dec/gstmpeg2dec.h
@@ -110,6 +110,8 @@ struct _GstMpeg2dec {
/* QoS stuff */ /* with LOCK*/
gdouble proportion;
GstClockTime earliest_time;
+ guint64 processed;
+ guint64 dropped;
/* gather/decode queues for reverse playback */
GList *gather;
_______________________________________________
gstreamer-commits mailing list
gstreamer-commits@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/gstreamer-commits
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic