/* GStreamer * Copyright (C) <2007> Wim Taymans <wim.taymans@gmail.com> * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef __GST_RTP_SESSION_H__ #define __GST_RTP_SESSION_H__ #include <gst/gst.h> #define GST_TYPE_RTP_SESSION \ (gst_rtp_session_get_type()) #define GST_RTP_SESSION(obj) \ (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_RTP_SESSION,GstRtpSession)) #define GST_RTP_SESSION_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_RTP_SESSION,GstRtpSessionClass)) #define GST_IS_RTP_SESSION(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_RTP_SESSION)) #define GST_IS_RTP_SESSION_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RTP_SESSION)) #define GST_RTP_SESSION_CAST(obj) ((GstRtpSession *)(obj)) typedef struct _GstRtpSession GstRtpSession; typedef struct _GstRtpSessionClass GstRtpSessionClass; typedef struct _GstRtpSessionPrivate GstRtpSessionPrivate; struct _GstRtpSession { GstElement element; /*< private >*/ GstPad *recv_rtp_sink; GstSegment recv_rtp_seg; GstPad *recv_rtcp_sink; GstPad *send_rtp_sink; GstSegment send_rtp_seg; GstPad *recv_rtp_src; GstPad *sync_src; GstPad *send_rtp_src; GstPad *send_rtcp_src; GstRtpSessionPrivate *priv; }; struct _GstRtpSessionClass { GstElementClass parent_class; /* signals */ GstCaps* (*request_pt_map) (GstRtpSession *sess, guint pt); void (*clear_pt_map) (GstRtpSession *sess); void (*on_new_ssrc) (GstRtpSession *sess, guint32 ssrc); void (*on_ssrc_collision) (GstRtpSession *sess, guint32 ssrc); void (*on_ssrc_validated) (GstRtpSession *sess, guint32 ssrc); void (*on_ssrc_active) (GstRtpSession *sess, guint32 ssrc); void (*on_ssrc_sdes) (GstRtpSession *sess, guint32 ssrc); void (*on_bye_ssrc) (GstRtpSession *sess, guint32 ssrc); void (*on_bye_timeout) (GstRtpSession *sess, guint32 ssrc); void (*on_timeout) (GstRtpSession *sess, guint32 ssrc); void (*on_sender_timeout) (GstRtpSession *sess, guint32 ssrc); void (*on_new_sender_ssrc) (GstRtpSession *sess, guint32 ssrc); void (*on_sender_ssrc_active) (GstRtpSession *sess, guint32 ssrc); }; GType gst_rtp_session_get_type (void); typedef enum { GST_RTP_NTP_TIME_SOURCE_NTP, GST_RTP_NTP_TIME_SOURCE_UNIX, GST_RTP_NTP_TIME_SOURCE_RUNNING_TIME, GST_RTP_NTP_TIME_SOURCE_CLOCK_TIME } GstRtpNtpTimeSource; GType gst_rtp_ntp_time_source_get_type (void); #endif /* __GST_RTP_SESSION_H__ */