summaryrefslogtreecommitdiffstats
path: root/gst/rtpmanager/rtpjitterbuffer.h
diff options
context:
space:
mode:
Diffstat (limited to 'gst/rtpmanager/rtpjitterbuffer.h')
-rw-r--r--gst/rtpmanager/rtpjitterbuffer.h46
1 files changed, 38 insertions, 8 deletions
diff --git a/gst/rtpmanager/rtpjitterbuffer.h b/gst/rtpmanager/rtpjitterbuffer.h
index 8bff03c8..b67e265f 100644
--- a/gst/rtpmanager/rtpjitterbuffer.h
+++ b/gst/rtpmanager/rtpjitterbuffer.h
@@ -35,14 +35,38 @@ typedef struct _RTPJitterBufferClass RTPJitterBufferClass;
#define RTP_JITTER_BUFFER_CAST(src) ((RTPJitterBuffer *)(src))
/**
+ * RTPTailChanged:
+ * @jbuf: an #RTPJitterBuffer
+ * @user_data: user data specified when registering
+ *
+ * This callback will be called when the tail buffer of @jbuf changed.
+ */
+typedef void (*RTPTailChanged) (RTPJitterBuffer *jbuf, gpointer user_data);
+
+/**
* RTPJitterBuffer:
*
* A JitterBuffer in the #RTPSession
*/
struct _RTPJitterBuffer {
- GObject object;
+ GObject object;
+
+ GQueue *packets;
- GQueue *packets;
+ gint clock_rate;
+
+ /* for calculating skew */
+ GstClockTime base_time;
+ GstClockTime base_rtptime;
+ guint64 ext_rtptime;
+ gint64 window[100];
+ guint window_pos;
+ gboolean window_filling;
+ gint64 window_min;
+ gint64 skew;
+
+ RTPTailChanged tail_changed;
+ gpointer user_data;
};
struct _RTPJitterBufferClass {
@@ -52,14 +76,20 @@ struct _RTPJitterBufferClass {
GType rtp_jitter_buffer_get_type (void);
/* managing lifetime */
-RTPJitterBuffer* rtp_jitter_buffer_new (void);
+RTPJitterBuffer* rtp_jitter_buffer_new (void);
+
+void rtp_jitter_buffer_set_tail_changed (RTPJitterBuffer *jbuf, RTPTailChanged func,
+ gpointer user_data);
+
+void rtp_jitter_buffer_set_clock_rate (RTPJitterBuffer *jbuf, gint clock_rate);
+gint rtp_jitter_buffer_get_clock_rate (RTPJitterBuffer *jbuf);
-gboolean rtp_jitter_buffer_insert (RTPJitterBuffer *jbuf, GstBuffer *buf);
-GstBuffer * rtp_jitter_buffer_pop (RTPJitterBuffer *jbuf);
+gboolean rtp_jitter_buffer_insert (RTPJitterBuffer *jbuf, GstBuffer *buf, GstClockTime time);
+GstBuffer * rtp_jitter_buffer_pop (RTPJitterBuffer *jbuf);
-void rtp_jitter_buffer_flush (RTPJitterBuffer *jbuf);
+void rtp_jitter_buffer_flush (RTPJitterBuffer *jbuf);
-guint rtp_jitter_buffer_num_packets (RTPJitterBuffer *jbuf);
-guint32 rtp_jitter_buffer_get_ts_diff (RTPJitterBuffer *jbuf);
+guint rtp_jitter_buffer_num_packets (RTPJitterBuffer *jbuf);
+guint32 rtp_jitter_buffer_get_ts_diff (RTPJitterBuffer *jbuf);
#endif /* __RTP_JITTER_BUFFER_H__ */