diff options
Diffstat (limited to 'gst/rtp')
-rw-r--r-- | gst/rtp/gstrtp-common.h | 2 | ||||
-rw-r--r-- | gst/rtp/gstrtp.c | 18 | ||||
-rw-r--r-- | gst/rtp/gstrtpL16depay.c | 128 | ||||
-rw-r--r-- | gst/rtp/gstrtpL16depay.h | 32 | ||||
-rw-r--r-- | gst/rtp/gstrtpL16enc.c | 107 | ||||
-rw-r--r-- | gst/rtp/gstrtpL16enc.h | 44 | ||||
-rw-r--r-- | gst/rtp/gstrtpL16parse.c | 128 | ||||
-rw-r--r-- | gst/rtp/gstrtpL16parse.h | 32 | ||||
-rw-r--r-- | gst/rtp/gstrtpL16pay.c | 107 | ||||
-rw-r--r-- | gst/rtp/gstrtpL16pay.h | 44 | ||||
-rw-r--r-- | gst/rtp/gstrtpgsmdepay.c | 95 | ||||
-rw-r--r-- | gst/rtp/gstrtpgsmdepay.h | 28 | ||||
-rw-r--r-- | gst/rtp/gstrtpgsmenc.c | 88 | ||||
-rw-r--r-- | gst/rtp/gstrtpgsmenc.h | 42 | ||||
-rw-r--r-- | gst/rtp/gstrtpgsmparse.c | 95 | ||||
-rw-r--r-- | gst/rtp/gstrtpgsmparse.h | 28 | ||||
-rw-r--r-- | gst/rtp/gstrtpgsmpay.c | 88 | ||||
-rw-r--r-- | gst/rtp/gstrtpgsmpay.h | 42 | ||||
-rw-r--r-- | gst/rtp/rtp-packet.c | 189 | ||||
-rw-r--r-- | gst/rtp/rtp-packet.h | 107 |
20 files changed, 761 insertions, 683 deletions
diff --git a/gst/rtp/gstrtp-common.h b/gst/rtp/gstrtp-common.h index fb675189..ec4cd947 100644 --- a/gst/rtp/gstrtp-common.h +++ b/gst/rtp/gstrtp-common.h @@ -26,7 +26,7 @@ typedef enum { /* Audio: */ - PAYLOAD_PCMU = 0, /* ITU-T G.711. mu-law audio (RFC 3551) */ + PAYLOAD_PCMU = 0, /* ITU-T G.711. mu-law audio (RFC 3551) */ PAYLOAD_GSM = 3, PAYLOAD_PCMA = 8, /* ITU-T G.711 A-law audio (RFC 3551) */ PAYLOAD_L16_STEREO = 10, diff --git a/gst/rtp/gstrtp.c b/gst/rtp/gstrtp.c index 4f3f7d46..fd1a3aa1 100644 --- a/gst/rtp/gstrtp.c +++ b/gst/rtp/gstrtp.c @@ -27,7 +27,7 @@ #include "gstrtpgsmparse.h" static gboolean -plugin_init (GstPlugin *plugin) +plugin_init (GstPlugin * plugin) { if (!gst_rtpL16enc_plugin_init (plugin) || !gst_rtpL16parse_plugin_init (plugin) || @@ -38,14 +38,8 @@ plugin_init (GstPlugin *plugin) return TRUE; } -GST_PLUGIN_DEFINE ( - GST_VERSION_MAJOR, - GST_VERSION_MINOR, - "rtp", - "Real-time protocol plugins", - plugin_init, - VERSION, - "LGPL", - GST_PACKAGE, - GST_ORIGIN -) +GST_PLUGIN_DEFINE (GST_VERSION_MAJOR, + GST_VERSION_MINOR, + "rtp", + "Real-time protocol plugins", + plugin_init, VERSION, "LGPL", GST_PACKAGE, GST_ORIGIN) diff --git a/gst/rtp/gstrtpL16depay.c b/gst/rtp/gstrtpL16depay.c index 51ec258c..07bfb6a0 100644 --- a/gst/rtp/gstrtpL16depay.c +++ b/gst/rtp/gstrtpL16depay.c @@ -42,43 +42,41 @@ enum }; static GstStaticPadTemplate gst_rtpL16parse_src_template = -GST_STATIC_PAD_TEMPLATE ( - "src", +GST_STATIC_PAD_TEMPLATE ("src", GST_PAD_SRC, GST_PAD_ALWAYS, - GST_STATIC_CAPS ( "audio/x-raw-int, " - "endianness = (int) BYTE_ORDER, " - "signed = (boolean) true, " - "width = (int) 16, " - "depth = (int) 16, " - "rate = (int) [ 1000, 48000 ], " - "channels = (int) [ 1, 2 ]" - ) -); + GST_STATIC_CAPS ("audio/x-raw-int, " + "endianness = (int) BYTE_ORDER, " + "signed = (boolean) true, " + "width = (int) 16, " + "depth = (int) 16, " + "rate = (int) [ 1000, 48000 ], " "channels = (int) [ 1, 2 ]") + ); static GstStaticPadTemplate gst_rtpL16parse_sink_template = -GST_STATIC_PAD_TEMPLATE ( - "sink", +GST_STATIC_PAD_TEMPLATE ("sink", GST_PAD_SINK, GST_PAD_ALWAYS, GST_STATIC_CAPS ("application/x-rtp") -); + ); static void gst_rtpL16parse_class_init (GstRtpL16ParseClass * klass); static void gst_rtpL16parse_base_init (GstRtpL16ParseClass * klass); static void gst_rtpL16parse_init (GstRtpL16Parse * rtpL16parse); -static void gst_rtpL16parse_chain (GstPad * pad, GstData *_data); +static void gst_rtpL16parse_chain (GstPad * pad, GstData * _data); static void gst_rtpL16parse_set_property (GObject * object, guint prop_id, - const GValue * value, GParamSpec * pspec); + const GValue * value, GParamSpec * pspec); static void gst_rtpL16parse_get_property (GObject * object, guint prop_id, - GValue * value, GParamSpec * pspec); -static GstElementStateReturn gst_rtpL16parse_change_state (GstElement * element); + GValue * value, GParamSpec * pspec); +static GstElementStateReturn gst_rtpL16parse_change_state (GstElement * + element); static GstElementClass *parent_class = NULL; -static GType gst_rtpL16parse_get_type (void) +static GType +gst_rtpL16parse_get_type (void) { static GType rtpL16parse_type = 0; @@ -95,7 +93,9 @@ static GType gst_rtpL16parse_get_type (void) (GInstanceInitFunc) gst_rtpL16parse_init, }; - rtpL16parse_type = g_type_register_static (GST_TYPE_ELEMENT, "GstRtpL16Parse", &rtpL16parse_info, 0); + rtpL16parse_type = + g_type_register_static (GST_TYPE_ELEMENT, "GstRtpL16Parse", + &rtpL16parse_info, 0); } return rtpL16parse_type; } @@ -123,12 +123,12 @@ gst_rtpL16parse_class_init (GstRtpL16ParseClass * klass) parent_class = g_type_class_ref (GST_TYPE_ELEMENT); - g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_PAYLOAD_TYPE, - g_param_spec_int ("payload_type", "payload_type", "payload type", - G_MININT, G_MAXINT, PAYLOAD_L16_STEREO, G_PARAM_READABLE)); - g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_FREQUENCY, - g_param_spec_int ("frequency", "frequency", "frequency", - G_MININT, G_MAXINT, 44100, G_PARAM_READWRITE)); + g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_PAYLOAD_TYPE, + g_param_spec_int ("payload_type", "payload_type", "payload type", + G_MININT, G_MAXINT, PAYLOAD_L16_STEREO, G_PARAM_READABLE)); + g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_FREQUENCY, + g_param_spec_int ("frequency", "frequency", "frequency", + G_MININT, G_MAXINT, 44100, G_PARAM_READWRITE)); gobject_class->set_property = gst_rtpL16parse_set_property; gobject_class->get_property = gst_rtpL16parse_get_property; @@ -139,10 +139,12 @@ gst_rtpL16parse_class_init (GstRtpL16ParseClass * klass) static void gst_rtpL16parse_init (GstRtpL16Parse * rtpL16parse) { - rtpL16parse->srcpad = gst_pad_new_from_template ( - gst_static_pad_template_get (&gst_rtpL16parse_src_template), "src"); - rtpL16parse->sinkpad = gst_pad_new_from_template ( - gst_static_pad_template_get (&gst_rtpL16parse_sink_template), "sink"); + rtpL16parse->srcpad = + gst_pad_new_from_template (gst_static_pad_template_get + (&gst_rtpL16parse_src_template), "src"); + rtpL16parse->sinkpad = + gst_pad_new_from_template (gst_static_pad_template_get + (&gst_rtpL16parse_sink_template), "sink"); gst_element_add_pad (GST_ELEMENT (rtpL16parse), rtpL16parse->srcpad); gst_element_add_pad (GST_ELEMENT (rtpL16parse), rtpL16parse->sinkpad); gst_pad_set_chain_function (rtpL16parse->sinkpad, gst_rtpL16parse_chain); @@ -154,25 +156,27 @@ gst_rtpL16parse_init (GstRtpL16Parse * rtpL16parse) } void -gst_rtpL16parse_ntohs (GstBuffer *buf) +gst_rtpL16parse_ntohs (GstBuffer * buf) { gint16 *i, *len; /* FIXME: is this code correct or even sane at all? */ - i = (gint16 *) GST_BUFFER_DATA(buf); + i = (gint16 *) GST_BUFFER_DATA (buf); len = i + GST_BUFFER_SIZE (buf) / sizeof (gint16 *); - for (; i<len; i++) { - *i = g_ntohs (*i); + for (; i < len; i++) { + *i = g_ntohs (*i); } } void -gst_rtpL16_caps_nego (GstRtpL16Parse *rtpL16parse) +gst_rtpL16_caps_nego (GstRtpL16Parse * rtpL16parse) { GstCaps *caps; - caps = gst_caps_copy(gst_static_caps_get (&gst_rtpL16parse_src_template.static_caps)); + caps = + gst_caps_copy (gst_static_caps_get (&gst_rtpL16parse_src_template. + static_caps)); gst_caps_set_simple (caps, "rate", G_TYPE_INT, rtpL16parse->frequency, @@ -182,26 +186,27 @@ gst_rtpL16_caps_nego (GstRtpL16Parse *rtpL16parse) } void -gst_rtpL16parse_payloadtype_change (GstRtpL16Parse *rtpL16parse, rtp_payload_t pt) +gst_rtpL16parse_payloadtype_change (GstRtpL16Parse * rtpL16parse, + rtp_payload_t pt) { rtpL16parse->payload_type = pt; - + switch (pt) { - case PAYLOAD_L16_MONO: - rtpL16parse->channels = 1; - break; - case PAYLOAD_L16_STEREO: - rtpL16parse->channels = 2; - break; - default: - g_warning ("unknown payload_t %d\n", pt); + case PAYLOAD_L16_MONO: + rtpL16parse->channels = 1; + break; + case PAYLOAD_L16_STEREO: + rtpL16parse->channels = 2; + break; + default: + g_warning ("unknown payload_t %d\n", pt); } gst_rtpL16_caps_nego (rtpL16parse); } static void -gst_rtpL16parse_chain (GstPad * pad, GstData *_data) +gst_rtpL16parse_chain (GstPad * pad, GstData * _data) { GstBuffer *buf = GST_BUFFER (_data); GstRtpL16Parse *rtpL16parse; @@ -220,8 +225,9 @@ gst_rtpL16parse_chain (GstPad * pad, GstData *_data) if (GST_IS_EVENT (buf)) { GstEvent *event = GST_EVENT (buf); + gst_pad_event_default (pad, event); - + return; } @@ -229,26 +235,30 @@ gst_rtpL16parse_chain (GstPad * pad, GstData *_data) gst_rtpL16_caps_nego (rtpL16parse); } - packet = rtp_packet_new_copy_data (GST_BUFFER_DATA (buf), GST_BUFFER_SIZE (buf)); + packet = + rtp_packet_new_copy_data (GST_BUFFER_DATA (buf), GST_BUFFER_SIZE (buf)); pt = rtp_packet_get_payload_type (packet); if (pt != rtpL16parse->payload_type) { - gst_rtpL16parse_payloadtype_change (rtpL16parse, pt); + gst_rtpL16parse_payloadtype_change (rtpL16parse, pt); } outbuf = gst_buffer_new (); GST_BUFFER_SIZE (outbuf) = rtp_packet_get_payload_len (packet); GST_BUFFER_DATA (outbuf) = g_malloc (GST_BUFFER_SIZE (outbuf)); - GST_BUFFER_TIMESTAMP (outbuf) = g_ntohl (rtp_packet_get_timestamp (packet)) * GST_SECOND; + GST_BUFFER_TIMESTAMP (outbuf) = + g_ntohl (rtp_packet_get_timestamp (packet)) * GST_SECOND; + + memcpy (GST_BUFFER_DATA (outbuf), rtp_packet_get_payload (packet), + GST_BUFFER_SIZE (outbuf)); - memcpy (GST_BUFFER_DATA (outbuf), rtp_packet_get_payload (packet), GST_BUFFER_SIZE (outbuf)); - - GST_DEBUG ("gst_rtpL16parse_chain: pushing buffer of size %d", GST_BUFFER_SIZE(outbuf)); + GST_DEBUG ("gst_rtpL16parse_chain: pushing buffer of size %d", + GST_BUFFER_SIZE (outbuf)); /* FIXME: According to RFC 1890, this is required, right? */ #if G_BYTE_ORDER == G_LITTLE_ENDIAN - gst_rtpL16parse_ntohs (outbuf); + gst_rtpL16parse_ntohs (outbuf); #endif gst_pad_push (rtpL16parse->srcpad, GST_DATA (outbuf)); @@ -258,7 +268,8 @@ gst_rtpL16parse_chain (GstPad * pad, GstData *_data) } static void -gst_rtpL16parse_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec) +gst_rtpL16parse_set_property (GObject * object, guint prop_id, + const GValue * value, GParamSpec * pspec) { GstRtpL16Parse *rtpL16parse; @@ -279,7 +290,8 @@ gst_rtpL16parse_set_property (GObject * object, guint prop_id, const GValue * va } static void -gst_rtpL16parse_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec) +gst_rtpL16parse_get_property (GObject * object, guint prop_id, GValue * value, + GParamSpec * pspec) { GstRtpL16Parse *rtpL16parse; @@ -331,5 +343,5 @@ gboolean gst_rtpL16parse_plugin_init (GstPlugin * plugin) { return gst_element_register (plugin, "rtpL16parse", - GST_RANK_NONE, GST_TYPE_RTP_L16_PARSE); + GST_RANK_NONE, GST_TYPE_RTP_L16_PARSE); } diff --git a/gst/rtp/gstrtpL16depay.h b/gst/rtp/gstrtpL16depay.h index dad467bf..b49cf240 100644 --- a/gst/rtp/gstrtpL16depay.h +++ b/gst/rtp/gstrtpL16depay.h @@ -30,26 +30,26 @@ extern "C" #endif /* __cplusplus */ /* Definition of structure storing data for this element. */ -typedef struct _GstRtpL16Parse GstRtpL16Parse; -struct _GstRtpL16Parse -{ - GstElement element; + typedef struct _GstRtpL16Parse GstRtpL16Parse; + struct _GstRtpL16Parse + { + GstElement element; - GstPad *sinkpad; - GstPad *srcpad; + GstPad *sinkpad; + GstPad *srcpad; - guint frequency; - guint channels; + guint frequency; + guint channels; - rtp_payload_t payload_type; -}; + rtp_payload_t payload_type; + }; /* Standard definition defining a class for this element. */ -typedef struct _GstRtpL16ParseClass GstRtpL16ParseClass; -struct _GstRtpL16ParseClass -{ - GstElementClass parent_class; -}; + typedef struct _GstRtpL16ParseClass GstRtpL16ParseClass; + struct _GstRtpL16ParseClass + { + GstElementClass parent_class; + }; /* Standard macros for defining types for this element. */ #define GST_TYPE_RTP_L16_PARSE \ @@ -63,7 +63,7 @@ struct _GstRtpL16ParseClass #define GST_IS_RTP_L16_PARSE_CLASS(obj) \ (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RTP_L16_PARSE)) -gboolean gst_rtpL16parse_plugin_init (GstPlugin * plugin); + gboolean gst_rtpL16parse_plugin_init (GstPlugin * plugin); #ifdef __cplusplus } diff --git a/gst/rtp/gstrtpL16enc.c b/gst/rtp/gstrtpL16enc.c index 45d6a95a..0914d2fb 100644 --- a/gst/rtp/gstrtpL16enc.c +++ b/gst/rtp/gstrtpL16enc.c @@ -45,42 +45,40 @@ enum }; static GstStaticPadTemplate gst_rtpL16enc_sink_template = -GST_STATIC_PAD_TEMPLATE ( - "sink", +GST_STATIC_PAD_TEMPLATE ("sink", GST_PAD_SINK, GST_PAD_ALWAYS, - GST_STATIC_CAPS ( "audio/x-raw-int, " - "endianness = (int) BYTE_ORDER, " - "signed = (boolean) true, " - "width = (int) 16, " - "depth = (int) 16, " - "rate = (int) [ 1000, 48000 ], " - "channels = (int) [ 1, 2 ]" - ) -); + GST_STATIC_CAPS ("audio/x-raw-int, " + "endianness = (int) BYTE_ORDER, " + "signed = (boolean) true, " + "width = (int) 16, " + "depth = (int) 16, " + "rate = (int) [ 1000, 48000 ], " "channels = (int) [ 1, 2 ]") + ); static GstStaticPadTemplate gst_rtpL16enc_src_template = -GST_STATIC_PAD_TEMPLATE ( - "src", +GST_STATIC_PAD_TEMPLATE ("src", GST_PAD_SRC, GST_PAD_ALWAYS, GST_STATIC_CAPS ("application/x-rtp") -); + ); static void gst_rtpL16enc_class_init (GstRtpL16EncClass * klass); static void gst_rtpL16enc_base_init (GstRtpL16EncClass * klass); static void gst_rtpL16enc_init (GstRtpL16Enc * rtpL16enc); -static void gst_rtpL16enc_chain (GstPad * pad, GstData *_data); +static void gst_rtpL16enc_chain (GstPad * pad, GstData * _data); static void gst_rtpL16enc_set_property (GObject * object, guint prop_id, - const GValue * value, GParamSpec * pspec); + const GValue * value, GParamSpec * pspec); static void gst_rtpL16enc_get_property (GObject * object, guint prop_id, - GValue * value, GParamSpec * pspec); -static GstPadLinkReturn gst_rtpL16enc_sinkconnect (GstPad * pad, const GstCaps * caps); + GValue * value, GParamSpec * pspec); +static GstPadLinkReturn gst_rtpL16enc_sinkconnect (GstPad * pad, + const GstCaps * caps); static GstElementStateReturn gst_rtpL16enc_change_state (GstElement * element); static GstElementClass *parent_class = NULL; -static GType gst_rtpL16enc_get_type (void) +static GType +gst_rtpL16enc_get_type (void) { static GType rtpL16enc_type = 0; @@ -97,7 +95,9 @@ static GType gst_rtpL16enc_get_type (void) (GInstanceInitFunc) gst_rtpL16enc_init, }; - rtpL16enc_type = g_type_register_static (GST_TYPE_ELEMENT, "GstRtpL16Enc", &rtpL16enc_info, 0); + rtpL16enc_type = + g_type_register_static (GST_TYPE_ELEMENT, "GstRtpL16Enc", + &rtpL16enc_info, 0); } return rtpL16enc_type; } @@ -134,10 +134,12 @@ gst_rtpL16enc_class_init (GstRtpL16EncClass * klass) static void gst_rtpL16enc_init (GstRtpL16Enc * rtpL16enc) { - rtpL16enc->sinkpad = gst_pad_new_from_template ( - gst_static_pad_template_get (&gst_rtpL16enc_sink_template), "sink"); - rtpL16enc->srcpad = gst_pad_new_from_template ( - gst_static_pad_template_get (&gst_rtpL16enc_src_template), "src"); + rtpL16enc->sinkpad = + gst_pad_new_from_template (gst_static_pad_template_get + (&gst_rtpL16enc_sink_template), "sink"); + rtpL16enc->srcpad = + gst_pad_new_from_template (gst_static_pad_template_get + (&gst_rtpL16enc_src_template), "src"); gst_element_add_pad (GST_ELEMENT (rtpL16enc), rtpL16enc->sinkpad); gst_element_add_pad (GST_ELEMENT (rtpL16enc), rtpL16enc->srcpad); gst_pad_set_chain_function (rtpL16enc->sinkpad, gst_rtpL16enc_chain); @@ -146,7 +148,7 @@ gst_rtpL16enc_init (GstRtpL16Enc * rtpL16enc) rtpL16enc->frequency = 44100; rtpL16enc->channels = 2; - rtpL16enc->next_time = 0; + rtpL16enc->next_time = 0; rtpL16enc->time_interval = 0; rtpL16enc->seq = 0; @@ -167,31 +169,33 @@ gst_rtpL16enc_sinkconnect (GstPad * pad, const GstCaps * caps) ret = gst_structure_get_int (structure, "rate", &rtpL16enc->frequency); ret &= gst_structure_get_int (structure, "channels", &rtpL16enc->channels); - if (!ret) return GST_PAD_LINK_REFUSED; + if (!ret) + return GST_PAD_LINK_REFUSED; /* Pre-calculate what we can */ - rtpL16enc->time_interval = GST_SECOND / (2 * rtpL16enc->channels * rtpL16enc->frequency); + rtpL16enc->time_interval = + GST_SECOND / (2 * rtpL16enc->channels * rtpL16enc->frequency); return GST_PAD_LINK_OK; } void -gst_rtpL16enc_htons (GstBuffer *buf) +gst_rtpL16enc_htons (GstBuffer * buf) { gint16 *i, *len; /* FIXME: is this code correct or even sane at all? */ - i = (gint16 *) GST_BUFFER_DATA(buf); + i = (gint16 *) GST_BUFFER_DATA (buf); len = i + GST_BUFFER_SIZE (buf) / sizeof (gint16 *); - for (; i<len; i++) { - *i = g_htons (*i); + for (; i < len; i++) { + *i = g_htons (*i); } } static void -gst_rtpL16enc_chain (GstPad * pad, GstData *_data) +gst_rtpL16enc_chain (GstPad * pad, GstData * _data) { GstBuffer *buf = GST_BUFFER (_data); GstRtpL16Enc *rtpL16enc; @@ -212,12 +216,12 @@ gst_rtpL16enc_chain (GstPad * pad, GstData *_data) switch (GST_EVENT_TYPE (event)) { case GST_EVENT_DISCONTINUOUS: - GST_DEBUG ("discont"); - rtpL16enc->next_time = 0; - gst_pad_event_default (pad, event); + GST_DEBUG ("discont"); + rtpL16enc->next_time = 0; + gst_pad_event_default (pad, event); return; default: - gst_pad_event_default (pad, event); + gst_pad_event_default (pad, event); return; } } @@ -232,41 +236,47 @@ gst_rtpL16enc_chain (GstPad * pad, GstData *_data) rtp_packet_set_marker (packet, 0); rtp_packet_set_ssrc (packet, g_htonl (rtpL16enc->ssrc)); rtp_packet_set_seq (packet, g_htons (rtpL16enc->seq)); - rtp_packet_set_timestamp (packet, g_htonl ((guint32) rtpL16enc->next_time / GST_SECOND)); + rtp_packet_set_timestamp (packet, + g_htonl ((guint32) rtpL16enc->next_time / GST_SECOND)); if (rtpL16enc->channels == 1) { - rtp_packet_set_payload_type (packet, (guint8) PAYLOAD_L16_MONO); + rtp_packet_set_payload_type (packet, (guint8) PAYLOAD_L16_MONO); } else { - rtp_packet_set_payload_type (packet, (guint8) PAYLOAD_L16_STEREO); + rtp_packet_set_payload_type (packet, (guint8) PAYLOAD_L16_STEREO); } /* FIXME: According to RFC 1890, this is required, right? */ #if G_BYTE_ORDER == G_LITTLE_ENDIAN - gst_rtpL16enc_htons (buf); + gst_rtpL16enc_htons (buf); #endif outbuf = gst_buffer_new (); - GST_BUFFER_SIZE (outbuf) = rtp_packet_get_packet_len (packet) + GST_BUFFER_SIZE (buf); + GST_BUFFER_SIZE (outbuf) = + rtp_packet_get_packet_len (packet) + GST_BUFFER_SIZE (buf); GST_BUFFER_DATA (outbuf) = g_malloc (GST_BUFFER_SIZE (outbuf)); GST_BUFFER_TIMESTAMP (outbuf) = rtpL16enc->next_time; - memcpy (GST_BUFFER_DATA (outbuf), packet->data, rtp_packet_get_packet_len (packet)); - memcpy (GST_BUFFER_DATA (outbuf) + rtp_packet_get_packet_len(packet), GST_BUFFER_DATA (buf), GST_BUFFER_SIZE (buf)); + memcpy (GST_BUFFER_DATA (outbuf), packet->data, + rtp_packet_get_packet_len (packet)); + memcpy (GST_BUFFER_DATA (outbuf) + rtp_packet_get_packet_len (packet), + GST_BUFFER_DATA (buf), GST_BUFFER_SIZE (buf)); - GST_DEBUG ("gst_rtpL16enc_chain: pushing buffer of size %d", GST_BUFFER_SIZE(outbuf)); + GST_DEBUG ("gst_rtpL16enc_chain: pushing buffer of size %d", + GST_BUFFER_SIZE (outbuf)); gst_pad_push (rtpL16enc->srcpad, GST_DATA (outbuf)); ++rtpL16enc->seq; rtpL16enc->next_time += rtpL16enc->time_interval * GST_BUFFER_SIZE (buf); - + rtp_packet_free (packet); gst_buffer_unref (buf); } static void -gst_rtpL16enc_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec) +gst_rtpL16enc_set_property (GObject * object, guint prop_id, + const GValue * value, GParamSpec * pspec) { GstRtpL16Enc *rtpL16enc; @@ -281,7 +291,8 @@ gst_rtpL16enc_set_property (GObject * object, guint prop_id, const GValue * valu } static void -gst_rtpL16enc_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec) +gst_rtpL16enc_get_property (GObject * object, guint prop_id, GValue * value, + GParamSpec * pspec) { GstRtpL16Enc *rtpL16enc; @@ -330,5 +341,5 @@ gboolean gst_rtpL16enc_plugin_init (GstPlugin * plugin) { return gst_element_register (plugin, "rtpL16enc", - GST_RANK_NONE, GST_TYPE_RTP_L16_ENC); + GST_RANK_NONE, GST_TYPE_RTP_L16_ENC); } diff --git a/gst/rtp/gstrtpL16enc.h b/gst/rtp/gstrtpL16enc.h index 15ed92f6..7e902483 100644 --- a/gst/rtp/gstrtpL16enc.h +++ b/gst/rtp/gstrtpL16enc.h @@ -31,32 +31,32 @@ extern "C" #endif /* __cplusplus */ /* Definition of structure storing data for this element. */ -typedef struct _GstRtpL16Enc GstRtpL16Enc; -struct _GstRtpL16Enc -{ - GstElement element; + typedef struct _GstRtpL16Enc GstRtpL16Enc; + struct _GstRtpL16Enc + { + GstElement element; + + GstPad *sinkpad; + GstPad *srcpad; - GstPad *sinkpad; - GstPad *srcpad; + guint frequency; + guint channels; - guint frequency; - guint channels; + /* the timestamp of the next frame */ + guint64 next_time; + /* the interval between frames */ + guint64 time_interval; - /* the timestamp of the next frame */ - guint64 next_time; - /* the interval between frames */ - guint64 time_interval; - - guint32 ssrc; - guint16 seq; -}; + guint32 ssrc; + guint16 seq; + }; /* Standard definition defining a class for this element. */ -typedef struct _GstRtpL16EncClass GstRtpL16EncClass; -struct _GstRtpL16EncClass -{ - GstElementClass parent_class; -}; + typedef struct _GstRtpL16EncClass GstRtpL16EncClass; + struct _GstRtpL16EncClass + { + GstElementClass parent_class; + }; /* Standard macros for defining types for this element. */ #define GST_TYPE_RTP_L16_ENC \ @@ -70,7 +70,7 @@ struct _GstRtpL16EncClass #define GST_IS_RTP_L16_ENC_CLASS(obj) \ (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RTP_L16_ENC)) -gboolean gst_rtpL16enc_plugin_init (GstPlugin * plugin); + gboolean gst_rtpL16enc_plugin_init (GstPlugin * plugin); #ifdef __cplusplus } diff --git a/gst/rtp/gstrtpL16parse.c b/gst/rtp/gstrtpL16parse.c index 51ec258c..07bfb6a0 100644 --- a/gst/rtp/gstrtpL16parse.c +++ b/gst/rtp/gstrtpL16parse.c @@ -42,43 +42,41 @@ enum }; static GstStaticPadTemplate gst_rtpL16parse_src_template = -GST_STATIC_PAD_TEMPLATE ( - "src", +GST_STATIC_PAD_TEMPLATE ("src", GST_PAD_SRC, GST_PAD_ALWAYS, - GST_STATIC_CAPS ( "audio/x-raw-int, " - "endianness = (int) BYTE_ORDER, " - "signed = (boolean) true, " - "width = (int) 16, " - "depth = (int) 16, " - "rate = (int) [ 1000, 48000 ], " - "channels = (int) [ 1, 2 ]" - ) -); + GST_STATIC_CAPS ("audio/x-raw-int, " + "endianness = (int) BYTE_ORDER, " + "signed = (boolean) true, " + "width = (int) 16, " + "depth = (int) 16, " + "rate = (int) [ 1000, 48000 ], " "channels = (int) [ 1, 2 ]") + ); static GstStaticPadTemplate gst_rtpL16parse_sink_template = -GST_STATIC_PAD_TEMPLATE ( - "sink", +GST_STATIC_PAD_TEMPLATE ("sink", GST_PAD_SINK, GST_PAD_ALWAYS, GST_STATIC_CAPS ("application/x-rtp") -); + ); static void gst_rtpL16parse_class_init (GstRtpL16ParseClass * klass); static void gst_rtpL16parse_base_init (GstRtpL16ParseClass * klass); static void gst_rtpL16parse_init (GstRtpL16Parse * rtpL16parse); -static void gst_rtpL16parse_chain (GstPad * pad, GstData *_data); +static void gst_rtpL16parse_chain (GstPad * pad, GstData * _data); static void gst_rtpL16parse_set_property (GObject * object, guint prop_id, - const GValue * value, GParamSpec * pspec); + const GValue * value, GParamSpec * pspec); static void gst_rtpL16parse_get_property (GObject * object, guint prop_id, - GValue * value, GParamSpec * pspec); -static GstElementStateReturn gst_rtpL16parse_change_state (GstElement * element); + GValue * value, GParamSpec * pspec); +static GstElementStateReturn gst_rtpL16parse_change_state (GstElement * + element); static GstElementClass *parent_class = NULL; -static GType gst_rtpL16parse_get_type (void) +static GType +gst_rtpL16parse_get_type (void) { static GType rtpL16parse_type = 0; @@ -95,7 +93,9 @@ static GType gst_rtpL16parse_get_type (void) (GInstanceInitFunc) gst_rtpL16parse_init, }; - rtpL16parse_type = g_type_register_static (GST_TYPE_ELEMENT, "GstRtpL16Parse", &rtpL16parse_info, 0); + rtpL16parse_type = + g_type_register_static (GST_TYPE_ELEMENT, "GstRtpL16Parse", + &rtpL16parse_info, 0); } return rtpL16parse_type; } @@ -123,12 +123,12 @@ gst_rtpL16parse_class_init (GstRtpL16ParseClass * klass) parent_class = g_type_class_ref (GST_TYPE_ELEMENT); - g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_PAYLOAD_TYPE, - g_param_spec_int ("payload_type", "payload_type", "payload type", - G_MININT, G_MAXINT, PAYLOAD_L16_STEREO, G_PARAM_READABLE)); - g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_FREQUENCY, - g_param_spec_int ("frequency", "frequency", "frequency", - G_MININT, G_MAXINT, 44100, G_PARAM_READWRITE)); + g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_PAYLOAD_TYPE, + g_param_spec_int ("payload_type", "payload_type", "payload type", + G_MININT, G_MAXINT, PAYLOAD_L16_STEREO, G_PARAM_READABLE)); + g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_FREQUENCY, + g_param_spec_int ("frequency", "frequency", "frequency", + G_MININT, G_MAXINT, 44100, G_PARAM_READWRITE)); gobject_class->set_property = gst_rtpL16parse_set_property; gobject_class->get_property = gst_rtpL16parse_get_property; @@ -139,10 +139,12 @@ gst_rtpL16parse_class_init (GstRtpL16ParseClass * klass) static void gst_rtpL16parse_init (GstRtpL16Parse * rtpL16parse) { - rtpL16parse->srcpad = gst_pad_new_from_template ( - gst_static_pad_template_get (&gst_rtpL16parse_src_template), "src"); - rtpL16parse->sinkpad = gst_pad_new_from_template ( - gst_static_pad_template_get (&gst_rtpL16parse_sink_template), "sink"); + rtpL16parse->srcpad = + gst_pad_new_from_template (gst_static_pad_template_get + (&gst_rtpL16parse_src_template), "src"); + rtpL16parse->sinkpad = + gst_pad_new_from_template (gst_static_pad_template_get + (&gst_rtpL16parse_sink_template), "sink"); gst_element_add_pad (GST_ELEMENT (rtpL16parse), rtpL16parse->srcpad); gst_element_add_pad (GST_ELEMENT (rtpL16parse), rtpL16parse->sinkpad); gst_pad_set_chain_function (rtpL16parse->sinkpad, gst_rtpL16parse_chain); @@ -154,25 +156,27 @@ gst_rtpL16parse_init (GstRtpL16Parse * rtpL16parse) } void -gst_rtpL16parse_ntohs (GstBuffer *buf) +gst_rtpL16parse_ntohs (GstBuffer * buf) { gint16 *i, *len; /* FIXME: is this code correct or even sane at all? */ - i = (gint16 *) GST_BUFFER_DATA(buf); + i = (gint16 *) GST_BUFFER_DATA (buf); len = i + GST_BUFFER_SIZE (buf) / sizeof (gint16 *); - for (; i<len; i++) { - *i = g_ntohs (*i); + for (; i < len; i++) { + *i = g_ntohs (*i); } } void -gst_rtpL16_caps_nego (GstRtpL16Parse *rtpL16parse) +gst_rtpL16_caps_nego (GstRtpL16Parse * rtpL16parse) { GstCaps *caps; - caps = gst_caps_copy(gst_static_caps_get (&gst_rtpL16parse_src_template.static_caps)); + caps = + gst_caps_copy (gst_static_caps_get (&gst_rtpL16parse_src_template. + static_caps)); gst_caps_set_simple (caps, "rate", G_TYPE_INT, rtpL16parse->frequency, @@ -182,26 +186,27 @@ gst_rtpL16_caps_nego (GstRtpL16Parse *rtpL16parse) } void -gst_rtpL16parse_payloadtype_change (GstRtpL16Parse *rtpL16parse, rtp_payload_t pt) +gst_rtpL16parse_payloadtype_change (GstRtpL16Parse * rtpL16parse, + rtp_payload_t pt) { rtpL16parse->payload_type = pt; - + switch (pt) { - case PAYLOAD_L16_MONO: - rtpL16parse->channels = 1; - break; - case PAYLOAD_L16_STEREO: - rtpL16parse->channels = 2; - break; - default: - g_warning ("unknown payload_t %d\n", pt); + case PAYLOAD_L16_MONO: + rtpL16parse->channels = 1; + break; + case PAYLOAD_L16_STEREO: + rtpL16parse->channels = 2; + break; + default: + g_warning ("unknown payload_t %d\n", pt); } gst_rtpL16_caps_nego (rtpL16parse); } static void -gst_rtpL16parse_chain (GstPad * pad, GstData *_data) +gst_rtpL16parse_chain (GstPad * pad, GstData * _data) { GstBuffer *buf = GST_BUFFER (_data); GstRtpL16Parse *rtpL16parse; @@ -220,8 +225,9 @@ gst_rtpL16parse_chain (GstPad * pad, GstData *_data) if (GST_IS_EVENT (buf)) { GstEvent *event = GST_EVENT (buf); + gst_pad_event_default (pad, event); - + return; } @@ -229,26 +235,30 @@ gst_rtpL16parse_chain (GstPad * pad, GstData *_data) gst_rtpL16_caps_nego (rtpL16parse); } - packet = rtp_packet_new_copy_data (GST_BUFFER_DATA (buf), GST_BUFFER_SIZE (buf)); + packet = + rtp_packet_new_copy_data (GST_BUFFER_DATA (buf), GST_BUFFER_SIZE (buf)); pt = rtp_packet_get_payload_type (packet); if (pt != rtpL16parse->payload_type) { - gst_rtpL16parse_payloadtype_change (rtpL16parse, pt); + gst_rtpL16parse_payloadtype_change (rtpL16parse, pt); } outbuf = gst_buffer_new (); GST_BUFFER_SIZE (outbuf) = rtp_packet_get_payload_len (packet); GST_BUFFER_DATA (outbuf) = g_malloc (GST_BUFFER_SIZE (outbuf)); - GST_BUFFER_TIMESTAMP (outbuf) = g_ntohl (rtp_packet_get_timestamp (packet)) * GST_SECOND; + GST_BUFFER_TIMESTAMP (outbuf) = + g_ntohl (rtp_packet_get_timestamp (packet)) * GST_SECOND; + + memcpy (GST_BUFFER_DATA (outbuf), rtp_packet_get_payload (packet), + GST_BUFFER_SIZE (outbuf)); - memcpy (GST_BUFFER_DATA (outbuf), rtp_packet_get_payload (packet), GST_BUFFER_SIZE (outbuf)); - - GST_DEBUG ("gst_rtpL16parse_chain: pushing buffer of size %d", GST_BUFFER_SIZE(outbuf)); + GST_DEBUG ("gst_rtpL16parse_chain: pushing buffer of size %d", + GST_BUFFER_SIZE (outbuf)); /* FIXME: According to RFC 1890, this is required, right? */ #if G_BYTE_ORDER == G_LITTLE_ENDIAN - gst_rtpL16parse_ntohs (outbuf); + gst_rtpL16parse_ntohs (outbuf); #endif gst_pad_push (rtpL16parse->srcpad, GST_DATA (outbuf)); @@ -258,7 +268,8 @@ gst_rtpL16parse_chain (GstPad * pad, GstData *_data) } static void -gst_rtpL16parse_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec) +gst_rtpL16parse_set_property (GObject * object, guint prop_id, + const GValue * value, GParamSpec * pspec) { GstRtpL16Parse *rtpL16parse; @@ -279,7 +290,8 @@ gst_rtpL16parse_set_property (GObject * object, guint prop_id, const GValue * va } static void -gst_rtpL16parse_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec) +gst_rtpL16parse_get_property (GObject * object, guint prop_id, GValue * value, + GParamSpec * pspec) { GstRtpL16Parse *rtpL16parse; @@ -331,5 +343,5 @@ gboolean gst_rtpL16parse_plugin_init (GstPlugin * plugin) { return gst_element_register (plugin, "rtpL16parse", - GST_RANK_NONE, GST_TYPE_RTP_L16_PARSE); + GST_RANK_NONE, GST_TYPE_RTP_L16_PARSE); } diff --git a/gst/rtp/gstrtpL16parse.h b/gst/rtp/gstrtpL16parse.h index dad467bf..b49cf240 100644 --- a/gst/rtp/gstrtpL16parse.h +++ b/gst/rtp/gstrtpL16parse.h @@ -30,26 +30,26 @@ extern "C" #endif /* __cplusplus */ /* Definition of structure storing data for this element. */ -typedef struct _GstRtpL16Parse GstRtpL16Parse; -struct _GstRtpL16Parse -{ - GstElement element; + typedef struct _GstRtpL16Parse GstRtpL16Parse; + struct _GstRtpL16Parse + { + GstElement element; - GstPad *sinkpad; - GstPad *srcpad; + GstPad *sinkpad; + GstPad *srcpad; - guint frequency; - guint channels; + guint frequency; + guint channels; - rtp_payload_t payload_type; -}; + rtp_payload_t payload_type; + }; /* Standard definition defining a class for this element. */ -typedef struct _GstRtpL16ParseClass GstRtpL16ParseClass; -struct _GstRtpL16ParseClass -{ - GstElementClass parent_class; -}; + typedef struct _GstRtpL16ParseClass GstRtpL16ParseClass; + struct _GstRtpL16ParseClass + { + GstElementClass parent_class; + }; /* Standard macros for defining types for this element. */ #define GST_TYPE_RTP_L16_PARSE \ @@ -63,7 +63,7 @@ struct _GstRtpL16ParseClass #define GST_IS_RTP_L16_PARSE_CLASS(obj) \ (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RTP_L16_PARSE)) -gboolean gst_rtpL16parse_plugin_init (GstPlugin * plugin); + gboolean gst_rtpL16parse_plugin_init (GstPlugin * plugin); #ifdef __cplusplus } diff --git a/gst/rtp/gstrtpL16pay.c b/gst/rtp/gstrtpL16pay.c index 45d6a95a..0914d2fb 100644 --- a/gst/rtp/gstrtpL16pay.c +++ b/gst/rtp/gstrtpL16pay.c @@ -45,42 +45,40 @@ enum }; static GstStaticPadTemplate gst_rtpL16enc_sink_template = -GST_STATIC_PAD_TEMPLATE ( - "sink", +GST_STATIC_PAD_TEMPLATE ("sink", GST_PAD_SINK, GST_PAD_ALWAYS, - GST_STATIC_CAPS ( "audio/x-raw-int, " - "endianness = (int) BYTE_ORDER, " - "signed = (boolean) true, " - "width = (int) 16, " - "depth = (int) 16, " - "rate = (int) [ 1000, 48000 ], " - "channels = (int) [ 1, 2 ]" - ) -); + GST_STATIC_CAPS ("audio/x-raw-int, " + "endianness = (int) BYTE_ORDER, " + "signed = (boolean) true, " + "width = (int) 16, " + "depth = (int) 16, " + "rate = (int) [ 1000, 48000 ], " "channels = (int) [ 1, 2 ]") + ); static GstStaticPadTemplate gst_rtpL16enc_src_template = -GST_STATIC_PAD_TEMPLATE ( - "src", +GST_STATIC_PAD_TEMPLATE ("src", GST_PAD_SRC, GST_PAD_ALWAYS, GST_STATIC_CAPS ("application/x-rtp") -); + ); static void gst_rtpL16enc_class_init (GstRtpL16EncClass * klass); static void gst_rtpL16enc_base_init (GstRtpL16EncClass * klass); static void gst_rtpL16enc_init (GstRtpL16Enc * rtpL16enc); -static void gst_rtpL16enc_chain (GstPad * pad, GstData *_data); +static void gst_rtpL16enc_chain (GstPad * pad, GstData * _data); static void gst_rtpL16enc_set_property (GObject * object, guint prop_id, - const GValue * value, GParamSpec * pspec); + const GValue * value, GParamSpec * pspec); static void gst_rtpL16enc_get_property (GObject * object, guint prop_id, - GValue * value, GParamSpec * pspec); -static GstPadLinkReturn gst_rtpL16enc_sinkconnect (GstPad * pad, const GstCaps * caps); + GValue * value, GParamSpec * pspec); +static GstPadLinkReturn gst_rtpL16enc_sinkconnect (GstPad * pad, + const GstCaps * caps); static GstElementStateReturn gst_rtpL16enc_change_state (GstElement * element); static GstElementClass *parent_class = NULL; -static GType gst_rtpL16enc_get_type (void) +static GType +gst_rtpL16enc_get_type (void) { static GType rtpL16enc_type = 0; @@ -97,7 +95,9 @@ static GType gst_rtpL16enc_get_type (void) (GInstanceInitFunc) gst_rtpL16enc_init, }; - rtpL16enc_type = g_type_register_static (GST_TYPE_ELEMENT, "GstRtpL16Enc", &rtpL16enc_info, 0); + rtpL16enc_type = + g_type_register_static (GST_TYPE_ELEMENT, "GstRtpL16Enc", + &rtpL16enc_info, 0); } return rtpL16enc_type; } @@ -134,10 +134,12 @@ gst_rtpL16enc_class_init (GstRtpL16EncClass * klass) static void gst_rtpL16enc_init (GstRtpL16Enc * rtpL16enc) { - rtpL16enc->sinkpad = gst_pad_new_from_template ( - gst_static_pad_template_get (&gst_rtpL16enc_sink_template), "sink"); - rtpL16enc->srcpad = gst_pad_new_from_template ( - gst_static_pad_template_get (&gst_rtpL16enc_src_template), "src"); + rtpL16enc->sinkpad = + gst_pad_new_from_template (gst_static_pad_template_get + (&gst_rtpL16enc_sink_template), "sink"); + rtpL16enc->srcpad = + gst_pad_new_from_template (gst_static_pad_template_get + (&gst_rtpL16enc_src_template), "src"); gst_element_add_pad (GST_ELEMENT (rtpL16enc), rtpL16enc->sinkpad); gst_element_add_pad (GST_ELEMENT (rtpL16enc), rtpL16enc->srcpad); gst_pad_set_chain_function (rtpL16enc->sinkpad, gst_rtpL16enc_chain); @@ -146,7 +148,7 @@ gst_rtpL16enc_init (GstRtpL16Enc * rtpL16enc) rtpL16enc->frequency = 44100; rtpL16enc->channels = 2; - rtpL16enc->next_time = 0; + rtpL16enc->next_time = 0; rtpL16enc->time_interval = 0; rtpL16enc->seq = 0; @@ -167,31 +169,33 @@ gst_rtpL16enc_sinkconnect (GstPad * pad, const GstCaps * caps) ret = gst_structure_get_int (structure, "rate", &rtpL16enc->frequency); ret &= gst_structure_get_int (structure, "channels", &rtpL16enc->channels); - if (!ret) return GST_PAD_LINK_REFUSED; + if (!ret) + return GST_PAD_LINK_REFUSED; /* Pre-calculate what we can */ - rtpL16enc->time_interval = GST_SECOND / (2 * rtpL16enc->channels * rtpL16enc->frequency); + rtpL16enc->time_interval = + GST_SECOND / (2 * rtpL16enc->channels * rtpL16enc->frequency); return GST_PAD_LINK_OK; } void -gst_rtpL16enc_htons (GstBuffer *buf) +gst_rtpL16enc_htons (GstBuffer * buf) { gint16 *i, *len; /* FIXME: is this code correct or even sane at all? */ - i = (gint16 *) GST_BUFFER_DATA(buf); + i = (gint16 *) GST_BUFFER_DATA (buf); len = i + GST_BUFFER_SIZE (buf) / sizeof (gint16 *); - for (; i<len; i++) { - *i = g_htons (*i); + for (; i < len; i++) { + *i = g_htons (*i); } } static void -gst_rtpL16enc_chain (GstPad * pad, GstData *_data) +gst_rtpL16enc_chain (GstPad * pad, GstData * _data) { GstBuffer *buf = GST_BUFFER (_data); GstRtpL16Enc *rtpL16enc; @@ -212,12 +216,12 @@ gst_rtpL16enc_chain (GstPad * pad, GstData *_data) switch (GST_EVENT_TYPE (event)) { case GST_EVENT_DISCONTINUOUS: - GST_DEBUG ("discont"); - rtpL16enc->next_time = 0; - gst_pad_event_default (pad, event); + GST_DEBUG ("discont"); + rtpL16enc->next_time = 0; + gst_pad_event_default (pad, event); return; default: - gst_pad_event_default (pad, event); + gst_pad_event_default (pad, event); return; } } @@ -232,41 +236,47 @@ gst_rtpL16enc_chain (GstPad * pad, GstData *_data) rtp_packet_set_marker (packet, 0); rtp_packet_set_ssrc (packet, g_htonl (rtpL16enc->ssrc)); rtp_packet_set_seq (packet, g_htons (rtpL16enc->seq)); - rtp_packet_set_timestamp (packet, g_htonl ((guint32) rtpL16enc->next_time / GST_SECOND)); + rtp_packet_set_timestamp (packet, + g_htonl ((guint32) rtpL16enc->next_time / GST_SECOND)); if (rtpL16enc->channels == 1) { - rtp_packet_set_payload_type (packet, (guint8) PAYLOAD_L16_MONO); + rtp_packet_set_payload_type (packet, (guint8) PAYLOAD_L16_MONO); } else { - rtp_packet_set_payload_type (packet, (guint8) PAYLOAD_L16_STEREO); + rtp_packet_set_payload_type (packet, (guint8) PAYLOAD_L16_STEREO); } /* FIXME: According to RFC 1890, this is required, right? */ #if G_BYTE_ORDER == G_LITTLE_ENDIAN - gst_rtpL16enc_htons (buf); + gst_rtpL16enc_htons (buf); #endif outbuf = gst_buffer_new (); - GST_BUFFER_SIZE (outbuf) = rtp_packet_get_packet_len (packet) + GST_BUFFER_SIZE (buf); + GST_BUFFER_SIZE (outbuf) = + rtp_packet_get_packet_len (packet) + GST_BUFFER_SIZE (buf); GST_BUFFER_DATA (outbuf) = g_malloc (GST_BUFFER_SIZE (outbuf)); GST_BUFFER_TIMESTAMP (outbuf) = rtpL16enc->next_time; - memcpy (GST_BUFFER_DATA (outbuf), packet->data, rtp_packet_get_packet_len (packet)); - memcpy (GST_BUFFER_DATA (outbuf) + rtp_packet_get_packet_len(packet), GST_BUFFER_DATA (buf), GST_BUFFER_SIZE (buf)); + memcpy (GST_BUFFER_DATA (outbuf), packet->data, + rtp_packet_get_packet_len (packet)); + memcpy (GST_BUFFER_DATA (outbuf) + rtp_packet_get_packet_len (packet), + GST_BUFFER_DATA (buf), GST_BUFFER_SIZE (buf)); - GST_DEBUG ("gst_rtpL16enc_chain: pushing buffer of size %d", GST_BUFFER_SIZE(outbuf)); + GST_DEBUG ("gst_rtpL16enc_chain: pushing buffer of size %d", + GST_BUFFER_SIZE (outbuf)); gst_pad_push (rtpL16enc->srcpad, GST_DATA (outbuf)); ++rtpL16enc->seq; rtpL16enc->next_time += rtpL16enc->time_interval * GST_BUFFER_SIZE (buf); - + rtp_packet_free (packet); gst_buffer_unref (buf); } static void -gst_rtpL16enc_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec) +gst_rtpL16enc_set_property (GObject * object, guint prop_id, + const GValue * value, GParamSpec * pspec) { GstRtpL16Enc *rtpL16enc; @@ -281,7 +291,8 @@ gst_rtpL16enc_set_property (GObject * object, guint prop_id, const GValue * valu } static void -gst_rtpL16enc_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec) +gst_rtpL16enc_get_property (GObject * object, guint prop_id, GValue * value, + GParamSpec * pspec) { GstRtpL16Enc *rtpL16enc; @@ -330,5 +341,5 @@ gboolean gst_rtpL16enc_plugin_init (GstPlugin * plugin) { return gst_element_register (plugin, "rtpL16enc", - GST_RANK_NONE, GST_TYPE_RTP_L16_ENC); + GST_RANK_NONE, GST_TYPE_RTP_L16_ENC); } diff --git a/gst/rtp/gstrtpL16pay.h b/gst/rtp/gstrtpL16pay.h index 15ed92f6..7e902483 100644 --- a/gst/rtp/gstrtpL16pay.h +++ b/gst/rtp/gstrtpL16pay.h @@ -31,32 +31,32 @@ extern "C" #endif /* __cplusplus */ /* Definition of structure storing data for this element. */ -typedef struct _GstRtpL16Enc GstRtpL16Enc; -struct _GstRtpL16Enc -{ - GstElement element; + typedef struct _GstRtpL16Enc GstRtpL16Enc; + struct _GstRtpL16Enc + { + GstElement element; + + GstPad *sinkpad; + GstPad *srcpad; - GstPad *sinkpad; - GstPad *srcpad; + guint frequency; + guint channels; - guint frequency; - guint channels; + /* the timestamp of the next frame */ + guint64 next_time; + /* the interval between frames */ + guint64 time_interval; - /* the timestamp of the next frame */ - guint64 next_time; - /* the interval between frames */ - guint64 time_interval; - - guint32 ssrc; - guint16 seq; -}; + guint32 ssrc; + guint16 seq; + }; /* Standard definition defining a class for this element. */ -typedef struct _GstRtpL16EncClass GstRtpL16EncClass; -struct _GstRtpL16EncClass -{ - GstElementClass parent_class; -}; + typedef struct _GstRtpL16EncClass GstRtpL16EncClass; + struct _GstRtpL16EncClass + { + GstElementClass parent_class; + }; /* Standard macros for defining types for this element. */ #define GST_TYPE_RTP_L16_ENC \ @@ -70,7 +70,7 @@ struct _GstRtpL16EncClass #define GST_IS_RTP_L16_ENC_CLASS(obj) \ (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RTP_L16_ENC)) -gboolean gst_rtpL16enc_plugin_init (GstPlugin * plugin); + gboolean gst_rtpL16enc_plugin_init (GstPlugin * plugin); #ifdef __cplusplus } diff --git a/gst/rtp/gstrtpgsmdepay.c b/gst/rtp/gstrtpgsmdepay.c index 8f1b301a..55b96945 100644 --- a/gst/rtp/gstrtpgsmdepay.c +++ b/gst/rtp/gstrtpgsmdepay.c @@ -42,39 +42,37 @@ enum }; static GstStaticPadTemplate gst_rtpgsmparse_src_template = -GST_STATIC_PAD_TEMPLATE ( - "src", +GST_STATIC_PAD_TEMPLATE ("src", GST_PAD_SRC, - GST_PAD_ALWAYS, - GST_STATIC_CAPS ( "audio/x-gsm, " - "rate = (int) [ 1000, 48000 ]" - ) -); + GST_PAD_ALWAYS, + GST_STATIC_CAPS ("audio/x-gsm, " "rate = (int) [ 1000, 48000 ]") + ); static GstStaticPadTemplate gst_rtpgsmparse_sink_template = -GST_STATIC_PAD_TEMPLATE ( - "sink", +GST_STATIC_PAD_TEMPLATE ("sink", GST_PAD_SINK, - GST_PAD_ALWAYS, + GST_PAD_ALWAYS, GST_STATIC_CAPS ("application/x-rtp") -); + ); static void gst_rtpgsmparse_class_init (GstRtpGSMParseClass * klass); static void gst_rtpgsmparse_base_init (GstRtpGSMParseClass * klass); static void gst_rtpgsmparse_init (GstRtpGSMParse * rtpgsmparse); -static void gst_rtpgsmparse_chain (GstPad * pad, GstData *_data); +static void gst_rtpgsmparse_chain (GstPad * pad, GstData * _data); static void gst_rtpgsmparse_set_property (GObject * object, guint prop_id, - const GValue * value, GParamSpec * pspec); + const GValue * value, GParamSpec * pspec); static void gst_rtpgsmparse_get_property (GObject * object, guint prop_id, - GValue * value, GParamSpec * pspec); -static GstElementStateReturn gst_rtpgsmparse_change_state (GstElement * element); + GValue * value, GParamSpec * pspec); +static GstElementStateReturn gst_rtpgsmparse_change_state (GstElement * + element); static GstElementClass *parent_class = NULL; -static GType gst_rtpgsmparse_get_type (void) +static GType +gst_rtpgsmparse_get_type (void) { static GType rtpgsmparse_type = 0; @@ -91,7 +89,9 @@ static GType gst_rtpgsmparse_get_type (void) (GInstanceInitFunc) gst_rtpgsmparse_init, }; - rtpgsmparse_type = g_type_register_static (GST_TYPE_ELEMENT, "GstRtpGSMParse", &rtpgsmparse_info, 0); + rtpgsmparse_type = + g_type_register_static (GST_TYPE_ELEMENT, "GstRtpGSMParse", + &rtpgsmparse_info, 0); } return rtpgsmparse_type; } @@ -102,9 +102,9 @@ gst_rtpgsmparse_base_init (GstRtpGSMParseClass * klass) GstElementClass *element_class = GST_ELEMENT_CLASS (klass); gst_element_class_add_pad_template (element_class, - gst_static_pad_template_get(&gst_rtpgsmparse_src_template)); + gst_static_pad_template_get (&gst_rtpgsmparse_src_template)); gst_element_class_add_pad_template (element_class, - gst_static_pad_template_get(&gst_rtpgsmparse_sink_template)); + gst_static_pad_template_get (&gst_rtpgsmparse_sink_template)); gst_element_class_set_details (element_class, &gst_rtp_gsmparse_details); } @@ -119,9 +119,9 @@ gst_rtpgsmparse_class_init (GstRtpGSMParseClass * klass) parent_class = g_type_class_ref (GST_TYPE_ELEMENT); - g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_FREQUENCY, - g_param_spec_int ("frequency", "frequency", "frequency", - G_MININT, G_MAXINT, 8000, G_PARAM_READWRITE)); + g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_FREQUENCY, + g_param_spec_int ("frequency", "frequency", "frequency", + G_MININT, G_MAXINT, 8000, G_PARAM_READWRITE)); gobject_class->set_property = gst_rtpgsmparse_set_property; gobject_class->get_property = gst_rtpgsmparse_get_property; @@ -132,10 +132,12 @@ gst_rtpgsmparse_class_init (GstRtpGSMParseClass * klass) static void gst_rtpgsmparse_init (GstRtpGSMParse * rtpgsmparse) { - rtpgsmparse->srcpad = gst_pad_new_from_template ( - gst_static_pad_template_get(&gst_rtpgsmparse_src_template), "src"); - rtpgsmparse->sinkpad = gst_pad_new_from_template ( - gst_static_pad_template_get(&gst_rtpgsmparse_sink_template), "sink"); + rtpgsmparse->srcpad = + gst_pad_new_from_template (gst_static_pad_template_get + (&gst_rtpgsmparse_src_template), "src"); + rtpgsmparse->sinkpad = + gst_pad_new_from_template (gst_static_pad_template_get + (&gst_rtpgsmparse_sink_template), "sink"); gst_element_add_pad (GST_ELEMENT (rtpgsmparse), rtpgsmparse->srcpad); gst_element_add_pad (GST_ELEMENT (rtpgsmparse), rtpgsmparse->sinkpad); gst_pad_set_chain_function (rtpgsmparse->sinkpad, gst_rtpgsmparse_chain); @@ -144,32 +146,32 @@ gst_rtpgsmparse_init (GstRtpGSMParse * rtpgsmparse) } void -gst_rtpgsmparse_ntohs (GstBuffer *buf) +gst_rtpgsmparse_ntohs (GstBuffer * buf) { gint16 *i, *len; /* FIXME: is this code correct or even sane at all? */ - i = (gint16 *) GST_BUFFER_DATA(buf); + i = (gint16 *) GST_BUFFER_DATA (buf); len = i + GST_BUFFER_SIZE (buf) / sizeof (gint16 *); - for (; i<len; i++) { - *i = g_ntohs (*i); + for (; i < len; i++) { + *i = g_ntohs (*i); } } void -gst_rtpgsm_caps_nego (GstRtpGSMParse *rtpgsmparse) +gst_rtpgsm_caps_nego (GstRtpGSMParse * rtpgsmparse) { GstCaps *caps; caps = gst_caps_new_simple ("audio/x-gsm", - "rate", G_TYPE_INT, rtpgsmparse->frequency); + "rate", G_TYPE_INT, rtpgsmparse->frequency); gst_pad_try_set_caps (rtpgsmparse->srcpad, caps); } static void -gst_rtpgsmparse_chain (GstPad * pad, GstData *_data) +gst_rtpgsmparse_chain (GstPad * pad, GstData * _data) { GstBuffer *buf = GST_BUFFER (_data); GstRtpGSMParse *rtpgsmparse; @@ -188,8 +190,9 @@ gst_rtpgsmparse_chain (GstPad * pad, GstData *_data) if (GST_IS_EVENT (buf)) { GstEvent *event = GST_EVENT (buf); + gst_pad_event_default (pad, event); - + return; } @@ -197,7 +200,8 @@ gst_rtpgsmparse_chain (GstPad * pad, GstData *_data) gst_rtpgsm_caps_nego (rtpgsmparse); } - packet = rtp_packet_new_copy_data (GST_BUFFER_DATA (buf), GST_BUFFER_SIZE (buf)); + packet = + rtp_packet_new_copy_data (GST_BUFFER_DATA (buf), GST_BUFFER_SIZE (buf)); pt = rtp_packet_get_payload_type (packet); @@ -211,15 +215,18 @@ gst_rtpgsmparse_chain (GstPad * pad, GstData *_data) outbuf = gst_buffer_new (); GST_BUFFER_SIZE (outbuf) = rtp_packet_get_payload_len (packet); GST_BUFFER_DATA (outbuf) = g_malloc (GST_BUFFER_SIZE (outbuf)); - GST_BUFFER_TIMESTAMP (outbuf) = g_ntohl (rtp_packet_get_timestamp (packet)) * GST_SECOND; + GST_BUFFER_TIMESTAMP (outbuf) = + g_ntohl (rtp_packet_get_timestamp (packet)) * GST_SECOND; + + memcpy (GST_BUFFER_DATA (outbuf), rtp_packet_get_payload (packet), + GST_BUFFER_SIZE (outbuf)); - memcpy (GST_BUFFER_DATA (outbuf), rtp_packet_get_payload (packet), GST_BUFFER_SIZE (outbuf)); - - GST_DEBUG ("gst_rtpgsmparse_chain: pushing buffer of size %d", GST_BUFFER_SIZE(outbuf)); + GST_DEBUG ("gst_rtpgsmparse_chain: pushing buffer of size %d", + GST_BUFFER_SIZE (outbuf)); /* FIXME: According to RFC 1890, this is required, right? */ #if G_BYTE_ORDER == G_LITTLE_ENDIAN - gst_rtpgsmparse_ntohs (outbuf); + gst_rtpgsmparse_ntohs (outbuf); #endif gst_pad_push (rtpgsmparse->srcpad, GST_DATA (outbuf)); @@ -229,7 +236,8 @@ gst_rtpgsmparse_chain (GstPad * pad, GstData *_data) } static void -gst_rtpgsmparse_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec) +gst_rtpgsmparse_set_property (GObject * object, guint prop_id, + const GValue * value, GParamSpec * pspec) { GstRtpGSMParse *rtpgsmparse; @@ -247,7 +255,8 @@ gst_rtpgsmparse_set_property (GObject * object, guint prop_id, const GValue * va } static void -gst_rtpgsmparse_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec) +gst_rtpgsmparse_get_property (GObject * object, guint prop_id, GValue * value, + GParamSpec * pspec) { GstRtpGSMParse *rtpgsmparse; @@ -296,5 +305,5 @@ gboolean gst_rtpgsmparse_plugin_init (GstPlugin * plugin) { return gst_element_register (plugin, "rtpgsmparse", - GST_RANK_NONE, GST_TYPE_RTP_GSM_PARSE); + GST_RANK_NONE, GST_TYPE_RTP_GSM_PARSE); } diff --git a/gst/rtp/gstrtpgsmdepay.h b/gst/rtp/gstrtpgsmdepay.h index 0a006e70..f3b0e659 100644 --- a/gst/rtp/gstrtpgsmdepay.h +++ b/gst/rtp/gstrtpgsmdepay.h @@ -30,23 +30,23 @@ extern "C" #endif /* __cplusplus */ /* Definition of structure storing data for this element. */ -typedef struct _GstRtpGSMParse GstRtpGSMParse; -struct _GstRtpGSMParse -{ - GstElement element; + typedef struct _GstRtpGSMParse GstRtpGSMParse; + struct _GstRtpGSMParse + { + GstElement element; - GstPad *sinkpad; - GstPad *srcpad; + GstPad *sinkpad; + GstPad *srcpad; - guint frequency; -}; + guint frequency; + }; /* Standard definition defining a class for this element. */ -typedef struct _GstRtpGSMParseClass GstRtpGSMParseClass; -struct _GstRtpGSMParseClass -{ - GstElementClass parent_class; -}; + typedef struct _GstRtpGSMParseClass GstRtpGSMParseClass; + struct _GstRtpGSMParseClass + { + GstElementClass parent_class; + }; /* Standard macros for defining types for this element. */ #define GST_TYPE_RTP_GSM_PARSE \ @@ -60,7 +60,7 @@ struct _GstRtpGSMParseClass #define GST_IS_RTP_GSM_PARSE_CLASS(obj) \ (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RTP_GSM_PARSE)) -gboolean gst_rtpgsmparse_plugin_init (GstPlugin * plugin); + gboolean gst_rtpgsmparse_plugin_init (GstPlugin * plugin); #ifdef __cplusplus } diff --git a/gst/rtp/gstrtpgsmenc.c b/gst/rtp/gstrtpgsmenc.c index 495e4367..6301dd8c 100644 --- a/gst/rtp/gstrtpgsmenc.c +++ b/gst/rtp/gstrtpgsmenc.c @@ -46,38 +46,36 @@ enum }; static GstStaticPadTemplate gst_rtpgsmenc_sink_template = -GST_STATIC_PAD_TEMPLATE ( - "sink", +GST_STATIC_PAD_TEMPLATE ("sink", GST_PAD_SINK, GST_PAD_ALWAYS, - GST_STATIC_CAPS ( "audio/x-gsm, " - "rate = (int) [ 1000, 48000 ]" - ) -); + GST_STATIC_CAPS ("audio/x-gsm, " "rate = (int) [ 1000, 48000 ]") + ); static GstStaticPadTemplate gst_rtpgsmenc_src_template = -GST_STATIC_PAD_TEMPLATE ( - "src", +GST_STATIC_PAD_TEMPLATE ("src", GST_PAD_SRC, GST_PAD_ALWAYS, GST_STATIC_CAPS ("application/x-rtp") -); + ); static void gst_rtpgsmenc_class_init (GstRtpGSMEncClass * klass); static void gst_rtpgsmenc_base_init (GstRtpGSMEncClass * klass); static void gst_rtpgsmenc_init (GstRtpGSMEnc * rtpgsmenc); -static void gst_rtpgsmenc_chain (GstPad * pad, GstData *_data); +static void gst_rtpgsmenc_chain (GstPad * pad, GstData * _data); static void gst_rtpgsmenc_set_property (GObject * object, guint prop_id, - const GValue * value, GParamSpec * pspec); + const GValue * value, GParamSpec * pspec); static void gst_rtpgsmenc_get_property (GObject * object, guint prop_id, - GValue * value, GParamSpec * pspec); -static GstPadLinkReturn gst_rtpgsmenc_sinkconnect (GstPad * pad, const GstCaps * caps); + GValue * value, GParamSpec * pspec); +static GstPadLinkReturn gst_rtpgsmenc_sinkconnect (GstPad * pad, + const GstCaps * caps); static GstElementStateReturn gst_rtpgsmenc_change_state (GstElement * element); static GstElementClass *parent_class = NULL; -static GType gst_rtpgsmenc_get_type (void) +static GType +gst_rtpgsmenc_get_type (void) { static GType rtpgsmenc_type = 0; @@ -94,7 +92,9 @@ static GType gst_rtpgsmenc_get_type (void) (GInstanceInitFunc) gst_rtpgsmenc_init, }; - rtpgsmenc_type = g_type_register_static (GST_TYPE_ELEMENT, "GstRtpGSMEnc", &rtpgsmenc_info, 0); + rtpgsmenc_type = + g_type_register_static (GST_TYPE_ELEMENT, "GstRtpGSMEnc", + &rtpgsmenc_info, 0); } return rtpgsmenc_type; } @@ -131,10 +131,12 @@ gst_rtpgsmenc_class_init (GstRtpGSMEncClass * klass) static void gst_rtpgsmenc_init (GstRtpGSMEnc * rtpgsmenc) { - rtpgsmenc->sinkpad = gst_pad_new_from_template ( - gst_static_pad_template_get (&gst_rtpgsmenc_sink_template), "sink"); - rtpgsmenc->srcpad = gst_pad_new_from_template ( - gst_static_pad_template_get (&gst_rtpgsmenc_sink_template), "src"); + rtpgsmenc->sinkpad = + gst_pad_new_from_template (gst_static_pad_template_get + (&gst_rtpgsmenc_sink_template), "sink"); + rtpgsmenc->srcpad = + gst_pad_new_from_template (gst_static_pad_template_get + (&gst_rtpgsmenc_sink_template), "src"); gst_element_add_pad (GST_ELEMENT (rtpgsmenc), rtpgsmenc->sinkpad); gst_element_add_pad (GST_ELEMENT (rtpgsmenc), rtpgsmenc->srcpad); gst_pad_set_chain_function (rtpgsmenc->sinkpad, gst_rtpgsmenc_chain); @@ -142,7 +144,7 @@ gst_rtpgsmenc_init (GstRtpGSMEnc * rtpgsmenc) rtpgsmenc->frequency = 8000; - rtpgsmenc->next_time = 0; + rtpgsmenc->next_time = 0; rtpgsmenc->time_interval = 0; rtpgsmenc->seq = 0; @@ -161,7 +163,8 @@ gst_rtpgsmenc_sinkconnect (GstPad * pad, const GstCaps * caps) structure = gst_caps_get_structure (caps, 0); ret = gst_structure_get_int (structure, "rate", &rtpgsmenc->frequency); - if (!ret) return GST_PAD_LINK_REFUSED; + if (!ret) + return GST_PAD_LINK_REFUSED; /* Pre-calculate what we can */ rtpgsmenc->time_interval = GST_SECOND / (2 * rtpgsmenc->frequency); @@ -171,21 +174,21 @@ gst_rtpgsmenc_sinkconnect (GstPad * pad, const GstCaps * caps) void -gst_rtpgsmenc_htons (GstBuffer *buf) +gst_rtpgsmenc_htons (GstBuffer * buf) { gint16 *i, *len; /* FIXME: is this code correct or even sane at all? */ - i = (gint16 *) GST_BUFFER_DATA(buf); + i = (gint16 *) GST_BUFFER_DATA (buf); len = i + GST_BUFFER_SIZE (buf) / sizeof (gint16 *); - for (; i<len; i++) { - *i = g_htons (*i); + for (; i < len; i++) { + *i = g_htons (*i); } } static void -gst_rtpgsmenc_chain (GstPad * pad, GstData *_data) +gst_rtpgsmenc_chain (GstPad * pad, GstData * _data) { GstBuffer *buf = GST_BUFFER (_data); GstRtpGSMEnc *rtpgsmenc; @@ -206,12 +209,12 @@ gst_rtpgsmenc_chain (GstPad * pad, GstData *_data) switch (GST_EVENT_TYPE (event)) { case GST_EVENT_DISCONTINUOUS: - GST_DEBUG ("discont"); - rtpgsmenc->next_time = 0; - gst_pad_event_default (pad, event); + GST_DEBUG ("discont"); + rtpgsmenc->next_time = 0; + gst_pad_event_default (pad, event); return; default: - gst_pad_event_default (pad, event); + gst_pad_event_default (pad, event); return; } } @@ -226,7 +229,8 @@ gst_rtpgsmenc_chain (GstPad * pad, GstData *_data) rtp_packet_set_marker (packet, 0); rtp_packet_set_ssrc (packet, g_htonl (rtpgsmenc->ssrc)); rtp_packet_set_seq (packet, g_htons (rtpgsmenc->seq)); - rtp_packet_set_timestamp (packet, g_htonl ((guint32) rtpgsmenc->next_time / GST_SECOND)); + rtp_packet_set_timestamp (packet, + g_htonl ((guint32) rtpgsmenc->next_time / GST_SECOND)); rtp_packet_set_payload_type (packet, (guint8) PAYLOAD_GSM); /* FIXME: According to RFC 1890, this is required, right? */ @@ -235,25 +239,30 @@ gst_rtpgsmenc_chain (GstPad * pad, GstData *_data) #endif outbuf = gst_buffer_new (); - GST_BUFFER_SIZE (outbuf) = rtp_packet_get_packet_len (packet) + GST_BUFFER_SIZE (buf); + GST_BUFFER_SIZE (outbuf) = + rtp_packet_get_packet_len (packet) + GST_BUFFER_SIZE (buf); GST_BUFFER_DATA (outbuf) = g_malloc (GST_BUFFER_SIZE (outbuf)); GST_BUFFER_TIMESTAMP (outbuf) = rtpgsmenc->next_time; - memcpy (GST_BUFFER_DATA (outbuf), packet->data, rtp_packet_get_packet_len (packet)); - memcpy (GST_BUFFER_DATA (outbuf) + rtp_packet_get_packet_len(packet), GST_BUFFER_DATA (buf), GST_BUFFER_SIZE (buf)); + memcpy (GST_BUFFER_DATA (outbuf), packet->data, + rtp_packet_get_packet_len (packet)); + memcpy (GST_BUFFER_DATA (outbuf) + rtp_packet_get_packet_len (packet), + GST_BUFFER_DATA (buf), GST_BUFFER_SIZE (buf)); - GST_DEBUG ("gst_rtpgsmenc_chain: pushing buffer of size %d", GST_BUFFER_SIZE(outbuf)); + GST_DEBUG ("gst_rtpgsmenc_chain: pushing buffer of size %d", + GST_BUFFER_SIZE (outbuf)); gst_pad_push (rtpgsmenc->srcpad, GST_DATA (outbuf)); ++rtpgsmenc->seq; rtpgsmenc->next_time += rtpgsmenc->time_interval * GST_BUFFER_SIZE (buf); - + rtp_packet_free (packet); gst_buffer_unref (buf); } static void -gst_rtpgsmenc_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec) +gst_rtpgsmenc_set_property (GObject * object, guint prop_id, + const GValue * value, GParamSpec * pspec) { GstRtpGSMEnc *rtpgsmenc; @@ -268,7 +277,8 @@ gst_rtpgsmenc_set_property (GObject * object, guint prop_id, const GValue * valu } static void -gst_rtpgsmenc_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec) +gst_rtpgsmenc_get_property (GObject * object, guint prop_id, GValue * value, + GParamSpec * pspec) { GstRtpGSMEnc *rtpgsmenc; @@ -317,5 +327,5 @@ gboolean gst_rtpgsmenc_plugin_init (GstPlugin * plugin) { return gst_element_register (plugin, "rtpgsmenc", - GST_RANK_NONE, GST_TYPE_RTP_GSM_ENC); + GST_RANK_NONE, GST_TYPE_RTP_GSM_ENC); } diff --git a/gst/rtp/gstrtpgsmenc.h b/gst/rtp/gstrtpgsmenc.h index 1220d402..e44e5dae 100644 --- a/gst/rtp/gstrtpgsmenc.h +++ b/gst/rtp/gstrtpgsmenc.h @@ -31,31 +31,31 @@ extern "C" #endif /* __cplusplus */ /* Definition of structure storing data for this element. */ -typedef struct _GstRtpGSMEnc GstRtpGSMEnc; -struct _GstRtpGSMEnc -{ - GstElement element; + typedef struct _GstRtpGSMEnc GstRtpGSMEnc; + struct _GstRtpGSMEnc + { + GstElement element; + + GstPad *sinkpad; + GstPad *srcpad; - GstPad *sinkpad; - GstPad *srcpad; + guint frequency; - guint frequency; + /* the timestamp of the next frame */ + guint64 next_time; + /* the interval between frames */ + guint64 time_interval; - /* the timestamp of the next frame */ - guint64 next_time; - /* the interval between frames */ - guint64 time_interval; - - guint32 ssrc; - guint16 seq; -}; + guint32 ssrc; + guint16 seq; + }; /* Standard definition defining a class for this element. */ -typedef struct _GstRtpGSMEncClass GstRtpGSMEncClass; -struct _GstRtpGSMEncClass -{ - GstElementClass parent_class; -}; + typedef struct _GstRtpGSMEncClass GstRtpGSMEncClass; + struct _GstRtpGSMEncClass + { + GstElementClass parent_class; + }; /* Standard macros for defining types for this element. */ #define GST_TYPE_RTP_GSM_ENC \ @@ -69,7 +69,7 @@ struct _GstRtpGSMEncClass #define GST_IS_RTP_GSM_ENC_CLASS(obj) \ (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RTP_GSM_ENC)) -gboolean gst_rtpgsmenc_plugin_init (GstPlugin * plugin); + gboolean gst_rtpgsmenc_plugin_init (GstPlugin * plugin); #ifdef __cplusplus } diff --git a/gst/rtp/gstrtpgsmparse.c b/gst/rtp/gstrtpgsmparse.c index 8f1b301a..55b96945 100644 --- a/gst/rtp/gstrtpgsmparse.c +++ b/gst/rtp/gstrtpgsmparse.c @@ -42,39 +42,37 @@ enum }; static GstStaticPadTemplate gst_rtpgsmparse_src_template = -GST_STATIC_PAD_TEMPLATE ( - "src", +GST_STATIC_PAD_TEMPLATE ("src", GST_PAD_SRC, - GST_PAD_ALWAYS, - GST_STATIC_CAPS ( "audio/x-gsm, " - "rate = (int) [ 1000, 48000 ]" - ) -); + GST_PAD_ALWAYS, + GST_STATIC_CAPS ("audio/x-gsm, " "rate = (int) [ 1000, 48000 ]") + ); static GstStaticPadTemplate gst_rtpgsmparse_sink_template = -GST_STATIC_PAD_TEMPLATE ( - "sink", +GST_STATIC_PAD_TEMPLATE ("sink", GST_PAD_SINK, - GST_PAD_ALWAYS, + GST_PAD_ALWAYS, GST_STATIC_CAPS ("application/x-rtp") -); + ); static void gst_rtpgsmparse_class_init (GstRtpGSMParseClass * klass); static void gst_rtpgsmparse_base_init (GstRtpGSMParseClass * klass); static void gst_rtpgsmparse_init (GstRtpGSMParse * rtpgsmparse); -static void gst_rtpgsmparse_chain (GstPad * pad, GstData *_data); +static void gst_rtpgsmparse_chain (GstPad * pad, GstData * _data); static void gst_rtpgsmparse_set_property (GObject * object, guint prop_id, - const GValue * value, GParamSpec * pspec); + const GValue * value, GParamSpec * pspec); static void gst_rtpgsmparse_get_property (GObject * object, guint prop_id, - GValue * value, GParamSpec * pspec); -static GstElementStateReturn gst_rtpgsmparse_change_state (GstElement * element); + GValue * value, GParamSpec * pspec); +static GstElementStateReturn gst_rtpgsmparse_change_state (GstElement * + element); static GstElementClass *parent_class = NULL; -static GType gst_rtpgsmparse_get_type (void) +static GType +gst_rtpgsmparse_get_type (void) { static GType rtpgsmparse_type = 0; @@ -91,7 +89,9 @@ static GType gst_rtpgsmparse_get_type (void) (GInstanceInitFunc) gst_rtpgsmparse_init, }; - rtpgsmparse_type = g_type_register_static (GST_TYPE_ELEMENT, "GstRtpGSMParse", &rtpgsmparse_info, 0); + rtpgsmparse_type = + g_type_register_static (GST_TYPE_ELEMENT, "GstRtpGSMParse", + &rtpgsmparse_info, 0); } return rtpgsmparse_type; } @@ -102,9 +102,9 @@ gst_rtpgsmparse_base_init (GstRtpGSMParseClass * klass) GstElementClass *element_class = GST_ELEMENT_CLASS (klass); gst_element_class_add_pad_template (element_class, - gst_static_pad_template_get(&gst_rtpgsmparse_src_template)); + gst_static_pad_template_get (&gst_rtpgsmparse_src_template)); gst_element_class_add_pad_template (element_class, - gst_static_pad_template_get(&gst_rtpgsmparse_sink_template)); + gst_static_pad_template_get (&gst_rtpgsmparse_sink_template)); gst_element_class_set_details (element_class, &gst_rtp_gsmparse_details); } @@ -119,9 +119,9 @@ gst_rtpgsmparse_class_init (GstRtpGSMParseClass * klass) parent_class = g_type_class_ref (GST_TYPE_ELEMENT); - g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_FREQUENCY, - g_param_spec_int ("frequency", "frequency", "frequency", - G_MININT, G_MAXINT, 8000, G_PARAM_READWRITE)); + g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_FREQUENCY, + g_param_spec_int ("frequency", "frequency", "frequency", + G_MININT, G_MAXINT, 8000, G_PARAM_READWRITE)); gobject_class->set_property = gst_rtpgsmparse_set_property; gobject_class->get_property = gst_rtpgsmparse_get_property; @@ -132,10 +132,12 @@ gst_rtpgsmparse_class_init (GstRtpGSMParseClass * klass) static void gst_rtpgsmparse_init (GstRtpGSMParse * rtpgsmparse) { - rtpgsmparse->srcpad = gst_pad_new_from_template ( - gst_static_pad_template_get(&gst_rtpgsmparse_src_template), "src"); - rtpgsmparse->sinkpad = gst_pad_new_from_template ( - gst_static_pad_template_get(&gst_rtpgsmparse_sink_template), "sink"); + rtpgsmparse->srcpad = + gst_pad_new_from_template (gst_static_pad_template_get + (&gst_rtpgsmparse_src_template), "src"); + rtpgsmparse->sinkpad = + gst_pad_new_from_template (gst_static_pad_template_get + (&gst_rtpgsmparse_sink_template), "sink"); gst_element_add_pad (GST_ELEMENT (rtpgsmparse), rtpgsmparse->srcpad); gst_element_add_pad (GST_ELEMENT (rtpgsmparse), rtpgsmparse->sinkpad); gst_pad_set_chain_function (rtpgsmparse->sinkpad, gst_rtpgsmparse_chain); @@ -144,32 +146,32 @@ gst_rtpgsmparse_init (GstRtpGSMParse * rtpgsmparse) } void -gst_rtpgsmparse_ntohs (GstBuffer *buf) +gst_rtpgsmparse_ntohs (GstBuffer * buf) { gint16 *i, *len; /* FIXME: is this code correct or even sane at all? */ - i = (gint16 *) GST_BUFFER_DATA(buf); + i = (gint16 *) GST_BUFFER_DATA (buf); len = i + GST_BUFFER_SIZE (buf) / sizeof (gint16 *); - for (; i<len; i++) { - *i = g_ntohs (*i); + for (; i < len; i++) { + *i = g_ntohs (*i); } } void -gst_rtpgsm_caps_nego (GstRtpGSMParse *rtpgsmparse) +gst_rtpgsm_caps_nego (GstRtpGSMParse * rtpgsmparse) { GstCaps *caps; caps = gst_caps_new_simple ("audio/x-gsm", - "rate", G_TYPE_INT, rtpgsmparse->frequency); + "rate", G_TYPE_INT, rtpgsmparse->frequency); gst_pad_try_set_caps (rtpgsmparse->srcpad, caps); } static void -gst_rtpgsmparse_chain (GstPad * pad, GstData *_data) +gst_rtpgsmparse_chain (GstPad * pad, GstData * _data) { GstBuffer *buf = GST_BUFFER (_data); GstRtpGSMParse *rtpgsmparse; @@ -188,8 +190,9 @@ gst_rtpgsmparse_chain (GstPad * pad, GstData *_data) if (GST_IS_EVENT (buf)) { GstEvent *event = GST_EVENT (buf); + gst_pad_event_default (pad, event); - + return; } @@ -197,7 +200,8 @@ gst_rtpgsmparse_chain (GstPad * pad, GstData *_data) gst_rtpgsm_caps_nego (rtpgsmparse); } - packet = rtp_packet_new_copy_data (GST_BUFFER_DATA (buf), GST_BUFFER_SIZE (buf)); + packet = + rtp_packet_new_copy_data (GST_BUFFER_DATA (buf), GST_BUFFER_SIZE (buf)); pt = rtp_packet_get_payload_type (packet); @@ -211,15 +215,18 @@ gst_rtpgsmparse_chain (GstPad * pad, GstData *_data) outbuf = gst_buffer_new (); GST_BUFFER_SIZE (outbuf) = rtp_packet_get_payload_len (packet); GST_BUFFER_DATA (outbuf) = g_malloc (GST_BUFFER_SIZE (outbuf)); - GST_BUFFER_TIMESTAMP (outbuf) = g_ntohl (rtp_packet_get_timestamp (packet)) * GST_SECOND; + GST_BUFFER_TIMESTAMP (outbuf) = + g_ntohl (rtp_packet_get_timestamp (packet)) * GST_SECOND; + + memcpy (GST_BUFFER_DATA (outbuf), rtp_packet_get_payload (packet), + GST_BUFFER_SIZE (outbuf)); - memcpy (GST_BUFFER_DATA (outbuf), rtp_packet_get_payload (packet), GST_BUFFER_SIZE (outbuf)); - - GST_DEBUG ("gst_rtpgsmparse_chain: pushing buffer of size %d", GST_BUFFER_SIZE(outbuf)); + GST_DEBUG ("gst_rtpgsmparse_chain: pushing buffer of size %d", + GST_BUFFER_SIZE (outbuf)); /* FIXME: According to RFC 1890, this is required, right? */ #if G_BYTE_ORDER == G_LITTLE_ENDIAN - gst_rtpgsmparse_ntohs (outbuf); + gst_rtpgsmparse_ntohs (outbuf); #endif gst_pad_push (rtpgsmparse->srcpad, GST_DATA (outbuf)); @@ -229,7 +236,8 @@ gst_rtpgsmparse_chain (GstPad * pad, GstData *_data) } static void -gst_rtpgsmparse_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec) +gst_rtpgsmparse_set_property (GObject * object, guint prop_id, + const GValue * value, GParamSpec * pspec) { GstRtpGSMParse *rtpgsmparse; @@ -247,7 +255,8 @@ gst_rtpgsmparse_set_property (GObject * object, guint prop_id, const GValue * va } static void -gst_rtpgsmparse_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec) +gst_rtpgsmparse_get_property (GObject * object, guint prop_id, GValue * value, + GParamSpec * pspec) { GstRtpGSMParse *rtpgsmparse; @@ -296,5 +305,5 @@ gboolean gst_rtpgsmparse_plugin_init (GstPlugin * plugin) { return gst_element_register (plugin, "rtpgsmparse", - GST_RANK_NONE, GST_TYPE_RTP_GSM_PARSE); + GST_RANK_NONE, GST_TYPE_RTP_GSM_PARSE); } diff --git a/gst/rtp/gstrtpgsmparse.h b/gst/rtp/gstrtpgsmparse.h index 0a006e70..f3b0e659 100644 --- a/gst/rtp/gstrtpgsmparse.h +++ b/gst/rtp/gstrtpgsmparse.h @@ -30,23 +30,23 @@ extern "C" #endif /* __cplusplus */ /* Definition of structure storing data for this element. */ -typedef struct _GstRtpGSMParse GstRtpGSMParse; -struct _GstRtpGSMParse -{ - GstElement element; + typedef struct _GstRtpGSMParse GstRtpGSMParse; + struct _GstRtpGSMParse + { + GstElement element; - GstPad *sinkpad; - GstPad *srcpad; + GstPad *sinkpad; + GstPad *srcpad; - guint frequency; -}; + guint frequency; + }; /* Standard definition defining a class for this element. */ -typedef struct _GstRtpGSMParseClass GstRtpGSMParseClass; -struct _GstRtpGSMParseClass -{ - GstElementClass parent_class; -}; + typedef struct _GstRtpGSMParseClass GstRtpGSMParseClass; + struct _GstRtpGSMParseClass + { + GstElementClass parent_class; + }; /* Standard macros for defining types for this element. */ #define GST_TYPE_RTP_GSM_PARSE \ @@ -60,7 +60,7 @@ struct _GstRtpGSMParseClass #define GST_IS_RTP_GSM_PARSE_CLASS(obj) \ (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RTP_GSM_PARSE)) -gboolean gst_rtpgsmparse_plugin_init (GstPlugin * plugin); + gboolean gst_rtpgsmparse_plugin_init (GstPlugin * plugin); #ifdef __cplusplus } diff --git a/gst/rtp/gstrtpgsmpay.c b/gst/rtp/gstrtpgsmpay.c index 495e4367..6301dd8c 100644 --- a/gst/rtp/gstrtpgsmpay.c +++ b/gst/rtp/gstrtpgsmpay.c @@ -46,38 +46,36 @@ enum }; static GstStaticPadTemplate gst_rtpgsmenc_sink_template = -GST_STATIC_PAD_TEMPLATE ( - "sink", +GST_STATIC_PAD_TEMPLATE ("sink", GST_PAD_SINK, GST_PAD_ALWAYS, - GST_STATIC_CAPS ( "audio/x-gsm, " - "rate = (int) [ 1000, 48000 ]" - ) -); + GST_STATIC_CAPS ("audio/x-gsm, " "rate = (int) [ 1000, 48000 ]") + ); static GstStaticPadTemplate gst_rtpgsmenc_src_template = -GST_STATIC_PAD_TEMPLATE ( - "src", +GST_STATIC_PAD_TEMPLATE ("src", GST_PAD_SRC, GST_PAD_ALWAYS, GST_STATIC_CAPS ("application/x-rtp") -); + ); static void gst_rtpgsmenc_class_init (GstRtpGSMEncClass * klass); static void gst_rtpgsmenc_base_init (GstRtpGSMEncClass * klass); static void gst_rtpgsmenc_init (GstRtpGSMEnc * rtpgsmenc); -static void gst_rtpgsmenc_chain (GstPad * pad, GstData *_data); +static void gst_rtpgsmenc_chain (GstPad * pad, GstData * _data); static void gst_rtpgsmenc_set_property (GObject * object, guint prop_id, - const GValue * value, GParamSpec * pspec); + const GValue * value, GParamSpec * pspec); static void gst_rtpgsmenc_get_property (GObject * object, guint prop_id, - GValue * value, GParamSpec * pspec); -static GstPadLinkReturn gst_rtpgsmenc_sinkconnect (GstPad * pad, const GstCaps * caps); + GValue * value, GParamSpec * pspec); +static GstPadLinkReturn gst_rtpgsmenc_sinkconnect (GstPad * pad, + const GstCaps * caps); static GstElementStateReturn gst_rtpgsmenc_change_state (GstElement * element); static GstElementClass *parent_class = NULL; -static GType gst_rtpgsmenc_get_type (void) +static GType +gst_rtpgsmenc_get_type (void) { static GType rtpgsmenc_type = 0; @@ -94,7 +92,9 @@ static GType gst_rtpgsmenc_get_type (void) (GInstanceInitFunc) gst_rtpgsmenc_init, }; - rtpgsmenc_type = g_type_register_static (GST_TYPE_ELEMENT, "GstRtpGSMEnc", &rtpgsmenc_info, 0); + rtpgsmenc_type = + g_type_register_static (GST_TYPE_ELEMENT, "GstRtpGSMEnc", + &rtpgsmenc_info, 0); } return rtpgsmenc_type; } @@ -131,10 +131,12 @@ gst_rtpgsmenc_class_init (GstRtpGSMEncClass * klass) static void gst_rtpgsmenc_init (GstRtpGSMEnc * rtpgsmenc) { - rtpgsmenc->sinkpad = gst_pad_new_from_template ( - gst_static_pad_template_get (&gst_rtpgsmenc_sink_template), "sink"); - rtpgsmenc->srcpad = gst_pad_new_from_template ( - gst_static_pad_template_get (&gst_rtpgsmenc_sink_template), "src"); + rtpgsmenc->sinkpad = + gst_pad_new_from_template (gst_static_pad_template_get + (&gst_rtpgsmenc_sink_template), "sink"); + rtpgsmenc->srcpad = + gst_pad_new_from_template (gst_static_pad_template_get + (&gst_rtpgsmenc_sink_template), "src"); gst_element_add_pad (GST_ELEMENT (rtpgsmenc), rtpgsmenc->sinkpad); gst_element_add_pad (GST_ELEMENT (rtpgsmenc), rtpgsmenc->srcpad); gst_pad_set_chain_function (rtpgsmenc->sinkpad, gst_rtpgsmenc_chain); @@ -142,7 +144,7 @@ gst_rtpgsmenc_init (GstRtpGSMEnc * rtpgsmenc) rtpgsmenc->frequency = 8000; - rtpgsmenc->next_time = 0; + rtpgsmenc->next_time = 0; rtpgsmenc->time_interval = 0; rtpgsmenc->seq = 0; @@ -161,7 +163,8 @@ gst_rtpgsmenc_sinkconnect (GstPad * pad, const GstCaps * caps) structure = gst_caps_get_structure (caps, 0); ret = gst_structure_get_int (structure, "rate", &rtpgsmenc->frequency); - if (!ret) return GST_PAD_LINK_REFUSED; + if (!ret) + return GST_PAD_LINK_REFUSED; /* Pre-calculate what we can */ rtpgsmenc->time_interval = GST_SECOND / (2 * rtpgsmenc->frequency); @@ -171,21 +174,21 @@ gst_rtpgsmenc_sinkconnect (GstPad * pad, const GstCaps * caps) void -gst_rtpgsmenc_htons (GstBuffer *buf) +gst_rtpgsmenc_htons (GstBuffer * buf) { gint16 *i, *len; /* FIXME: is this code correct or even sane at all? */ - i = (gint16 *) GST_BUFFER_DATA(buf); + i = (gint16 *) GST_BUFFER_DATA (buf); len = i + GST_BUFFER_SIZE (buf) / sizeof (gint16 *); - for (; i<len; i++) { - *i = g_htons (*i); + for (; i < len; i++) { + *i = g_htons (*i); } } static void -gst_rtpgsmenc_chain (GstPad * pad, GstData *_data) +gst_rtpgsmenc_chain (GstPad * pad, GstData * _data) { GstBuffer *buf = GST_BUFFER (_data); GstRtpGSMEnc *rtpgsmenc; @@ -206,12 +209,12 @@ gst_rtpgsmenc_chain (GstPad * pad, GstData *_data) switch (GST_EVENT_TYPE (event)) { case GST_EVENT_DISCONTINUOUS: - GST_DEBUG ("discont"); - rtpgsmenc->next_time = 0; - gst_pad_event_default (pad, event); + GST_DEBUG ("discont"); + rtpgsmenc->next_time = 0; + gst_pad_event_default (pad, event); return; default: - gst_pad_event_default (pad, event); + gst_pad_event_default (pad, event); return; } } @@ -226,7 +229,8 @@ gst_rtpgsmenc_chain (GstPad * pad, GstData *_data) rtp_packet_set_marker (packet, 0); rtp_packet_set_ssrc (packet, g_htonl (rtpgsmenc->ssrc)); rtp_packet_set_seq (packet, g_htons (rtpgsmenc->seq)); - rtp_packet_set_timestamp (packet, g_htonl ((guint32) rtpgsmenc->next_time / GST_SECOND)); + rtp_packet_set_timestamp (packet, + g_htonl ((guint32) rtpgsmenc->next_time / GST_SECOND)); rtp_packet_set_payload_type (packet, (guint8) PAYLOAD_GSM); /* FIXME: According to RFC 1890, this is required, right? */ @@ -235,25 +239,30 @@ gst_rtpgsmenc_chain (GstPad * pad, GstData *_data) #endif outbuf = gst_buffer_new (); - GST_BUFFER_SIZE (outbuf) = rtp_packet_get_packet_len (packet) + GST_BUFFER_SIZE (buf); + GST_BUFFER_SIZE (outbuf) = + rtp_packet_get_packet_len (packet) + GST_BUFFER_SIZE (buf); GST_BUFFER_DATA (outbuf) = g_malloc (GST_BUFFER_SIZE (outbuf)); GST_BUFFER_TIMESTAMP (outbuf) = rtpgsmenc->next_time; - memcpy (GST_BUFFER_DATA (outbuf), packet->data, rtp_packet_get_packet_len (packet)); - memcpy (GST_BUFFER_DATA (outbuf) + rtp_packet_get_packet_len(packet), GST_BUFFER_DATA (buf), GST_BUFFER_SIZE (buf)); + memcpy (GST_BUFFER_DATA (outbuf), packet->data, + rtp_packet_get_packet_len (packet)); + memcpy (GST_BUFFER_DATA (outbuf) + rtp_packet_get_packet_len (packet), + GST_BUFFER_DATA (buf), GST_BUFFER_SIZE (buf)); - GST_DEBUG ("gst_rtpgsmenc_chain: pushing buffer of size %d", GST_BUFFER_SIZE(outbuf)); + GST_DEBUG ("gst_rtpgsmenc_chain: pushing buffer of size %d", + GST_BUFFER_SIZE (outbuf)); gst_pad_push (rtpgsmenc->srcpad, GST_DATA (outbuf)); ++rtpgsmenc->seq; rtpgsmenc->next_time += rtpgsmenc->time_interval * GST_BUFFER_SIZE (buf); - + rtp_packet_free (packet); gst_buffer_unref (buf); } static void -gst_rtpgsmenc_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec) +gst_rtpgsmenc_set_property (GObject * object, guint prop_id, + const GValue * value, GParamSpec * pspec) { GstRtpGSMEnc *rtpgsmenc; @@ -268,7 +277,8 @@ gst_rtpgsmenc_set_property (GObject * object, guint prop_id, const GValue * valu } static void -gst_rtpgsmenc_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec) +gst_rtpgsmenc_get_property (GObject * object, guint prop_id, GValue * value, + GParamSpec * pspec) { GstRtpGSMEnc *rtpgsmenc; @@ -317,5 +327,5 @@ gboolean gst_rtpgsmenc_plugin_init (GstPlugin * plugin) { return gst_element_register (plugin, "rtpgsmenc", - GST_RANK_NONE, GST_TYPE_RTP_GSM_ENC); + GST_RANK_NONE, GST_TYPE_RTP_GSM_ENC); } diff --git a/gst/rtp/gstrtpgsmpay.h b/gst/rtp/gstrtpgsmpay.h index 1220d402..e44e5dae 100644 --- a/gst/rtp/gstrtpgsmpay.h +++ b/gst/rtp/gstrtpgsmpay.h @@ -31,31 +31,31 @@ extern "C" #endif /* __cplusplus */ /* Definition of structure storing data for this element. */ -typedef struct _GstRtpGSMEnc GstRtpGSMEnc; -struct _GstRtpGSMEnc -{ - GstElement element; + typedef struct _GstRtpGSMEnc GstRtpGSMEnc; + struct _GstRtpGSMEnc + { + GstElement element; + + GstPad *sinkpad; + GstPad *srcpad; - GstPad *sinkpad; - GstPad *srcpad; + guint frequency; - guint frequency; + /* the timestamp of the next frame */ + guint64 next_time; + /* the interval between frames */ + guint64 time_interval; - /* the timestamp of the next frame */ - guint64 next_time; - /* the interval between frames */ - guint64 time_interval; - - guint32 ssrc; - guint16 seq; -}; + guint32 ssrc; + guint16 seq; + }; /* Standard definition defining a class for this element. */ -typedef struct _GstRtpGSMEncClass GstRtpGSMEncClass; -struct _GstRtpGSMEncClass -{ - GstElementClass parent_class; -}; + typedef struct _GstRtpGSMEncClass GstRtpGSMEncClass; + struct _GstRtpGSMEncClass + { + GstElementClass parent_class; + }; /* Standard macros for defining types for this element. */ #define GST_TYPE_RTP_GSM_ENC \ @@ -69,7 +69,7 @@ struct _GstRtpGSMEncClass #define GST_IS_RTP_GSM_ENC_CLASS(obj) \ (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RTP_GSM_ENC)) -gboolean gst_rtpgsmenc_plugin_init (GstPlugin * plugin); + gboolean gst_rtpgsmenc_plugin_init (GstPlugin * plugin); #ifdef __cplusplus } diff --git a/gst/rtp/rtp-packet.c b/gst/rtp/rtp-packet.c index 11077ef6..f33772b5 100644 --- a/gst/rtp/rtp-packet.c +++ b/gst/rtp/rtp-packet.c @@ -33,65 +33,64 @@ #include "rtp-packet.h" Rtp_Packet -rtp_packet_new_take_data(gpointer data, guint data_len) +rtp_packet_new_take_data (gpointer data, guint data_len) { Rtp_Packet packet; //g_return_val_if_fail(data_len < RTP_MTU, NULL); - packet = g_malloc(sizeof *packet); + packet = g_malloc (sizeof *packet); - packet -> data = data; - packet -> data_len = data_len; + packet->data = data; + packet->data_len = data_len; return packet; } Rtp_Packet -rtp_packet_new_copy_data(gpointer data, guint data_len) +rtp_packet_new_copy_data (gpointer data, guint data_len) { Rtp_Packet packet; //g_return_val_if_fail(data_len < RTP_MTU, NULL); - packet = g_malloc(sizeof *packet); + packet = g_malloc (sizeof *packet); - packet -> data = g_memdup(data, data_len); - packet -> data_len = data_len; + packet->data = g_memdup (data, data_len); + packet->data_len = data_len; return packet; } Rtp_Packet -rtp_packet_new_allocate(guint payload_len, guint pad_len, guint csrc_count) +rtp_packet_new_allocate (guint payload_len, guint pad_len, guint csrc_count) { guint len; Rtp_Packet packet; - g_return_val_if_fail(csrc_count <= 15, NULL); + g_return_val_if_fail (csrc_count <= 15, NULL); - len = RTP_HEADER_LEN - + csrc_count * sizeof(guint32) - + payload_len + pad_len; + len = RTP_HEADER_LEN + csrc_count * sizeof (guint32) + + payload_len + pad_len; //g_return_val_if_fail(len < RTP_MTU, NULL); - packet = g_malloc(sizeof *packet); + packet = g_malloc (sizeof *packet); - packet -> data_len = len; - packet -> data = g_malloc(len); + packet->data_len = len; + packet->data = g_malloc (len); - return(packet); + return (packet); } void -rtp_packet_free(Rtp_Packet packet) +rtp_packet_free (Rtp_Packet packet) { - g_return_if_fail(packet != NULL); + g_return_if_fail (packet != NULL); - g_free(packet -> data); - g_free(packet); + g_free (packet->data); + g_free (packet); } /*Rtp_Packet @@ -124,187 +123,185 @@ rtp_packet_send(Rtp_Packet packet, int fd, struct sockaddr *toaddr, socklen_t to }*/ guint8 -rtp_packet_get_version(Rtp_Packet packet) +rtp_packet_get_version (Rtp_Packet packet) { - g_return_val_if_fail(packet != NULL, 0); + g_return_val_if_fail (packet != NULL, 0); - return ((Rtp_Header) packet -> data) -> version; + return ((Rtp_Header) packet->data)->version; } void -rtp_packet_set_version(Rtp_Packet packet, guint8 version) +rtp_packet_set_version (Rtp_Packet packet, guint8 version) { - g_return_if_fail(packet != NULL); - g_return_if_fail(version < 0x04); + g_return_if_fail (packet != NULL); + g_return_if_fail (version < 0x04); - ((Rtp_Header) packet -> data) -> version = version; + ((Rtp_Header) packet->data)->version = version; } guint8 -rtp_packet_get_padding(Rtp_Packet packet) +rtp_packet_get_padding (Rtp_Packet packet) { - g_return_val_if_fail(packet != NULL, 0); + g_return_val_if_fail (packet != NULL, 0); - return ((Rtp_Header) packet -> data) -> padding; + return ((Rtp_Header) packet->data)->padding; } void -rtp_packet_set_padding(Rtp_Packet packet, guint8 padding) +rtp_packet_set_padding (Rtp_Packet packet, guint8 padding) { - g_return_if_fail(packet != NULL); - g_return_if_fail(padding < 0x02); + g_return_if_fail (packet != NULL); + g_return_if_fail (padding < 0x02); - ((Rtp_Header) packet -> data) -> padding = padding; + ((Rtp_Header) packet->data)->padding = padding; } guint8 -rtp_packet_get_csrc_count(Rtp_Packet packet) +rtp_packet_get_csrc_count (Rtp_Packet packet) { - g_return_val_if_fail(packet != NULL, 0); + g_return_val_if_fail (packet != NULL, 0); - return ((Rtp_Header) packet -> data) -> csrc_count; + return ((Rtp_Header) packet->data)->csrc_count; } guint8 -rtp_packet_get_extension(Rtp_Packet packet) +rtp_packet_get_extension (Rtp_Packet packet) { - g_return_val_if_fail(packet != NULL, 0); + g_return_val_if_fail (packet != NULL, 0); - return ((Rtp_Header) packet -> data) -> extension; + return ((Rtp_Header) packet->data)->extension; } void -rtp_packet_set_extension(Rtp_Packet packet, guint8 extension) +rtp_packet_set_extension (Rtp_Packet packet, guint8 extension) { - g_return_if_fail(packet != NULL); - g_return_if_fail(extension < 0x02); + g_return_if_fail (packet != NULL); + g_return_if_fail (extension < 0x02); - ((Rtp_Header) packet -> data) -> extension = extension; + ((Rtp_Header) packet->data)->extension = extension; } void -rtp_packet_set_csrc_count(Rtp_Packet packet, guint8 csrc_count) +rtp_packet_set_csrc_count (Rtp_Packet packet, guint8 csrc_count) { - g_return_if_fail(packet != NULL); - g_return_if_fail(csrc_count < 0x04); + g_return_if_fail (packet != NULL); + g_return_if_fail (csrc_count < 0x04); - ((Rtp_Header) packet -> data) -> csrc_count = csrc_count; + ((Rtp_Header) packet->data)->csrc_count = csrc_count; } guint8 -rtp_packet_get_marker(Rtp_Packet packet) +rtp_packet_get_marker (Rtp_Packet packet) { - g_return_val_if_fail(packet != NULL, 0); + g_return_val_if_fail (packet != NULL, 0); - return ((Rtp_Header) packet -> data) -> marker; + return ((Rtp_Header) packet->data)->marker; } void -rtp_packet_set_marker(Rtp_Packet packet, guint8 marker) +rtp_packet_set_marker (Rtp_Packet packet, guint8 marker) { - g_return_if_fail(packet != NULL); - g_return_if_fail(marker < 0x02); + g_return_if_fail (packet != NULL); + g_return_if_fail (marker < 0x02); - ((Rtp_Header) packet -> data) -> marker = marker; + ((Rtp_Header) packet->data)->marker = marker; } guint8 -rtp_packet_get_payload_type(Rtp_Packet packet) +rtp_packet_get_payload_type (Rtp_Packet packet) { - g_return_val_if_fail(packet != NULL, 0); + g_return_val_if_fail (packet != NULL, 0); - return ((Rtp_Header) packet -> data) -> payload_type; + return ((Rtp_Header) packet->data)->payload_type; } void -rtp_packet_set_payload_type(Rtp_Packet packet, guint8 payload_type) +rtp_packet_set_payload_type (Rtp_Packet packet, guint8 payload_type) { - g_return_if_fail(packet != NULL); - g_return_if_fail(payload_type < 0x80); + g_return_if_fail (packet != NULL); + g_return_if_fail (payload_type < 0x80); - ((Rtp_Header) packet -> data) -> payload_type = payload_type; + ((Rtp_Header) packet->data)->payload_type = payload_type; } guint16 -rtp_packet_get_seq(Rtp_Packet packet) +rtp_packet_get_seq (Rtp_Packet packet) { - g_return_val_if_fail(packet != NULL, 0); + g_return_val_if_fail (packet != NULL, 0); - return g_ntohs(((Rtp_Header) packet -> data) -> seq); + return g_ntohs (((Rtp_Header) packet->data)->seq); } void -rtp_packet_set_seq(Rtp_Packet packet, guint16 seq) +rtp_packet_set_seq (Rtp_Packet packet, guint16 seq) { - g_return_if_fail(packet != NULL); + g_return_if_fail (packet != NULL); - ((Rtp_Header) packet -> data) -> seq = g_htons(seq); + ((Rtp_Header) packet->data)->seq = g_htons (seq); } guint32 -rtp_packet_get_timestamp(Rtp_Packet packet) +rtp_packet_get_timestamp (Rtp_Packet packet) { - g_return_val_if_fail(packet != NULL, 0); + g_return_val_if_fail (packet != NULL, 0); - return g_ntohl(((Rtp_Header) packet -> data) -> timestamp); + return g_ntohl (((Rtp_Header) packet->data)->timestamp); } void -rtp_packet_set_timestamp(Rtp_Packet packet, guint32 timestamp) +rtp_packet_set_timestamp (Rtp_Packet packet, guint32 timestamp) { - g_return_if_fail(packet != NULL); + g_return_if_fail (packet != NULL); - ((Rtp_Header) packet -> data) -> timestamp = g_htonl(timestamp); + ((Rtp_Header) packet->data)->timestamp = g_htonl (timestamp); } guint32 -rtp_packet_get_ssrc(Rtp_Packet packet) +rtp_packet_get_ssrc (Rtp_Packet packet) { - g_return_val_if_fail(packet != NULL, 0); + g_return_val_if_fail (packet != NULL, 0); - return g_ntohl(((Rtp_Header) packet -> data) -> ssrc); + return g_ntohl (((Rtp_Header) packet->data)->ssrc); } void -rtp_packet_set_ssrc(Rtp_Packet packet, guint32 ssrc) +rtp_packet_set_ssrc (Rtp_Packet packet, guint32 ssrc) { - g_return_if_fail(packet != NULL); + g_return_if_fail (packet != NULL); - ((Rtp_Header) packet -> data) -> ssrc = g_htonl(ssrc); + ((Rtp_Header) packet->data)->ssrc = g_htonl (ssrc); } guint -rtp_packet_get_payload_len(Rtp_Packet packet) +rtp_packet_get_payload_len (Rtp_Packet packet) { guint len; - g_return_val_if_fail(packet != NULL, 0); + g_return_val_if_fail (packet != NULL, 0); - len = packet -> data_len - - RTP_HEADER_LEN - - rtp_packet_get_csrc_count(packet) * sizeof(guint32); + len = packet->data_len + - RTP_HEADER_LEN - rtp_packet_get_csrc_count (packet) * sizeof (guint32); - if (rtp_packet_get_padding(packet)) { - len -= ((guint8 *) packet -> data)[packet -> data_len - 1]; + if (rtp_packet_get_padding (packet)) { + len -= ((guint8 *) packet->data)[packet->data_len - 1]; } return len; } gpointer -rtp_packet_get_payload(Rtp_Packet packet) +rtp_packet_get_payload (Rtp_Packet packet) { - g_return_val_if_fail(packet != NULL, NULL); + g_return_val_if_fail (packet != NULL, NULL); - return ((char *) packet -> data) - + RTP_HEADER_LEN - + rtp_packet_get_csrc_count(packet) * sizeof(guint32); + return ((char *) packet->data) + + RTP_HEADER_LEN + rtp_packet_get_csrc_count (packet) * sizeof (guint32); } guint -rtp_packet_get_packet_len(Rtp_Packet packet) +rtp_packet_get_packet_len (Rtp_Packet packet) { - g_return_val_if_fail(packet != NULL, 0); + g_return_val_if_fail (packet != NULL, 0); - return packet -> data_len; + return packet->data_len; } diff --git a/gst/rtp/rtp-packet.h b/gst/rtp/rtp-packet.h index f731c5f0..b130c86e 100644 --- a/gst/rtp/rtp-packet.h +++ b/gst/rtp/rtp-packet.h @@ -30,77 +30,80 @@ #endif #ifdef __cplusplus -extern "C" { +extern "C" +{ #endif #define RTP_VERSION 2 #define RTP_HEADER_LEN 12 #define RTP_MTU 2048 -typedef struct Rtp_Header *Rtp_Header; + typedef struct Rtp_Header *Rtp_Header; -struct Rtp_Packet_Struct { - gpointer data; - guint data_len; -}; + struct Rtp_Packet_Struct + { + gpointer data; + guint data_len; + }; -struct Rtp_Header { + struct Rtp_Header + { #if G_BYTE_ORDER == G_LITTLE_ENDIAN - unsigned int csrc_count:4; /* CSRC count */ - unsigned int extension:1; /* header extension flag */ - unsigned int padding:1; /* padding flag */ - unsigned int version:2; /* protocol version */ - unsigned int payload_type:7; /* payload type */ - unsigned int marker:1; /* marker bit */ + unsigned int csrc_count:4; /* CSRC count */ + unsigned int extension:1; /* header extension flag */ + unsigned int padding:1; /* padding flag */ + unsigned int version:2; /* protocol version */ + unsigned int payload_type:7; /* payload type */ + unsigned int marker:1; /* marker bit */ #elif G_BYTE_ORDER == G_BIG_ENDIAN - unsigned int version:2; /* protocol version */ - unsigned int padding:1; /* padding flag */ - unsigned int extension:1; /* header extension flag */ - unsigned int csrc_count:4; /* CSRC count */ - unsigned int marker:1; /* marker bit */ - unsigned int payload_type:7; /* payload type */ + unsigned int version:2; /* protocol version */ + unsigned int padding:1; /* padding flag */ + unsigned int extension:1; /* header extension flag */ + unsigned int csrc_count:4; /* CSRC count */ + unsigned int marker:1; /* marker bit */ + unsigned int payload_type:7; /* payload type */ #else #error "G_BYTE_ORDER should be big or little endian." #endif - guint16 seq; /* sequence number */ - guint32 timestamp; /* timestamp */ - guint32 ssrc; /* synchronization source */ - guint32 csrc[1]; /* optional CSRC list */ -}; + guint16 seq; /* sequence number */ + guint32 timestamp; /* timestamp */ + guint32 ssrc; /* synchronization source */ + guint32 csrc[1]; /* optional CSRC list */ + }; -typedef struct Rtp_Packet_Struct *Rtp_Packet; + typedef struct Rtp_Packet_Struct *Rtp_Packet; -Rtp_Packet rtp_packet_new_take_data(gpointer data, guint data_len); -Rtp_Packet rtp_packet_new_copy_data(gpointer data, guint data_len); -Rtp_Packet rtp_packet_new_allocate(guint payload_len, - guint pad_len, guint csrc_count); -void rtp_packet_free(Rtp_Packet packet); + Rtp_Packet rtp_packet_new_take_data (gpointer data, guint data_len); + Rtp_Packet rtp_packet_new_copy_data (gpointer data, guint data_len); + Rtp_Packet rtp_packet_new_allocate (guint payload_len, + guint pad_len, guint csrc_count); + void rtp_packet_free (Rtp_Packet packet); //Rtp_Packet rtp_packet_read(int fd, struct sockaddr *fromaddr, socklen_t *fromlen); //void rtp_packet_send(Rtp_Packet packet, int fd, struct sockaddr *toaddr, socklen_t tolen); -guint8 rtp_packet_get_version(Rtp_Packet packet); -void rtp_packet_set_version(Rtp_Packet packet, guint8 version); -guint8 rtp_packet_get_padding(Rtp_Packet packet); -void rtp_packet_set_padding(Rtp_Packet packet, guint8 padding); -guint8 rtp_packet_get_csrc_count(Rtp_Packet packet); -guint8 rtp_packet_get_extension(Rtp_Packet packet); -void rtp_packet_set_extension(Rtp_Packet packet, guint8 extension); -void rtp_packet_set_csrc_count(Rtp_Packet packet, guint8 csrc_count); -guint8 rtp_packet_get_marker(Rtp_Packet packet); -void rtp_packet_set_marker(Rtp_Packet packet, guint8 marker); -guint8 rtp_packet_get_payload_type(Rtp_Packet packet); -void rtp_packet_set_payload_type(Rtp_Packet packet, guint8 payload_type); -guint16 rtp_packet_get_seq(Rtp_Packet packet); -void rtp_packet_set_seq(Rtp_Packet packet, guint16 seq); -guint32 rtp_packet_get_timestamp(Rtp_Packet packet); -void rtp_packet_set_timestamp(Rtp_Packet packet, guint32 timestamp); -guint32 rtp_packet_get_ssrc(Rtp_Packet packet); -void rtp_packet_set_ssrc(Rtp_Packet packet, guint32 ssrc); -guint rtp_packet_get_payload_len(Rtp_Packet packet); -gpointer rtp_packet_get_payload(Rtp_Packet packet); -guint rtp_packet_get_packet_len(Rtp_Packet packet); + guint8 rtp_packet_get_version (Rtp_Packet packet); + void rtp_packet_set_version (Rtp_Packet packet, guint8 version); + guint8 rtp_packet_get_padding (Rtp_Packet packet); + void rtp_packet_set_padding (Rtp_Packet packet, guint8 padding); + guint8 rtp_packet_get_csrc_count (Rtp_Packet packet); + guint8 rtp_packet_get_extension (Rtp_Packet packet); + void rtp_packet_set_extension (Rtp_Packet packet, guint8 extension); + void rtp_packet_set_csrc_count (Rtp_Packet packet, guint8 csrc_count); + guint8 rtp_packet_get_marker (Rtp_Packet packet); + void rtp_packet_set_marker (Rtp_Packet packet, guint8 marker); + guint8 rtp_packet_get_payload_type (Rtp_Packet packet); + void rtp_packet_set_payload_type (Rtp_Packet packet, guint8 payload_type); + guint16 rtp_packet_get_seq (Rtp_Packet packet); + void rtp_packet_set_seq (Rtp_Packet packet, guint16 seq); + guint32 rtp_packet_get_timestamp (Rtp_Packet packet); + void rtp_packet_set_timestamp (Rtp_Packet packet, guint32 timestamp); + guint32 rtp_packet_get_ssrc (Rtp_Packet packet); + void rtp_packet_set_ssrc (Rtp_Packet packet, guint32 ssrc); + guint rtp_packet_get_payload_len (Rtp_Packet packet); + gpointer rtp_packet_get_payload (Rtp_Packet packet); + guint rtp_packet_get_packet_len (Rtp_Packet packet); #ifdef __cplusplus } #endif -#endif /* rtp-packet.h */ +#endif /* rtp-packet.h */ |