if (priv->clock_rate <= 0)
goto wrong_rate;
- rtp_jitter_buffer_set_clock_rate (priv->jbuf, priv->clock_rate);
-
GST_DEBUG_OBJECT (jitterbuffer, "got clock-rate %d", priv->clock_rate);
/* gah, clock-base is uint. If we don't have a base, we will use the first
gst_rtp_jitter_buffer_get_clock_rate (jitterbuffer, pt);
if (priv->clock_rate == -1)
goto not_negotiated;
-
- rtp_jitter_buffer_set_clock_rate (priv->jbuf, priv->clock_rate);
}
/* take the timestamp of the buffer. This is the time when the packet was
/* now insert the packet into the queue in sorted order. This function returns
* FALSE if a packet with the same seqnum was already in the queue, meaning we
* have a duplicate. */
- if (!rtp_jitter_buffer_insert (priv->jbuf, buffer, timestamp, &tail))
+ if (!rtp_jitter_buffer_insert (priv->jbuf, buffer, timestamp,
+ priv->clock_rate, &tail))
goto duplicate;
/* signal addition of new buffer when the _loop is waiting. */
}
void
-rtp_jitter_buffer_set_clock_rate (RTPJitterBuffer * jbuf, gint clock_rate)
-{
- g_return_if_fail (jbuf != NULL);
-
- jbuf->clock_rate = clock_rate;
-}
-
-gint
-rtp_jitter_buffer_get_clock_rate (RTPJitterBuffer * jbuf)
-{
- g_return_val_if_fail (jbuf != NULL, 0);
-
- return jbuf->clock_rate;
-}
-
-void
rtp_jitter_buffer_reset_skew (RTPJitterBuffer * jbuf)
{
jbuf->base_time = -1;
* Returns: @time adjusted with the clock skew.
*/
static GstClockTime
-calculate_skew (RTPJitterBuffer * jbuf, guint32 rtptime, GstClockTime time)
+calculate_skew (RTPJitterBuffer * jbuf, guint32 rtptime, GstClockTime time,
+ guint32 clock_rate)
{
guint64 ext_rtptime;
guint64 send_diff, recv_diff;
ext_rtptime = gst_rtp_buffer_ext_timestamp (&jbuf->ext_rtptime, rtptime);
- gstrtptime =
- gst_util_uint64_scale_int (ext_rtptime, GST_SECOND, jbuf->clock_rate);
+ gstrtptime = gst_util_uint64_scale_int (ext_rtptime, GST_SECOND, clock_rate);
again:
/* first time, lock on to time and gstrtptime */
* @jbuf: an #RTPJitterBuffer
* @buf: a buffer
* @time: a running_time when this buffer was received in nanoseconds
+ * @clock_rate: the clock-rate of the payload of @buf
* @tail: TRUE when the tail element changed.
*
* Inserts @buf into the packet queue of @jbuf. The sequence number of the
*/
gboolean
rtp_jitter_buffer_insert (RTPJitterBuffer * jbuf, GstBuffer * buf,
- GstClockTime time, gboolean * tail)
+ GstClockTime time, guint32 clock_rate, gboolean * tail)
{
GList *list;
gint func_ret = 1;
* receive time, this function will retimestamp @buf with the skew corrected
* running time. */
rtptime = gst_rtp_buffer_get_timestamp (buf);
- time = calculate_skew (jbuf, rtptime, time);
+ time = calculate_skew (jbuf, rtptime, time, clock_rate);
GST_BUFFER_TIMESTAMP (buf) = time;
if (list)
GQueue *packets;
- gint clock_rate;
-
/* for calculating skew */
GstClockTime base_time;
GstClockTime base_rtptime;
/* managing lifetime */
RTPJitterBuffer* rtp_jitter_buffer_new (void);
-void rtp_jitter_buffer_set_clock_rate (RTPJitterBuffer *jbuf, gint clock_rate);
-gint rtp_jitter_buffer_get_clock_rate (RTPJitterBuffer *jbuf);
-
void rtp_jitter_buffer_reset_skew (RTPJitterBuffer *jbuf);
gboolean rtp_jitter_buffer_insert (RTPJitterBuffer *jbuf, GstBuffer *buf,
- GstClockTime time, gboolean *tail);
+ GstClockTime time,
+ guint32 clock_rate,
+ gboolean *tail);
GstBuffer * rtp_jitter_buffer_peek (RTPJitterBuffer *jbuf);
GstBuffer * rtp_jitter_buffer_pop (RTPJitterBuffer *jbuf);