1 /* GStreamer 2 * Copyright (C) <2007> Wim Taymans <wim.taymans@gmail.com> 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Library General Public 6 * License as published by the Free Software Foundation; either 7 * version 2 of the License, or (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * Library General Public License for more details. 13 * 14 * You should have received a copy of the GNU Library General Public 15 * License along with this library; if not, write to the 16 * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, 17 * Boston, MA 02110-1301, USA. 18 */ 19 20 #ifndef __GST_RTP_SESSION_H__ 21 #define __GST_RTP_SESSION_H__ 22 23 #include <gst/gst.h> 24 25 #define GST_TYPE_RTP_SESSION \ 26 (gst_rtp_session_get_type()) 27 #define GST_RTP_SESSION(obj) \ 28 (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_RTP_SESSION,GstRtpSession)) 29 #define GST_RTP_SESSION_CLASS(klass) \ 30 (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_RTP_SESSION,GstRtpSessionClass)) 31 #define GST_IS_RTP_SESSION(obj) \ 32 (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_RTP_SESSION)) 33 #define GST_IS_RTP_SESSION_CLASS(klass) \ 34 (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RTP_SESSION)) 35 #define GST_RTP_SESSION_CAST(obj) ((GstRtpSession *)(obj)) 36 37 typedef struct _GstRtpSession GstRtpSession; 38 typedef struct _GstRtpSessionClass GstRtpSessionClass; 39 typedef struct _GstRtpSessionPrivate GstRtpSessionPrivate; 40 41 struct _GstRtpSession { 42 GstElement element; 43 44 /*< private >*/ 45 GstPad *recv_rtp_sink; 46 GstSegment recv_rtp_seg; 47 GstPad *recv_rtcp_sink; 48 GstPad *send_rtp_sink; 49 GstSegment send_rtp_seg; 50 51 GstPad *recv_rtp_src; 52 GstPad *sync_src; 53 GstPad *send_rtp_src; 54 GstPad *send_rtcp_src; 55 56 guint32 recv_rtcp_segment_seqnum; 57 58 GstRtpSessionPrivate *priv; 59 }; 60 61 struct _GstRtpSessionClass { 62 GstElementClass parent_class; 63 64 /* signals */ 65 GstCaps* (*request_pt_map) (GstRtpSession *sess, guint pt); 66 void (*clear_pt_map) (GstRtpSession *sess); 67 68 void (*on_new_ssrc) (GstRtpSession *sess, guint32 ssrc); 69 void (*on_ssrc_collision) (GstRtpSession *sess, guint32 ssrc); 70 void (*on_ssrc_validated) (GstRtpSession *sess, guint32 ssrc); 71 void (*on_ssrc_active) (GstRtpSession *sess, guint32 ssrc); 72 void (*on_ssrc_sdes) (GstRtpSession *sess, guint32 ssrc); 73 void (*on_bye_ssrc) (GstRtpSession *sess, guint32 ssrc); 74 void (*on_bye_timeout) (GstRtpSession *sess, guint32 ssrc); 75 void (*on_timeout) (GstRtpSession *sess, guint32 ssrc); 76 void (*on_sender_timeout) (GstRtpSession *sess, guint32 ssrc); 77 void (*on_new_sender_ssrc) (GstRtpSession *sess, guint32 ssrc); 78 void (*on_sender_ssrc_active) (GstRtpSession *sess, guint32 ssrc); 79 }; 80 81 GType gst_rtp_session_get_type (void); 82 83 typedef enum { 84 GST_RTP_NTP_TIME_SOURCE_NTP, 85 GST_RTP_NTP_TIME_SOURCE_UNIX, 86 GST_RTP_NTP_TIME_SOURCE_RUNNING_TIME, 87 GST_RTP_NTP_TIME_SOURCE_CLOCK_TIME 88 } GstRtpNtpTimeSource; 89 90 GType gst_rtp_ntp_time_source_get_type (void); 91 92 #endif /* __GST_RTP_SESSION_H__ */ 93