diff --git a/docs/plugins/gst-plugins-bad-plugins-docs.sgml b/docs/plugins/gst-plugins-bad-plugins-docs.sgml index 4d7fc353ad..57dac64183 100644 --- a/docs/plugins/gst-plugins-bad-plugins-docs.sgml +++ b/docs/plugins/gst-plugins-bad-plugins-docs.sgml @@ -76,8 +76,6 @@ - - diff --git a/docs/plugins/gst-plugins-bad-plugins-sections.txt b/docs/plugins/gst-plugins-bad-plugins-sections.txt index 17f74a6121..3b47c167fb 100644 --- a/docs/plugins/gst-plugins-bad-plugins-sections.txt +++ b/docs/plugins/gst-plugins-bad-plugins-sections.txt @@ -1141,32 +1141,6 @@ GST_IS_OPUS_PARSE GST_IS_OPUS_PARSE_CLASS -element-rtpopusdepay -rtpopusdepay -GstRTPOpusDepay - -GstRTPOpusDepayClass -gst_rtp_opus_depay_get_type -GST_TYPE_RTP_OPUS_DEPAY -GST_RTP_OPUS_DEPAY -GST_RTP_OPUS_DEPAY_CLASS -GST_IS_RTP_OPUS_DEPAY -GST_IS_RTP_OPUS_DEPAY_CLASS - - -element-rtpopuspay -rtpopuspay -GstRtpOPUSPay - -GstRtpOPUSPayClass -gst_rtp_opus_pay_get_type -GST_TYPE_RTP_OPUS_PAY -GST_RTP_OPUS_PAY -GST_RTP_OPUS_PAY_CLASS -GST_IS_RTP_OPUS_PAY -GST_IS_RTP_OPUS_PAY_CLASS - -
element-pcapparse pcapparse diff --git a/docs/plugins/gst-plugins-bad-plugins.hierarchy b/docs/plugins/gst-plugins-bad-plugins.hierarchy index c43c7b792c..2350f52a52 100644 --- a/docs/plugins/gst-plugins-bad-plugins.hierarchy +++ b/docs/plugins/gst-plugins-bad-plugins.hierarchy @@ -303,11 +303,8 @@ GObject GstNetSim GstPcapParse GstPitch - GstRTPBaseDepayload - GstRTPOpusDepay GstRTPBasePayload GstRtpAsfPay - GstRtpOPUSPay GstRawParse GstAudioParse GstVideoParse diff --git a/docs/plugins/inspect/plugin-opus.xml b/docs/plugins/inspect/plugin-opus.xml index 36542b430d..7f9053a87e 100644 --- a/docs/plugins/inspect/plugin-opus.xml +++ b/docs/plugins/inspect/plugin-opus.xml @@ -3,10 +3,10 @@ OPUS plugin library ../../ext/opus/.libs/libgstopus.so libgstopus.so - 1.7.2 + 1.7.2.1 LGPL gst-plugins-bad - GStreamer Bad Plug-ins source release + GStreamer Bad Plug-ins git Unknown package origin @@ -68,49 +68,7 @@ src source always -
audio/x-opus, framed=(boolean)true
- - -
- - rtpopusdepay - RTP Opus packet depayloader - Codec/Depayloader/Network/RTP - Extracts Opus audio from RTP packets - Danilo Cesar Lemes de Paula <danilo.cesar@collabora.co.uk> - - - sink - sink - always -
application/x-rtp, media=(string)audio, payload=(int)[ 96, 127 ], clock-rate=(int)48000, encoding-name=(string){ OPUS, X-GST-OPUS-DRAFT-SPITTKA-00 }
-
- - src - source - always -
audio/x-opus, channel-mapping-family=(int)0
-
-
-
- - rtpopuspay - RTP Opus payloader - Codec/Payloader/Network/RTP - Puts Opus audio in RTP packets - Danilo Cesar Lemes de Paula <danilo.cesar@collabora.co.uk> - - - sink - sink - always -
audio/x-opus, channels=(int)[ 1, 2 ], channel-mapping-family=(int)0
-
- - src - source - always -
application/x-rtp, media=(string)audio, payload=(int)[ 96, 127 ], clock-rate=(int)48000, encoding-params=(string)2, encoding-name=(string){ OPUS, X-GST-OPUS-DRAFT-SPITTKA-00 }
+
audio/x-opus
diff --git a/ext/opus/Makefile.am b/ext/opus/Makefile.am index c643692525..aa0d4388e8 100644 --- a/ext/opus/Makefile.am +++ b/ext/opus/Makefile.am @@ -1,6 +1,6 @@ plugin_LTLIBRARIES = libgstopus.la -libgstopus_la_SOURCES = gstopus.c gstopusdec.c gstopusenc.c gstopusparse.c gstopusheader.c gstopuscommon.c gstrtpopuspay.c gstrtpopusdepay.c +libgstopus_la_SOURCES = gstopus.c gstopusdec.c gstopusenc.c gstopusparse.c gstopusheader.c gstopuscommon.c libgstopus_la_CFLAGS = \ -DGST_USE_UNSTABLE_API \ $(GST_PLUGINS_BAD_CFLAGS) \ @@ -9,7 +9,7 @@ libgstopus_la_CFLAGS = \ $(OPUS_CFLAGS) libgstopus_la_LIBADD = \ $(GST_PLUGINS_BASE_LIBS) -lgstaudio-$(GST_API_VERSION) \ - -lgsttag-$(GST_API_VERSION) -lgstrtp-$(GST_API_VERSION) \ + -lgsttag-$(GST_API_VERSION) \ -lgstpbutils-$(GST_API_VERSION) \ $(GST_BASE_LIBS) \ $(GST_LIBS) \ @@ -17,4 +17,4 @@ libgstopus_la_LIBADD = \ libgstopus_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) $(LIBM) libgstopus_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS) -noinst_HEADERS = gstopusenc.h gstopusdec.h gstopusparse.h gstopusheader.h gstopuscommon.h gstrtpopuspay.h gstrtpopusdepay.h +noinst_HEADERS = gstopusenc.h gstopusdec.h gstopusparse.h gstopusheader.h gstopuscommon.h diff --git a/ext/opus/gstopus.c b/ext/opus/gstopus.c index a3427b2849..63d50ef3e6 100644 --- a/ext/opus/gstopus.c +++ b/ext/opus/gstopus.c @@ -25,9 +25,6 @@ #include "gstopusenc.h" #include "gstopusparse.h" -#include "gstrtpopuspay.h" -#include "gstrtpopusdepay.h" - #include static gboolean @@ -46,14 +43,6 @@ plugin_init (GstPlugin * plugin) GST_TYPE_OPUS_PARSE)) return FALSE; - if (!gst_element_register (plugin, "rtpopusdepay", GST_RANK_SECONDARY, - GST_TYPE_RTP_OPUS_DEPAY)) - return FALSE; - - if (!gst_element_register (plugin, "rtpopuspay", GST_RANK_SECONDARY, - GST_TYPE_RTP_OPUS_PAY)) - return FALSE; - gst_tag_register_musicbrainz_tags (); return TRUE; diff --git a/ext/opus/gstrtpopusdepay.c b/ext/opus/gstrtpopusdepay.c deleted file mode 100644 index 8152cd57fa..0000000000 --- a/ext/opus/gstrtpopusdepay.c +++ /dev/null @@ -1,175 +0,0 @@ -/* - * Opus Depayloader Gst Element - * - * @author: Danilo Cesar Lemes de Paula - * - * 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. - */ - -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include -#include -#include -#include -#include "gstrtpopusdepay.h" - -GST_DEBUG_CATEGORY_STATIC (rtpopusdepay_debug); -#define GST_CAT_DEFAULT (rtpopusdepay_debug) - -static GstStaticPadTemplate gst_rtp_opus_depay_sink_template = -GST_STATIC_PAD_TEMPLATE ("sink", - GST_PAD_SINK, - GST_PAD_ALWAYS, - GST_STATIC_CAPS ("application/x-rtp, " - "media = (string) \"audio\", " - "payload = (int) " GST_RTP_PAYLOAD_DYNAMIC_STRING "," - "clock-rate = (int) 48000, " - "encoding-name = (string) { \"OPUS\", \"X-GST-OPUS-DRAFT-SPITTKA-00\" }") - ); - -static GstStaticPadTemplate gst_rtp_opus_depay_src_template = -GST_STATIC_PAD_TEMPLATE ("src", - GST_PAD_SRC, - GST_PAD_ALWAYS, - GST_STATIC_CAPS ("audio/x-opus, channel-mapping-family = (int) 0") - ); - -static GstBuffer *gst_rtp_opus_depay_process (GstRTPBaseDepayload * depayload, - GstBuffer * buf); -static gboolean gst_rtp_opus_depay_setcaps (GstRTPBaseDepayload * depayload, - GstCaps * caps); - -G_DEFINE_TYPE (GstRTPOpusDepay, gst_rtp_opus_depay, - GST_TYPE_RTP_BASE_DEPAYLOAD); - -static void -gst_rtp_opus_depay_class_init (GstRTPOpusDepayClass * klass) -{ - GstRTPBaseDepayloadClass *gstbasertpdepayload_class; - GstElementClass *element_class; - - element_class = GST_ELEMENT_CLASS (klass); - gstbasertpdepayload_class = (GstRTPBaseDepayloadClass *) klass; - - gst_element_class_add_pad_template (element_class, - gst_static_pad_template_get (&gst_rtp_opus_depay_src_template)); - gst_element_class_add_pad_template (element_class, - gst_static_pad_template_get (&gst_rtp_opus_depay_sink_template)); - gst_element_class_set_static_metadata (element_class, - "RTP Opus packet depayloader", "Codec/Depayloader/Network/RTP", - "Extracts Opus audio from RTP packets", - "Danilo Cesar Lemes de Paula "); - - gstbasertpdepayload_class->process = gst_rtp_opus_depay_process; - gstbasertpdepayload_class->set_caps = gst_rtp_opus_depay_setcaps; - - GST_DEBUG_CATEGORY_INIT (rtpopusdepay_debug, "rtpopusdepay", 0, - "Opus RTP Depayloader"); -} - -static void -gst_rtp_opus_depay_init (GstRTPOpusDepay * rtpopusdepay) -{ - -} - -static gboolean -gst_rtp_opus_depay_setcaps (GstRTPBaseDepayload * depayload, GstCaps * caps) -{ - GstCaps *srccaps; - GstStructure *s; - gboolean ret; - const gchar *sprop_stereo, *sprop_maxcapturerate; - - srccaps = - gst_caps_new_simple ("audio/x-opus", "channel-mapping-family", G_TYPE_INT, - 0, NULL); - - s = gst_caps_get_structure (caps, 0); - if ((sprop_stereo = gst_structure_get_string (s, "sprop-stereo"))) { - if (strcmp (sprop_stereo, "0") == 0) - gst_caps_set_simple (srccaps, "channels", G_TYPE_INT, 1, NULL); - else if (strcmp (sprop_stereo, "1") == 0) - gst_caps_set_simple (srccaps, "channels", G_TYPE_INT, 2, NULL); - else - GST_WARNING_OBJECT (depayload, "Unknown sprop-stereo value '%s'", - sprop_stereo); - } - - if ((sprop_maxcapturerate = - gst_structure_get_string (s, "sprop-maxcapturerate"))) { - gulong rate; - gchar *tailptr; - - rate = strtoul (sprop_maxcapturerate, &tailptr, 10); - if (rate > INT_MAX || *tailptr != '\0') { - GST_WARNING_OBJECT (depayload, - "Failed to parse sprop-maxcapturerate value '%s'", - sprop_maxcapturerate); - } else { - gst_caps_set_simple (srccaps, "rate", G_TYPE_INT, rate, NULL); - } - } - - ret = gst_pad_set_caps (GST_RTP_BASE_DEPAYLOAD_SRCPAD (depayload), srccaps); - - GST_DEBUG_OBJECT (depayload, - "set caps on source: %" GST_PTR_FORMAT " (ret=%d)", srccaps, ret); - gst_caps_unref (srccaps); - - depayload->clock_rate = 48000; - - return ret; -} - -static gboolean -foreach_metadata (GstBuffer * inbuf, GstMeta ** meta, gpointer user_data) -{ - GstRTPOpusDepay *depay = user_data; - const GstMetaInfo *info = (*meta)->info; - const gchar *const *tags = gst_meta_api_type_get_tags (info->api); - - if (!tags || (g_strv_length ((gchar **) tags) == 1 - && gst_meta_api_type_has_tag (info->api, - g_quark_from_string (GST_META_TAG_AUDIO_STR)))) { - GST_DEBUG_OBJECT (depay, "keeping metadata %s", g_type_name (info->api)); - } else { - GST_DEBUG_OBJECT (depay, "dropping metadata %s", g_type_name (info->api)); - *meta = NULL; - } - - return TRUE; -} - -static GstBuffer * -gst_rtp_opus_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf) -{ - GstBuffer *outbuf; - GstRTPBuffer rtpbuf = { NULL, }; - - gst_rtp_buffer_map (buf, GST_MAP_READ, &rtpbuf); - outbuf = gst_rtp_buffer_get_payload_buffer (&rtpbuf); - gst_rtp_buffer_unmap (&rtpbuf); - - outbuf = gst_buffer_make_writable (outbuf); - /* Filter away all metas that are not sensible to copy */ - gst_buffer_foreach_meta (outbuf, foreach_metadata, depayload); - - return outbuf; -} diff --git a/ext/opus/gstrtpopusdepay.h b/ext/opus/gstrtpopusdepay.h deleted file mode 100644 index 7890eb19d5..0000000000 --- a/ext/opus/gstrtpopusdepay.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Opus Depayloader Gst Element - * - * @author: Danilo Cesar Lemes de Paula - * - * 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_OPUS_DEPAY_H__ -#define __GST_RTP_OPUS_DEPAY_H__ - -#include -#include - -G_BEGIN_DECLS typedef struct _GstRTPOpusDepay GstRTPOpusDepay; -typedef struct _GstRTPOpusDepayClass GstRTPOpusDepayClass; - -#define GST_TYPE_RTP_OPUS_DEPAY \ - (gst_rtp_opus_depay_get_type()) -#define GST_RTP_OPUS_DEPAY(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_RTP_OPUS_DEPAY,GstRTPOpusDepay)) -#define GST_RTP_OPUS_DEPAY_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_RTP_OPUS_DEPAY,GstRTPOpusDepayClass)) -#define GST_IS_RTP_OPUS_DEPAY(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_RTP_OPUS_DEPAY)) -#define GST_IS_RTP_OPUS_DEPAY_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RTP_OPUS_DEPAY)) - - -struct _GstRTPOpusDepay -{ - GstRTPBaseDepayload depayload; - -}; - -struct _GstRTPOpusDepayClass -{ - GstRTPBaseDepayloadClass parent_class; -}; - -GType gst_rtp_opus_depay_get_type (void); - -G_END_DECLS -#endif /* __GST_RTP_OPUS_DEPAY_H__ */ diff --git a/ext/opus/gstrtpopuspay.c b/ext/opus/gstrtpopuspay.c deleted file mode 100644 index 5038028b12..0000000000 --- a/ext/opus/gstrtpopuspay.c +++ /dev/null @@ -1,278 +0,0 @@ -/* - * Opus Payloader Gst Element - * - * @author: Danilo Cesar Lemes de Paula - * - * 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. - */ - -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include - -#include -#include - -#include "gstrtpopuspay.h" - -GST_DEBUG_CATEGORY_STATIC (rtpopuspay_debug); -#define GST_CAT_DEFAULT (rtpopuspay_debug) - - -static GstStaticPadTemplate gst_rtp_opus_pay_sink_template = -GST_STATIC_PAD_TEMPLATE ("sink", - GST_PAD_SINK, - GST_PAD_ALWAYS, - GST_STATIC_CAPS - ("audio/x-opus, channels = (int) [1, 2], channel-mapping-family = (int) 0") - ); - -static GstStaticPadTemplate gst_rtp_opus_pay_src_template = -GST_STATIC_PAD_TEMPLATE ("src", - GST_PAD_SRC, - GST_PAD_ALWAYS, - GST_STATIC_CAPS ("application/x-rtp, " - "media = (string) \"audio\", " - "payload = (int) " GST_RTP_PAYLOAD_DYNAMIC_STRING ", " - "clock-rate = (int) 48000, " - "encoding-params = (string) \"2\", " - "encoding-name = (string) { \"OPUS\", \"X-GST-OPUS-DRAFT-SPITTKA-00\" }") - ); - -static gboolean gst_rtp_opus_pay_setcaps (GstRTPBasePayload * payload, - GstCaps * caps); -static GstCaps *gst_rtp_opus_pay_getcaps (GstRTPBasePayload * payload, - GstPad * pad, GstCaps * filter); -static GstFlowReturn gst_rtp_opus_pay_handle_buffer (GstRTPBasePayload * - payload, GstBuffer * buffer); - -G_DEFINE_TYPE (GstRtpOPUSPay, gst_rtp_opus_pay, GST_TYPE_RTP_BASE_PAYLOAD); - -static void -gst_rtp_opus_pay_class_init (GstRtpOPUSPayClass * klass) -{ - GstRTPBasePayloadClass *gstbasertppayload_class; - GstElementClass *element_class; - - gstbasertppayload_class = (GstRTPBasePayloadClass *) klass; - element_class = GST_ELEMENT_CLASS (klass); - - gstbasertppayload_class->set_caps = gst_rtp_opus_pay_setcaps; - gstbasertppayload_class->get_caps = gst_rtp_opus_pay_getcaps; - gstbasertppayload_class->handle_buffer = gst_rtp_opus_pay_handle_buffer; - - gst_element_class_add_pad_template (element_class, - gst_static_pad_template_get (&gst_rtp_opus_pay_src_template)); - gst_element_class_add_pad_template (element_class, - gst_static_pad_template_get (&gst_rtp_opus_pay_sink_template)); - - gst_element_class_set_static_metadata (element_class, - "RTP Opus payloader", - "Codec/Payloader/Network/RTP", - "Puts Opus audio in RTP packets", - "Danilo Cesar Lemes de Paula "); - - GST_DEBUG_CATEGORY_INIT (rtpopuspay_debug, "rtpopuspay", 0, - "Opus RTP Payloader"); -} - -static void -gst_rtp_opus_pay_init (GstRtpOPUSPay * rtpopuspay) -{ -} - -static gboolean -gst_rtp_opus_pay_setcaps (GstRTPBasePayload * payload, GstCaps * caps) -{ - gboolean res; - GstCaps *src_caps; - GstStructure *s; - char *encoding_name; - gint channels, rate; - const char *sprop_stereo = NULL; - char *sprop_maxcapturerate = NULL; - - src_caps = gst_pad_get_allowed_caps (GST_RTP_BASE_PAYLOAD_SRCPAD (payload)); - if (src_caps) { - src_caps = gst_caps_make_writable (src_caps); - src_caps = gst_caps_truncate (src_caps); - s = gst_caps_get_structure (src_caps, 0); - gst_structure_fixate_field_string (s, "encoding-name", "OPUS"); - encoding_name = g_strdup (gst_structure_get_string (s, "encoding-name")); - gst_caps_unref (src_caps); - } else { - encoding_name = g_strdup ("X-GST-OPUS-DRAFT-SPITTKA-00"); - } - - s = gst_caps_get_structure (caps, 0); - if (gst_structure_get_int (s, "channels", &channels)) { - if (channels > 2) { - GST_ERROR_OBJECT (payload, - "More than 2 channels with channel-mapping-family=0 is invalid"); - return FALSE; - } else if (channels == 2) { - sprop_stereo = "1"; - } else { - sprop_stereo = "0"; - } - } - - if (gst_structure_get_int (s, "rate", &rate)) { - sprop_maxcapturerate = g_strdup_printf ("%d", rate); - } - - gst_rtp_base_payload_set_options (payload, "audio", FALSE, - encoding_name, 48000); - g_free (encoding_name); - - if (sprop_maxcapturerate && sprop_stereo) { - res = - gst_rtp_base_payload_set_outcaps (payload, "sprop-maxcapturerate", - G_TYPE_STRING, sprop_maxcapturerate, "sprop-stereo", G_TYPE_STRING, - sprop_stereo, NULL); - } else if (sprop_maxcapturerate) { - res = - gst_rtp_base_payload_set_outcaps (payload, "sprop-maxcapturerate", - G_TYPE_STRING, sprop_maxcapturerate, NULL); - } else if (sprop_stereo) { - res = - gst_rtp_base_payload_set_outcaps (payload, "sprop-stereo", - G_TYPE_STRING, sprop_stereo, NULL); - } else { - res = gst_rtp_base_payload_set_outcaps (payload, NULL); - } - - g_free (sprop_maxcapturerate); - - return res; -} - -typedef struct -{ - GstRtpOPUSPay *pay; - GstBuffer *outbuf; -} CopyMetaData; - -static gboolean -foreach_metadata (GstBuffer * inbuf, GstMeta ** meta, gpointer user_data) -{ - CopyMetaData *data = user_data; - GstRtpOPUSPay *pay = data->pay; - GstBuffer *outbuf = data->outbuf; - const GstMetaInfo *info = (*meta)->info; - const gchar *const *tags = gst_meta_api_type_get_tags (info->api); - - if (!tags || (g_strv_length ((gchar **) tags) == 1 - && gst_meta_api_type_has_tag (info->api, - g_quark_from_string (GST_META_TAG_AUDIO_STR)))) { - GstMetaTransformCopy copy_data = { FALSE, 0, -1 }; - GST_DEBUG_OBJECT (pay, "copy metadata %s", g_type_name (info->api)); - /* simply copy then */ - info->transform_func (outbuf, *meta, inbuf, - _gst_meta_transform_copy, ©_data); - } else { - GST_DEBUG_OBJECT (pay, "not copying metadata %s", g_type_name (info->api)); - } - - return TRUE; -} - -static GstFlowReturn -gst_rtp_opus_pay_handle_buffer (GstRTPBasePayload * basepayload, - GstBuffer * buffer) -{ - GstBuffer *outbuf; - GstClockTime pts, dts, duration; - CopyMetaData data; - - pts = GST_BUFFER_PTS (buffer); - dts = GST_BUFFER_DTS (buffer); - duration = GST_BUFFER_DURATION (buffer); - - outbuf = gst_rtp_buffer_new_allocate (0, 0, 0); - data.pay = GST_RTP_OPUS_PAY (basepayload); - data.outbuf = outbuf; - gst_buffer_foreach_meta (buffer, foreach_metadata, &data); - outbuf = gst_buffer_append (outbuf, buffer); - - GST_BUFFER_PTS (outbuf) = pts; - GST_BUFFER_DTS (outbuf) = dts; - GST_BUFFER_DURATION (outbuf) = duration; - - /* Push out */ - return gst_rtp_base_payload_push (basepayload, outbuf); -} - -static GstCaps * -gst_rtp_opus_pay_getcaps (GstRTPBasePayload * payload, - GstPad * pad, GstCaps * filter) -{ - GstCaps *caps, *peercaps, *tcaps; - GstStructure *s; - const gchar *stereo; - - if (pad == GST_RTP_BASE_PAYLOAD_SRCPAD (payload)) - return - GST_RTP_BASE_PAYLOAD_CLASS (gst_rtp_opus_pay_parent_class)->get_caps - (payload, pad, filter); - - tcaps = gst_pad_get_pad_template_caps (GST_RTP_BASE_PAYLOAD_SRCPAD (payload)); - peercaps = gst_pad_peer_query_caps (GST_RTP_BASE_PAYLOAD_SRCPAD (payload), - tcaps); - gst_caps_unref (tcaps); - if (!peercaps) - return - GST_RTP_BASE_PAYLOAD_CLASS (gst_rtp_opus_pay_parent_class)->get_caps - (payload, pad, filter); - - if (gst_caps_is_empty (peercaps)) - return peercaps; - - caps = gst_pad_get_pad_template_caps (GST_RTP_BASE_PAYLOAD_SINKPAD (payload)); - - s = gst_caps_get_structure (peercaps, 0); - stereo = gst_structure_get_string (s, "stereo"); - if (stereo != NULL) { - caps = gst_caps_make_writable (caps); - - if (!strcmp (stereo, "1")) { - GstCaps *caps2 = gst_caps_copy (caps); - - gst_caps_set_simple (caps, "channels", G_TYPE_INT, 2, NULL); - gst_caps_set_simple (caps2, "channels", G_TYPE_INT, 1, NULL); - caps = gst_caps_merge (caps, caps2); - } else if (!strcmp (stereo, "0")) { - GstCaps *caps2 = gst_caps_copy (caps); - - gst_caps_set_simple (caps, "channels", G_TYPE_INT, 1, NULL); - gst_caps_set_simple (caps2, "channels", G_TYPE_INT, 2, NULL); - caps = gst_caps_merge (caps, caps2); - } - } - gst_caps_unref (peercaps); - - if (filter) { - GstCaps *tmp = gst_caps_intersect_full (caps, filter, - GST_CAPS_INTERSECT_FIRST); - gst_caps_unref (caps); - caps = tmp; - } - - GST_DEBUG_OBJECT (payload, "Returning caps: %" GST_PTR_FORMAT, caps); - return caps; -} diff --git a/ext/opus/gstrtpopuspay.h b/ext/opus/gstrtpopuspay.h deleted file mode 100644 index e21bbe3c38..0000000000 --- a/ext/opus/gstrtpopuspay.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Opus Payloader Gst Element - * - * @author: Danilo Cesar Lemes de Paula - * - * 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_OPUS_PAY_H__ -#define __GST_RTP_OPUS_PAY_H__ - -#include -#include - -G_BEGIN_DECLS - -#define GST_TYPE_RTP_OPUS_PAY \ - (gst_rtp_opus_pay_get_type()) -#define GST_RTP_OPUS_PAY(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_RTP_OPUS_PAY,GstRtpOPUSPay)) -#define GST_RTP_OPUS_PAY_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_RTP_OPUS_PAY,GstRtpOPUSPayClass)) -#define GST_IS_RTP_OPUS_PAY(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_RTP_OPUS_PAY)) -#define GST_IS_RTP_OPUS_PAY_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RTP_OPUS_PAY)) - -typedef struct _GstRtpOPUSPay GstRtpOPUSPay; -typedef struct _GstRtpOPUSPayClass GstRtpOPUSPayClass; - -struct _GstRtpOPUSPay -{ - GstRTPBasePayload payload; -}; - -struct _GstRtpOPUSPayClass -{ - GstRTPBasePayloadClass parent_class; -}; - -GType gst_rtp_opus_pay_get_type (void); - -G_END_DECLS - -#endif /* __GST_RTP_OPUS_PAY_H__ */