diff options
author | Wim Taymans <wim.taymans@gmail.com> | 2007-09-16 19:40:31 +0000 |
---|---|---|
committer | Wim Taymans <wim.taymans@gmail.com> | 2007-09-16 19:40:31 +0000 |
commit | 04d3b8290698e41034809e8baec11622ca128243 (patch) | |
tree | df6c408b0b15acbf31a1743d7ce7a882b47a9b7d /gst/rtpmanager/rtpjitterbuffer.h | |
parent | 51990d65dc103c9355bb83ef4bc75f7e1eae0ac4 (diff) | |
download | gst-plugins-bad-04d3b8290698e41034809e8baec11622ca128243.tar.gz gst-plugins-bad-04d3b8290698e41034809e8baec11622ca128243.tar.bz2 gst-plugins-bad-04d3b8290698e41034809e8baec11622ca128243.zip |
gst/rtpmanager/gstrtpbin.c: Use lock to protect variable.
Original commit message from CVS:
* gst/rtpmanager/gstrtpbin.c: (gst_rtp_bin_set_property),
(gst_rtp_bin_get_property):
Use lock to protect variable.
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_rtp_jitter_buffer_class_init),
(gst_jitter_buffer_sink_parse_caps), (gst_rtp_jitter_buffer_chain),
(convert_rtptime_to_gsttime), (gst_rtp_jitter_buffer_loop):
Reconstruct GST timestamp from RTP timestamps based on measured clock
skew and sync offset.
* gst/rtpmanager/rtpjitterbuffer.c: (rtp_jitter_buffer_init),
(rtp_jitter_buffer_set_tail_changed),
(rtp_jitter_buffer_set_clock_rate),
(rtp_jitter_buffer_get_clock_rate), (calculate_skew),
(rtp_jitter_buffer_insert), (rtp_jitter_buffer_peek):
* gst/rtpmanager/rtpjitterbuffer.h:
Measure clock skew.
Add callback to be notfied when a new packet was inserted at the tail.
* gst/rtpmanager/rtpsource.c: (rtp_source_init),
(calculate_jitter), (rtp_source_send_rtp):
* gst/rtpmanager/rtpsource.h:
Remove clock skew detection, it's move to the jitterbuffer now.
Diffstat (limited to 'gst/rtpmanager/rtpjitterbuffer.h')
-rw-r--r-- | gst/rtpmanager/rtpjitterbuffer.h | 46 |
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__ */ |