static GstClockTime gst_rtp_session_request_time (RTPSession * session,
gpointer user_data);
static void gst_rtp_session_notify_nack (RTPSession * sess,
- guint16 seqnum, guint16 blp, gpointer user_data);
+ guint16 seqnum, guint16 blp, guint32 ssrc, gpointer user_data);
static RTPSessionCallbacks callbacks = {
gst_rtp_session_process_rtp,
static void
gst_rtp_session_notify_nack (RTPSession * sess, guint16 seqnum,
- guint16 blp, gpointer user_data)
+ guint16 blp, guint32 ssrc, gpointer user_data)
{
GstRtpSession *rtpsession = GST_RTP_SESSION (user_data);
GstEvent *event;
while (TRUE) {
event = gst_event_new_custom (GST_EVENT_CUSTOM_UPSTREAM,
gst_structure_new ("GstRTPRetransmissionRequest",
- "seqnum", G_TYPE_UINT, (guint) seqnum, NULL));
+ "seqnum", G_TYPE_UINT, (guint) seqnum,
+ "ssrc", G_TYPE_UINT, (guint) ssrc, NULL));
gst_pad_push_event (send_rtp_sink, event);
if (blp == 0)
seqnum = GST_READ_UINT16_BE (fci_data);
blp = GST_READ_UINT16_BE (fci_data + 2);
- GST_DEBUG ("NACK #%u, blp %04x", seqnum, blp);
+ GST_DEBUG ("NACK #%u, blp %04x, SSRC 0x%08x", seqnum, blp, media_ssrc);
RTP_SESSION_UNLOCK (sess);
- sess->callbacks.notify_nack (sess, seqnum, blp,
+ sess->callbacks.notify_nack (sess, seqnum, blp, media_ssrc,
sess->notify_nack_user_data);
RTP_SESSION_LOCK (sess);
* @sess: an #RTPSession
* @seqnum: the missing seqnum
* @blp: other missing seqnums
+ * @ssrc: SSRC of requested stream
* @user_data: user data specified when registering
*
* Notifies of NACKed frames.
*/
typedef void (*RTPSessionNotifyNACK) (RTPSession *sess,
- guint16 seqnum, guint16 blp, gpointer user_data);
+ guint16 seqnum, guint16 blp, guint32 ssrc, gpointer user_data);
/**
* RTPSessionCallbacks: