summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim-Philipp Müller <tim@centricular.com>2017-05-24 16:14:54 +0100
committerTim-Philipp Müller <tim@centricular.com>2017-05-24 16:18:01 +0100
commitf9a740b319a851b6f5f170bff78538d874a97cb2 (patch)
treebfaa9a97f42ac369f85c3ce5322e108150636fa9
parent4a28e649c3cd45969e9a5d0cef128dcf48107d60 (diff)
rtp: opus: use existing utility funcs for copying/dropping metas
We had our own copies of those while the code was in -bad, but now we can use the existing utility functions instead of re-implementing them.
-rw-r--r--gst/rtp/gstrtpopusdepay.c23
-rw-r--r--gst/rtp/gstrtpopuspay.c38
2 files changed, 6 insertions, 55 deletions
diff --git a/gst/rtp/gstrtpopusdepay.c b/gst/rtp/gstrtpopusdepay.c
index afa6ba7e5..293371f48 100644
--- a/gst/rtp/gstrtpopusdepay.c
+++ b/gst/rtp/gstrtpopusdepay.c
@@ -28,6 +28,7 @@
#include <gst/rtp/gstrtpbuffer.h>
#include <gst/audio/audio.h>
#include "gstrtpopusdepay.h"
+#include "gstrtputils.h"
GST_DEBUG_CATEGORY_STATIC (rtpopusdepay_debug);
#define GST_CAT_DEFAULT (rtpopusdepay_debug)
@@ -138,25 +139,6 @@ gst_rtp_opus_depay_setcaps (GstRTPBaseDepayload * depayload, GstCaps * caps)
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)
{
@@ -168,8 +150,7 @@ gst_rtp_opus_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
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);
+ gst_rtp_drop_non_audio_meta (depayload, outbuf);
return outbuf;
}
diff --git a/gst/rtp/gstrtpopuspay.c b/gst/rtp/gstrtpopuspay.c
index 1a6eb805a..b61088565 100644
--- a/gst/rtp/gstrtpopuspay.c
+++ b/gst/rtp/gstrtpopuspay.c
@@ -29,6 +29,7 @@
#include <gst/audio/audio.h>
#include "gstrtpopuspay.h"
+#include "gstrtputils.h"
GST_DEBUG_CATEGORY_STATIC (rtpopuspay_debug);
#define GST_CAT_DEFAULT (rtpopuspay_debug)
@@ -162,52 +163,21 @@ gst_rtp_opus_pay_setcaps (GstRTPBasePayload * payload, GstCaps * caps)
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, &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);
+
+ gst_rtp_copy_audio_meta (basepayload, outbuf, buffer);
+
outbuf = gst_buffer_append (outbuf, buffer);
GST_BUFFER_PTS (outbuf) = pts;