gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
/* GStreamer
|
|
|
|
* Copyright (C) <2008> Wim Taymans <wim.taymans@gmail.com>
|
|
|
|
*
|
|
|
|
* This library is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU Library General Public
|
|
|
|
* License as published by the Free Software Foundation; either
|
|
|
|
* version 2 of the License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This library is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
* Library General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU Library General Public
|
|
|
|
* License along with this library; if not, write to the
|
2012-11-04 00:07:18 +00:00
|
|
|
* Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
|
|
|
|
* Boston, MA 02110-1301, USA.
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
#ifdef HAVE_CONFIG_H
|
|
|
|
# include "config.h"
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#include <string.h>
|
|
|
|
|
|
|
|
#include <gst/rtp/gstrtpbuffer.h>
|
2015-08-04 17:59:17 +00:00
|
|
|
#include <gst/audio/audio.h>
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
|
|
|
|
#include "gstrtpmp4apay.h"
|
2015-08-04 17:59:17 +00:00
|
|
|
#include "gstrtputils.h"
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
|
|
|
|
GST_DEBUG_CATEGORY_STATIC (rtpmp4apay_debug);
|
|
|
|
#define GST_CAT_DEFAULT (rtpmp4apay_debug)
|
|
|
|
|
2009-03-25 01:22:17 +00:00
|
|
|
/* FIXME: add framed=(boolean)true once our encoders have this field set
|
|
|
|
* on their output caps */
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
static GstStaticPadTemplate gst_rtp_mp4a_pay_sink_template =
|
|
|
|
GST_STATIC_PAD_TEMPLATE ("sink",
|
|
|
|
GST_PAD_SINK,
|
|
|
|
GST_PAD_ALWAYS,
|
2010-01-11 17:48:26 +00:00
|
|
|
GST_STATIC_CAPS ("audio/mpeg, mpegversion=(int)4, "
|
|
|
|
"stream-format=(string)raw")
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
);
|
|
|
|
|
|
|
|
static GstStaticPadTemplate gst_rtp_mp4a_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) [1, MAX ], "
|
|
|
|
"encoding-name = (string) \"MP4A-LATM\""
|
|
|
|
/* All optional parameters
|
|
|
|
*
|
|
|
|
* "cpresent = (string) \"0\""
|
|
|
|
* "config="
|
|
|
|
*/
|
|
|
|
)
|
|
|
|
);
|
|
|
|
|
|
|
|
static void gst_rtp_mp4a_pay_finalize (GObject * object);
|
|
|
|
|
2011-11-11 11:25:01 +00:00
|
|
|
static gboolean gst_rtp_mp4a_pay_setcaps (GstRTPBasePayload * payload,
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
GstCaps * caps);
|
2011-11-11 11:25:01 +00:00
|
|
|
static GstFlowReturn gst_rtp_mp4a_pay_handle_buffer (GstRTPBasePayload *
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
payload, GstBuffer * buffer);
|
|
|
|
|
2011-07-10 19:50:19 +00:00
|
|
|
#define gst_rtp_mp4a_pay_parent_class parent_class
|
2011-11-11 11:25:01 +00:00
|
|
|
G_DEFINE_TYPE (GstRtpMP4APay, gst_rtp_mp4a_pay, GST_TYPE_RTP_BASE_PAYLOAD)
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
|
2011-07-10 19:50:19 +00:00
|
|
|
static void gst_rtp_mp4a_pay_class_init (GstRtpMP4APayClass * klass)
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
{
|
|
|
|
GObjectClass *gobject_class;
|
2011-07-10 19:50:19 +00:00
|
|
|
GstElementClass *gstelement_class;
|
2011-11-11 11:25:01 +00:00
|
|
|
GstRTPBasePayloadClass *gstrtpbasepayload_class;
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
|
|
|
|
gobject_class = (GObjectClass *) klass;
|
2011-07-10 19:50:19 +00:00
|
|
|
gstelement_class = (GstElementClass *) klass;
|
2011-11-11 11:25:01 +00:00
|
|
|
gstrtpbasepayload_class = (GstRTPBasePayloadClass *) klass;
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
|
|
|
|
gobject_class->finalize = gst_rtp_mp4a_pay_finalize;
|
|
|
|
|
2011-11-11 11:25:01 +00:00
|
|
|
gstrtpbasepayload_class->set_caps = gst_rtp_mp4a_pay_setcaps;
|
|
|
|
gstrtpbasepayload_class->handle_buffer = gst_rtp_mp4a_pay_handle_buffer;
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
|
2016-03-04 01:30:12 +00:00
|
|
|
gst_element_class_add_static_pad_template (gstelement_class,
|
|
|
|
&gst_rtp_mp4a_pay_src_template);
|
|
|
|
gst_element_class_add_static_pad_template (gstelement_class,
|
|
|
|
&gst_rtp_mp4a_pay_sink_template);
|
2011-07-10 19:50:19 +00:00
|
|
|
|
2012-04-09 23:51:41 +00:00
|
|
|
gst_element_class_set_static_metadata (gstelement_class,
|
2011-07-10 19:50:19 +00:00
|
|
|
"RTP MPEG4 audio payloader", "Codec/Payloader/Network/RTP",
|
|
|
|
"Payload MPEG4 audio as RTP packets (RFC 3016)",
|
|
|
|
"Wim Taymans <wim.taymans@gmail.com>");
|
|
|
|
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
GST_DEBUG_CATEGORY_INIT (rtpmp4apay_debug, "rtpmp4apay", 0,
|
|
|
|
"MP4A-LATM RTP Payloader");
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2011-07-10 19:50:19 +00:00
|
|
|
gst_rtp_mp4a_pay_init (GstRtpMP4APay * rtpmp4apay)
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
{
|
|
|
|
rtpmp4apay->rate = 90000;
|
|
|
|
rtpmp4apay->profile = g_strdup ("1");
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
gst_rtp_mp4a_pay_finalize (GObject * object)
|
|
|
|
{
|
|
|
|
GstRtpMP4APay *rtpmp4apay;
|
|
|
|
|
|
|
|
rtpmp4apay = GST_RTP_MP4A_PAY (object);
|
|
|
|
|
|
|
|
g_free (rtpmp4apay->params);
|
|
|
|
rtpmp4apay->params = NULL;
|
|
|
|
|
|
|
|
if (rtpmp4apay->config)
|
|
|
|
gst_buffer_unref (rtpmp4apay->config);
|
|
|
|
rtpmp4apay->config = NULL;
|
|
|
|
|
|
|
|
g_free (rtpmp4apay->profile);
|
|
|
|
rtpmp4apay->profile = NULL;
|
|
|
|
|
|
|
|
G_OBJECT_CLASS (parent_class)->finalize (object);
|
|
|
|
}
|
|
|
|
|
2010-09-06 13:40:02 +00:00
|
|
|
static const unsigned int sampling_table[16] = {
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
96000, 88200, 64000, 48000, 44100, 32000, 24000, 22050,
|
|
|
|
16000, 12000, 11025, 8000, 7350, 0, 0, 0
|
|
|
|
};
|
|
|
|
|
|
|
|
static gboolean
|
|
|
|
gst_rtp_mp4a_pay_parse_audio_config (GstRtpMP4APay * rtpmp4apay,
|
|
|
|
GstBuffer * buffer)
|
|
|
|
{
|
2012-01-23 16:25:37 +00:00
|
|
|
GstMapInfo map;
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
guint8 *data;
|
2011-07-10 19:50:19 +00:00
|
|
|
gsize size;
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
guint8 objectType;
|
|
|
|
guint8 samplingIdx;
|
|
|
|
guint8 channelCfg;
|
|
|
|
|
2012-01-23 16:25:37 +00:00
|
|
|
gst_buffer_map (buffer, &map, GST_MAP_READ);
|
|
|
|
data = map.data;
|
|
|
|
size = map.size;
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
|
|
|
|
if (size < 2)
|
|
|
|
goto too_short;
|
|
|
|
|
|
|
|
/* any object type is fine, we need to copy it to the profile-level-id field. */
|
|
|
|
objectType = (data[0] & 0xf8) >> 3;
|
|
|
|
if (objectType == 0)
|
|
|
|
goto invalid_object;
|
|
|
|
|
|
|
|
samplingIdx = ((data[0] & 0x07) << 1) | ((data[1] & 0x80) >> 7);
|
|
|
|
/* only fixed values for now */
|
|
|
|
if (samplingIdx > 12 && samplingIdx != 15)
|
|
|
|
goto wrong_freq;
|
|
|
|
|
|
|
|
channelCfg = ((data[1] & 0x78) >> 3);
|
|
|
|
if (channelCfg > 7)
|
|
|
|
goto wrong_channels;
|
|
|
|
|
|
|
|
/* rtp rate depends on sampling rate of the audio */
|
|
|
|
if (samplingIdx == 15) {
|
|
|
|
if (size < 5)
|
|
|
|
goto too_short;
|
|
|
|
|
|
|
|
/* index of 15 means we get the rate in the next 24 bits */
|
|
|
|
rtpmp4apay->rate = ((data[1] & 0x7f) << 17) |
|
|
|
|
((data[2]) << 9) | ((data[3]) << 1) | ((data[4] & 0x80) >> 7);
|
|
|
|
} else {
|
|
|
|
/* else use the rate from the table */
|
|
|
|
rtpmp4apay->rate = sampling_table[samplingIdx];
|
|
|
|
}
|
|
|
|
/* extra rtp params contain the number of channels */
|
|
|
|
g_free (rtpmp4apay->params);
|
|
|
|
rtpmp4apay->params = g_strdup_printf ("%d", channelCfg);
|
|
|
|
/* audio stream type */
|
|
|
|
rtpmp4apay->streamtype = "5";
|
|
|
|
/* profile */
|
|
|
|
g_free (rtpmp4apay->profile);
|
|
|
|
rtpmp4apay->profile = g_strdup_printf ("%d", objectType);
|
|
|
|
|
|
|
|
GST_DEBUG_OBJECT (rtpmp4apay,
|
|
|
|
"objectType: %d, samplingIdx: %d (%d), channelCfg: %d", objectType,
|
|
|
|
samplingIdx, rtpmp4apay->rate, channelCfg);
|
|
|
|
|
2012-01-23 16:25:37 +00:00
|
|
|
gst_buffer_unmap (buffer, &map);
|
2011-07-10 19:50:19 +00:00
|
|
|
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
return TRUE;
|
|
|
|
|
|
|
|
/* ERROR */
|
|
|
|
too_short:
|
|
|
|
{
|
|
|
|
GST_ELEMENT_ERROR (rtpmp4apay, STREAM, FORMAT,
|
2011-11-21 19:31:31 +00:00
|
|
|
(NULL),
|
|
|
|
("config string too short, expected 2 bytes, got %" G_GSIZE_FORMAT,
|
|
|
|
size));
|
2012-01-23 16:25:37 +00:00
|
|
|
gst_buffer_unmap (buffer, &map);
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
invalid_object:
|
|
|
|
{
|
|
|
|
GST_ELEMENT_ERROR (rtpmp4apay, STREAM, FORMAT,
|
|
|
|
(NULL), ("invalid object type 0"));
|
2012-01-23 16:25:37 +00:00
|
|
|
gst_buffer_unmap (buffer, &map);
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
wrong_freq:
|
|
|
|
{
|
|
|
|
GST_ELEMENT_ERROR (rtpmp4apay, STREAM, NOT_IMPLEMENTED,
|
|
|
|
(NULL), ("unsupported frequency index %d", samplingIdx));
|
2012-01-23 16:25:37 +00:00
|
|
|
gst_buffer_unmap (buffer, &map);
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
wrong_channels:
|
|
|
|
{
|
|
|
|
GST_ELEMENT_ERROR (rtpmp4apay, STREAM, NOT_IMPLEMENTED,
|
|
|
|
(NULL), ("unsupported number of channels %d, must < 8", channelCfg));
|
2012-01-23 16:25:37 +00:00
|
|
|
gst_buffer_unmap (buffer, &map);
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
gst/rtp/gstrtpL16depay.c: Check if clock-rate and channels are valid.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16_depay_setcaps),
(gst_rtp_L16_depay_process):
Check if clock-rate and channels are valid.
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
Use the marker bit to set the DISCONT flag on outgoing buffers.
* gst/rtp/gstrtpL16pay.c: (gst_rtp_L16_pay_setcaps):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtpac3depay.c: (gst_rtp_ac3_depay_setcaps),
(gst_rtp_ac3_depay_process):
Don't ignore the return value of set_caps.
No need to validate the buffer, the base class does that for us.
* gst/rtp/gstrtpamrdepay.c: (gst_rtp_amr_depay_setcaps),
(gst_rtp_amr_depay_process):
* gst/rtp/gstrtpamrdepay.h:
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
No need to set output caps on the buffers, the base class does that for
us.
The subclass will make sure we are negotiated.
* gst/rtp/gstrtpdvdepay.c: (gst_rtp_dv_depay_setcaps),
(gst_rtp_dv_depay_process), (gst_rtp_dv_depay_reset):
* gst/rtp/gstrtpdvdepay.h:
Clean up caps negotiation.
The subclass will make sure we are negotiated.
* gst/rtp/gstrtpg726depay.c: (gst_rtp_g726_depay_setcaps),
(gst_rtp_g726_depay_process):
Clean up caps negotiation.
Use the marker bit to set the DISCONT flag on outgoing buffers.
* gst/rtp/gstrtpg729depay.c: (gst_rtp_g729_depay_init),
(gst_rtp_g729_depay_setcaps), (gst_rtp_g729_depay_process):
* gst/rtp/gstrtpg729depay.h:
The subclass will make sure we are negotiated.
Use the marker bit to set the DISCONT flag on outgoing buffers.
* gst/rtp/gstrtpgsmdepay.c: (gst_rtp_gsm_depay_setcaps),
(gst_rtp_gsm_depay_process):
Clean up caps negotiation.
Use the marker bit to set the DISCONT flag on outgoing buffers.
* gst/rtp/gstrtpgsmpay.c: (gst_rtp_gsm_pay_setcaps):
Clean up caps negotiation.
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtph263depay.c: (gst_rtp_h263_depay_setcaps),
(gst_rtp_h263_depay_process):
Clean up caps negotiation.
No need to validate the buffer, the base class does that for us.
* gst/rtp/gstrtph263pay.c: (gst_rtp_h263_pay_setcaps),
(gst_rtp_h263_pay_flush), (gst_rtp_h263_pay_handle_buffer):
* gst/rtp/gstrtph263pay.h:
Don't ignore the return value of set_outcaps.
Do some more timestamps.
* gst/rtp/gstrtph263pdepay.c: (gst_rtp_h263p_depay_setcaps),
(gst_rtp_h263p_depay_process):
Clean up caps negotiation.
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
* gst/rtp/gstrtph263ppay.c: (gst_rtp_h263p_pay_class_init),
(gst_rtp_h263p_pay_setcaps), (gst_rtp_h263p_pay_flush),
(gst_rtp_h263p_pay_handle_buffer):
* gst/rtp/gstrtph263ppay.h:
Don't ignore the return value of set_outcaps.
Do some more timestamps.
* gst/rtp/gstrtph264depay.c: (gst_rtp_h264_depay_setcaps),
(gst_rtp_h264_depay_process):
Clean up caps negotiation.
Don't ignore the return value of setcaps.
Fix possible caps leak.
No need to validate the buffer, the base class does that for us.
* gst/rtp/gstrtph264pay.c: (gst_rtp_h264_pay_setcaps):
Add some more debug info.
* gst/rtp/gstrtpilbcdepay.c: (gst_rtp_ilbc_depay_setcaps),
(gst_rtp_ilbc_depay_process):
Clean up caps negotiation.
Use the marker bit to set the DISCONT flag on outgoing buffers.
* gst/rtp/gstrtpilbcpay.c: (gst_rtpilbcpay_sink_setcaps):
Clean up caps negotiation.
* gst/rtp/gstrtpmp1sdepay.c: (gst_rtp_mp1s_depay_setcaps),
(gst_rtp_mp1s_depay_process):
Clean up caps negotiation.
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
No need to set caps on buffers, subclass does that for us.
* gst/rtp/gstrtpmp2tdepay.c: (gst_rtp_mp2t_depay_setcaps),
(gst_rtp_mp2t_depay_process):
Clean up caps negotiation.
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
No need to set caps on buffers, subclass does that for us.
* gst/rtp/gstrtpmp4adepay.c: (gst_rtp_mp4a_depay_setcaps),
(gst_rtp_mp4a_depay_process):
Clean up caps negotiation.
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_setcaps),
(gst_rtp_mp4g_depay_process):
Clean up caps negotiation.
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
No need to set caps on buffers, subclass does that for us.
* gst/rtp/gstrtpmp4gpay.c: (gst_rtp_mp4g_pay_finalize),
(gst_rtp_mp4g_pay_new_caps), (gst_rtp_mp4g_pay_setcaps):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtpmp4vdepay.c: (gst_rtp_mp4v_depay_setcaps),
(gst_rtp_mp4v_depay_process):
Clean up caps negotiation.
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
No need to set caps on buffers, subclass does that for us.
* gst/rtp/gstrtpmp4vpay.c: (gst_rtp_mp4v_pay_new_caps),
(gst_rtp_mp4v_pay_setcaps):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtpmpadepay.c: (gst_rtp_mpa_depay_setcaps),
(gst_rtp_mpa_depay_process):
Clean up caps negotiation.
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
Use the marker bit to set the DISCONT flag on outgoing buffers.
* gst/rtp/gstrtpmpapay.c: (gst_rtp_mpa_pay_setcaps):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtpmpvdepay.c: (gst_rtp_mpv_depay_setcaps),
(gst_rtp_mpv_depay_process):
Clean up caps negotiation.
Actually set output caps.
No need to validate the buffer, the base class does that for us.
* gst/rtp/gstrtpmpvpay.c: (gst_rtp_mpv_pay_setcaps):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtppcmadepay.c: (gst_rtp_pcma_depay_setcaps),
(gst_rtp_pcma_depay_process):
Clean up caps negotiation.
Set output buffer duration because we can.
Use the marker bit to set the DISCONT flag on outgoing buffers.
* gst/rtp/gstrtppcmapay.c: (gst_rtp_pcma_pay_setcaps):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtppcmudepay.c: (gst_rtp_pcmu_depay_setcaps),
(gst_rtp_pcmu_depay_process):
Clean up caps negotiation.
Use the marker bit to set the DISCONT flag on outgoing buffers.
* gst/rtp/gstrtppcmupay.c: (gst_rtp_pcmu_pay_setcaps):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtpspeexdepay.c: (gst_rtp_speex_depay_init),
(gst_rtp_speex_depay_setcaps), (gst_rtp_speex_depay_process):
Clean up caps negotiation.
Set output caps on the pad and header buffers.
Set duration on output buffers because we can.
* gst/rtp/gstrtpspeexpay.c: (gst_rtp_speex_pay_parse_ident):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtpsv3vdepay.c: (gst_rtp_sv3v_depay_setcaps),
(gst_rtp_sv3v_depay_process):
Clean up caps negotiation.
No need to validate the buffer, the base class does that for us.
No need to set caps out output buffers, subclass does that.
* gst/rtp/gstrtptheoradepay.c: (gst_rtp_theora_depay_setcaps),
(gst_rtp_theora_depay_process):
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
* gst/rtp/gstrtptheorapay.c: (gst_rtp_theora_pay_class_init),
(gst_rtp_theora_pay_flush_packet), (encode_base64),
(gst_rtp_theora_pay_finish_headers), (gst_rtp_theora_pay_parse_id),
(gst_rtp_theora_pay_handle_buffer):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process):
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_finish_headers):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtpvrawdepay.c: (gst_rtp_vraw_depay_setcaps):
Clean up caps negotiation, don't ignore setcaps return.
* gst/rtp/gstrtpvrawpay.c: (gst_rtp_vraw_pay_setcaps):
Don't ignore the return value of set_outcaps.
2008-10-27 11:03:53 +00:00
|
|
|
static gboolean
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
gst_rtp_mp4a_pay_new_caps (GstRtpMP4APay * rtpmp4apay)
|
|
|
|
{
|
|
|
|
gchar *config;
|
|
|
|
GValue v = { 0 };
|
gst/rtp/gstrtpL16depay.c: Check if clock-rate and channels are valid.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16_depay_setcaps),
(gst_rtp_L16_depay_process):
Check if clock-rate and channels are valid.
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
Use the marker bit to set the DISCONT flag on outgoing buffers.
* gst/rtp/gstrtpL16pay.c: (gst_rtp_L16_pay_setcaps):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtpac3depay.c: (gst_rtp_ac3_depay_setcaps),
(gst_rtp_ac3_depay_process):
Don't ignore the return value of set_caps.
No need to validate the buffer, the base class does that for us.
* gst/rtp/gstrtpamrdepay.c: (gst_rtp_amr_depay_setcaps),
(gst_rtp_amr_depay_process):
* gst/rtp/gstrtpamrdepay.h:
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
No need to set output caps on the buffers, the base class does that for
us.
The subclass will make sure we are negotiated.
* gst/rtp/gstrtpdvdepay.c: (gst_rtp_dv_depay_setcaps),
(gst_rtp_dv_depay_process), (gst_rtp_dv_depay_reset):
* gst/rtp/gstrtpdvdepay.h:
Clean up caps negotiation.
The subclass will make sure we are negotiated.
* gst/rtp/gstrtpg726depay.c: (gst_rtp_g726_depay_setcaps),
(gst_rtp_g726_depay_process):
Clean up caps negotiation.
Use the marker bit to set the DISCONT flag on outgoing buffers.
* gst/rtp/gstrtpg729depay.c: (gst_rtp_g729_depay_init),
(gst_rtp_g729_depay_setcaps), (gst_rtp_g729_depay_process):
* gst/rtp/gstrtpg729depay.h:
The subclass will make sure we are negotiated.
Use the marker bit to set the DISCONT flag on outgoing buffers.
* gst/rtp/gstrtpgsmdepay.c: (gst_rtp_gsm_depay_setcaps),
(gst_rtp_gsm_depay_process):
Clean up caps negotiation.
Use the marker bit to set the DISCONT flag on outgoing buffers.
* gst/rtp/gstrtpgsmpay.c: (gst_rtp_gsm_pay_setcaps):
Clean up caps negotiation.
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtph263depay.c: (gst_rtp_h263_depay_setcaps),
(gst_rtp_h263_depay_process):
Clean up caps negotiation.
No need to validate the buffer, the base class does that for us.
* gst/rtp/gstrtph263pay.c: (gst_rtp_h263_pay_setcaps),
(gst_rtp_h263_pay_flush), (gst_rtp_h263_pay_handle_buffer):
* gst/rtp/gstrtph263pay.h:
Don't ignore the return value of set_outcaps.
Do some more timestamps.
* gst/rtp/gstrtph263pdepay.c: (gst_rtp_h263p_depay_setcaps),
(gst_rtp_h263p_depay_process):
Clean up caps negotiation.
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
* gst/rtp/gstrtph263ppay.c: (gst_rtp_h263p_pay_class_init),
(gst_rtp_h263p_pay_setcaps), (gst_rtp_h263p_pay_flush),
(gst_rtp_h263p_pay_handle_buffer):
* gst/rtp/gstrtph263ppay.h:
Don't ignore the return value of set_outcaps.
Do some more timestamps.
* gst/rtp/gstrtph264depay.c: (gst_rtp_h264_depay_setcaps),
(gst_rtp_h264_depay_process):
Clean up caps negotiation.
Don't ignore the return value of setcaps.
Fix possible caps leak.
No need to validate the buffer, the base class does that for us.
* gst/rtp/gstrtph264pay.c: (gst_rtp_h264_pay_setcaps):
Add some more debug info.
* gst/rtp/gstrtpilbcdepay.c: (gst_rtp_ilbc_depay_setcaps),
(gst_rtp_ilbc_depay_process):
Clean up caps negotiation.
Use the marker bit to set the DISCONT flag on outgoing buffers.
* gst/rtp/gstrtpilbcpay.c: (gst_rtpilbcpay_sink_setcaps):
Clean up caps negotiation.
* gst/rtp/gstrtpmp1sdepay.c: (gst_rtp_mp1s_depay_setcaps),
(gst_rtp_mp1s_depay_process):
Clean up caps negotiation.
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
No need to set caps on buffers, subclass does that for us.
* gst/rtp/gstrtpmp2tdepay.c: (gst_rtp_mp2t_depay_setcaps),
(gst_rtp_mp2t_depay_process):
Clean up caps negotiation.
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
No need to set caps on buffers, subclass does that for us.
* gst/rtp/gstrtpmp4adepay.c: (gst_rtp_mp4a_depay_setcaps),
(gst_rtp_mp4a_depay_process):
Clean up caps negotiation.
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_setcaps),
(gst_rtp_mp4g_depay_process):
Clean up caps negotiation.
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
No need to set caps on buffers, subclass does that for us.
* gst/rtp/gstrtpmp4gpay.c: (gst_rtp_mp4g_pay_finalize),
(gst_rtp_mp4g_pay_new_caps), (gst_rtp_mp4g_pay_setcaps):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtpmp4vdepay.c: (gst_rtp_mp4v_depay_setcaps),
(gst_rtp_mp4v_depay_process):
Clean up caps negotiation.
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
No need to set caps on buffers, subclass does that for us.
* gst/rtp/gstrtpmp4vpay.c: (gst_rtp_mp4v_pay_new_caps),
(gst_rtp_mp4v_pay_setcaps):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtpmpadepay.c: (gst_rtp_mpa_depay_setcaps),
(gst_rtp_mpa_depay_process):
Clean up caps negotiation.
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
Use the marker bit to set the DISCONT flag on outgoing buffers.
* gst/rtp/gstrtpmpapay.c: (gst_rtp_mpa_pay_setcaps):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtpmpvdepay.c: (gst_rtp_mpv_depay_setcaps),
(gst_rtp_mpv_depay_process):
Clean up caps negotiation.
Actually set output caps.
No need to validate the buffer, the base class does that for us.
* gst/rtp/gstrtpmpvpay.c: (gst_rtp_mpv_pay_setcaps):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtppcmadepay.c: (gst_rtp_pcma_depay_setcaps),
(gst_rtp_pcma_depay_process):
Clean up caps negotiation.
Set output buffer duration because we can.
Use the marker bit to set the DISCONT flag on outgoing buffers.
* gst/rtp/gstrtppcmapay.c: (gst_rtp_pcma_pay_setcaps):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtppcmudepay.c: (gst_rtp_pcmu_depay_setcaps),
(gst_rtp_pcmu_depay_process):
Clean up caps negotiation.
Use the marker bit to set the DISCONT flag on outgoing buffers.
* gst/rtp/gstrtppcmupay.c: (gst_rtp_pcmu_pay_setcaps):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtpspeexdepay.c: (gst_rtp_speex_depay_init),
(gst_rtp_speex_depay_setcaps), (gst_rtp_speex_depay_process):
Clean up caps negotiation.
Set output caps on the pad and header buffers.
Set duration on output buffers because we can.
* gst/rtp/gstrtpspeexpay.c: (gst_rtp_speex_pay_parse_ident):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtpsv3vdepay.c: (gst_rtp_sv3v_depay_setcaps),
(gst_rtp_sv3v_depay_process):
Clean up caps negotiation.
No need to validate the buffer, the base class does that for us.
No need to set caps out output buffers, subclass does that.
* gst/rtp/gstrtptheoradepay.c: (gst_rtp_theora_depay_setcaps),
(gst_rtp_theora_depay_process):
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
* gst/rtp/gstrtptheorapay.c: (gst_rtp_theora_pay_class_init),
(gst_rtp_theora_pay_flush_packet), (encode_base64),
(gst_rtp_theora_pay_finish_headers), (gst_rtp_theora_pay_parse_id),
(gst_rtp_theora_pay_handle_buffer):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process):
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_finish_headers):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtpvrawdepay.c: (gst_rtp_vraw_depay_setcaps):
Clean up caps negotiation, don't ignore setcaps return.
* gst/rtp/gstrtpvrawpay.c: (gst_rtp_vraw_pay_setcaps):
Don't ignore the return value of set_outcaps.
2008-10-27 11:03:53 +00:00
|
|
|
gboolean res;
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
|
|
|
|
g_value_init (&v, GST_TYPE_BUFFER);
|
|
|
|
gst_value_set_buffer (&v, rtpmp4apay->config);
|
|
|
|
config = gst_value_serialize (&v);
|
|
|
|
|
2011-11-11 11:25:01 +00:00
|
|
|
res = gst_rtp_base_payload_set_outcaps (GST_RTP_BASE_PAYLOAD (rtpmp4apay),
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
"cpresent", G_TYPE_STRING, "0", "config", G_TYPE_STRING, config, NULL);
|
|
|
|
|
|
|
|
g_value_unset (&v);
|
|
|
|
g_free (config);
|
gst/rtp/gstrtpL16depay.c: Check if clock-rate and channels are valid.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16_depay_setcaps),
(gst_rtp_L16_depay_process):
Check if clock-rate and channels are valid.
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
Use the marker bit to set the DISCONT flag on outgoing buffers.
* gst/rtp/gstrtpL16pay.c: (gst_rtp_L16_pay_setcaps):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtpac3depay.c: (gst_rtp_ac3_depay_setcaps),
(gst_rtp_ac3_depay_process):
Don't ignore the return value of set_caps.
No need to validate the buffer, the base class does that for us.
* gst/rtp/gstrtpamrdepay.c: (gst_rtp_amr_depay_setcaps),
(gst_rtp_amr_depay_process):
* gst/rtp/gstrtpamrdepay.h:
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
No need to set output caps on the buffers, the base class does that for
us.
The subclass will make sure we are negotiated.
* gst/rtp/gstrtpdvdepay.c: (gst_rtp_dv_depay_setcaps),
(gst_rtp_dv_depay_process), (gst_rtp_dv_depay_reset):
* gst/rtp/gstrtpdvdepay.h:
Clean up caps negotiation.
The subclass will make sure we are negotiated.
* gst/rtp/gstrtpg726depay.c: (gst_rtp_g726_depay_setcaps),
(gst_rtp_g726_depay_process):
Clean up caps negotiation.
Use the marker bit to set the DISCONT flag on outgoing buffers.
* gst/rtp/gstrtpg729depay.c: (gst_rtp_g729_depay_init),
(gst_rtp_g729_depay_setcaps), (gst_rtp_g729_depay_process):
* gst/rtp/gstrtpg729depay.h:
The subclass will make sure we are negotiated.
Use the marker bit to set the DISCONT flag on outgoing buffers.
* gst/rtp/gstrtpgsmdepay.c: (gst_rtp_gsm_depay_setcaps),
(gst_rtp_gsm_depay_process):
Clean up caps negotiation.
Use the marker bit to set the DISCONT flag on outgoing buffers.
* gst/rtp/gstrtpgsmpay.c: (gst_rtp_gsm_pay_setcaps):
Clean up caps negotiation.
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtph263depay.c: (gst_rtp_h263_depay_setcaps),
(gst_rtp_h263_depay_process):
Clean up caps negotiation.
No need to validate the buffer, the base class does that for us.
* gst/rtp/gstrtph263pay.c: (gst_rtp_h263_pay_setcaps),
(gst_rtp_h263_pay_flush), (gst_rtp_h263_pay_handle_buffer):
* gst/rtp/gstrtph263pay.h:
Don't ignore the return value of set_outcaps.
Do some more timestamps.
* gst/rtp/gstrtph263pdepay.c: (gst_rtp_h263p_depay_setcaps),
(gst_rtp_h263p_depay_process):
Clean up caps negotiation.
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
* gst/rtp/gstrtph263ppay.c: (gst_rtp_h263p_pay_class_init),
(gst_rtp_h263p_pay_setcaps), (gst_rtp_h263p_pay_flush),
(gst_rtp_h263p_pay_handle_buffer):
* gst/rtp/gstrtph263ppay.h:
Don't ignore the return value of set_outcaps.
Do some more timestamps.
* gst/rtp/gstrtph264depay.c: (gst_rtp_h264_depay_setcaps),
(gst_rtp_h264_depay_process):
Clean up caps negotiation.
Don't ignore the return value of setcaps.
Fix possible caps leak.
No need to validate the buffer, the base class does that for us.
* gst/rtp/gstrtph264pay.c: (gst_rtp_h264_pay_setcaps):
Add some more debug info.
* gst/rtp/gstrtpilbcdepay.c: (gst_rtp_ilbc_depay_setcaps),
(gst_rtp_ilbc_depay_process):
Clean up caps negotiation.
Use the marker bit to set the DISCONT flag on outgoing buffers.
* gst/rtp/gstrtpilbcpay.c: (gst_rtpilbcpay_sink_setcaps):
Clean up caps negotiation.
* gst/rtp/gstrtpmp1sdepay.c: (gst_rtp_mp1s_depay_setcaps),
(gst_rtp_mp1s_depay_process):
Clean up caps negotiation.
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
No need to set caps on buffers, subclass does that for us.
* gst/rtp/gstrtpmp2tdepay.c: (gst_rtp_mp2t_depay_setcaps),
(gst_rtp_mp2t_depay_process):
Clean up caps negotiation.
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
No need to set caps on buffers, subclass does that for us.
* gst/rtp/gstrtpmp4adepay.c: (gst_rtp_mp4a_depay_setcaps),
(gst_rtp_mp4a_depay_process):
Clean up caps negotiation.
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_setcaps),
(gst_rtp_mp4g_depay_process):
Clean up caps negotiation.
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
No need to set caps on buffers, subclass does that for us.
* gst/rtp/gstrtpmp4gpay.c: (gst_rtp_mp4g_pay_finalize),
(gst_rtp_mp4g_pay_new_caps), (gst_rtp_mp4g_pay_setcaps):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtpmp4vdepay.c: (gst_rtp_mp4v_depay_setcaps),
(gst_rtp_mp4v_depay_process):
Clean up caps negotiation.
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
No need to set caps on buffers, subclass does that for us.
* gst/rtp/gstrtpmp4vpay.c: (gst_rtp_mp4v_pay_new_caps),
(gst_rtp_mp4v_pay_setcaps):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtpmpadepay.c: (gst_rtp_mpa_depay_setcaps),
(gst_rtp_mpa_depay_process):
Clean up caps negotiation.
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
Use the marker bit to set the DISCONT flag on outgoing buffers.
* gst/rtp/gstrtpmpapay.c: (gst_rtp_mpa_pay_setcaps):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtpmpvdepay.c: (gst_rtp_mpv_depay_setcaps),
(gst_rtp_mpv_depay_process):
Clean up caps negotiation.
Actually set output caps.
No need to validate the buffer, the base class does that for us.
* gst/rtp/gstrtpmpvpay.c: (gst_rtp_mpv_pay_setcaps):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtppcmadepay.c: (gst_rtp_pcma_depay_setcaps),
(gst_rtp_pcma_depay_process):
Clean up caps negotiation.
Set output buffer duration because we can.
Use the marker bit to set the DISCONT flag on outgoing buffers.
* gst/rtp/gstrtppcmapay.c: (gst_rtp_pcma_pay_setcaps):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtppcmudepay.c: (gst_rtp_pcmu_depay_setcaps),
(gst_rtp_pcmu_depay_process):
Clean up caps negotiation.
Use the marker bit to set the DISCONT flag on outgoing buffers.
* gst/rtp/gstrtppcmupay.c: (gst_rtp_pcmu_pay_setcaps):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtpspeexdepay.c: (gst_rtp_speex_depay_init),
(gst_rtp_speex_depay_setcaps), (gst_rtp_speex_depay_process):
Clean up caps negotiation.
Set output caps on the pad and header buffers.
Set duration on output buffers because we can.
* gst/rtp/gstrtpspeexpay.c: (gst_rtp_speex_pay_parse_ident):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtpsv3vdepay.c: (gst_rtp_sv3v_depay_setcaps),
(gst_rtp_sv3v_depay_process):
Clean up caps negotiation.
No need to validate the buffer, the base class does that for us.
No need to set caps out output buffers, subclass does that.
* gst/rtp/gstrtptheoradepay.c: (gst_rtp_theora_depay_setcaps),
(gst_rtp_theora_depay_process):
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
* gst/rtp/gstrtptheorapay.c: (gst_rtp_theora_pay_class_init),
(gst_rtp_theora_pay_flush_packet), (encode_base64),
(gst_rtp_theora_pay_finish_headers), (gst_rtp_theora_pay_parse_id),
(gst_rtp_theora_pay_handle_buffer):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process):
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_finish_headers):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtpvrawdepay.c: (gst_rtp_vraw_depay_setcaps):
Clean up caps negotiation, don't ignore setcaps return.
* gst/rtp/gstrtpvrawpay.c: (gst_rtp_vraw_pay_setcaps):
Don't ignore the return value of set_outcaps.
2008-10-27 11:03:53 +00:00
|
|
|
|
|
|
|
return res;
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static gboolean
|
2011-11-11 11:25:01 +00:00
|
|
|
gst_rtp_mp4a_pay_setcaps (GstRTPBasePayload * payload, GstCaps * caps)
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
{
|
|
|
|
GstRtpMP4APay *rtpmp4apay;
|
|
|
|
GstStructure *structure;
|
|
|
|
const GValue *codec_data;
|
2009-03-25 01:22:17 +00:00
|
|
|
gboolean res, framed = TRUE;
|
2010-01-11 17:48:26 +00:00
|
|
|
const gchar *stream_format;
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
|
|
|
|
rtpmp4apay = GST_RTP_MP4A_PAY (payload);
|
|
|
|
|
|
|
|
structure = gst_caps_get_structure (caps, 0);
|
|
|
|
|
2010-01-11 17:48:26 +00:00
|
|
|
/* this is already handled by the template caps, but it is better
|
|
|
|
* to leave here to have meaningful warning messages when linking
|
|
|
|
* fails */
|
|
|
|
stream_format = gst_structure_get_string (structure, "stream-format");
|
|
|
|
if (stream_format) {
|
|
|
|
if (strcmp (stream_format, "raw") != 0) {
|
|
|
|
GST_WARNING_OBJECT (rtpmp4apay, "AAC's stream-format must be 'raw', "
|
|
|
|
"%s is not supported", stream_format);
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
GST_WARNING_OBJECT (rtpmp4apay, "AAC's stream-format not specified, "
|
|
|
|
"assuming 'raw'");
|
|
|
|
}
|
|
|
|
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
codec_data = gst_structure_get_value (structure, "codec_data");
|
|
|
|
if (codec_data) {
|
|
|
|
GST_LOG_OBJECT (rtpmp4apay, "got codec_data");
|
|
|
|
if (G_VALUE_TYPE (codec_data) == GST_TYPE_BUFFER) {
|
|
|
|
GstBuffer *buffer, *cbuffer;
|
2012-01-23 16:25:37 +00:00
|
|
|
GstMapInfo map;
|
|
|
|
GstMapInfo cmap;
|
2011-07-10 19:50:19 +00:00
|
|
|
guint i;
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
|
|
|
|
buffer = gst_value_get_buffer (codec_data);
|
|
|
|
GST_LOG_OBJECT (rtpmp4apay, "configuring codec_data");
|
|
|
|
|
|
|
|
/* parse buffer */
|
|
|
|
res = gst_rtp_mp4a_pay_parse_audio_config (rtpmp4apay, buffer);
|
|
|
|
|
|
|
|
if (!res)
|
|
|
|
goto config_failed;
|
|
|
|
|
2012-01-23 16:25:37 +00:00
|
|
|
gst_buffer_map (buffer, &map, GST_MAP_READ);
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
|
|
|
|
/* make the StreamMuxConfig, we need 15 bits for the header */
|
2012-01-23 16:25:37 +00:00
|
|
|
cbuffer = gst_buffer_new_and_alloc (map.size + 2);
|
|
|
|
gst_buffer_map (cbuffer, &cmap, GST_MAP_WRITE);
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
|
2013-05-17 10:37:59 +00:00
|
|
|
memset (cmap.data, 0, map.size + 2);
|
|
|
|
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
/* Create StreamMuxConfig according to ISO/IEC 14496-3:
|
|
|
|
*
|
|
|
|
* audioMuxVersion == 0 (1 bit)
|
|
|
|
* allStreamsSameTimeFraming == 1 (1 bit)
|
|
|
|
* numSubFrames == numSubFrames (6 bits)
|
|
|
|
* numProgram == 0 (4 bits)
|
|
|
|
* numLayer == 0 (3 bits)
|
|
|
|
*/
|
2012-01-23 16:25:37 +00:00
|
|
|
cmap.data[0] = 0x40;
|
|
|
|
cmap.data[1] = 0x00;
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
|
|
|
|
/* append the config bits, shifting them 1 bit left */
|
2012-01-23 16:25:37 +00:00
|
|
|
for (i = 0; i < map.size; i++) {
|
|
|
|
cmap.data[i + 1] |= ((map.data[i] & 0x80) >> 7);
|
|
|
|
cmap.data[i + 2] |= ((map.data[i] & 0x7f) << 1);
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
}
|
|
|
|
|
2012-01-23 16:25:37 +00:00
|
|
|
gst_buffer_unmap (cbuffer, &cmap);
|
|
|
|
gst_buffer_unmap (buffer, &map);
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
|
|
|
|
/* now we can configure the buffer */
|
|
|
|
if (rtpmp4apay->config)
|
|
|
|
gst_buffer_unref (rtpmp4apay->config);
|
|
|
|
rtpmp4apay->config = cbuffer;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2009-03-25 01:22:17 +00:00
|
|
|
if (gst_structure_get_boolean (structure, "framed", &framed) && !framed) {
|
|
|
|
GST_WARNING_OBJECT (payload, "Need framed AAC data as input!");
|
|
|
|
}
|
|
|
|
|
2011-11-11 11:25:01 +00:00
|
|
|
gst_rtp_base_payload_set_options (payload, "audio", TRUE, "MP4A-LATM",
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
rtpmp4apay->rate);
|
|
|
|
|
gst/rtp/gstrtpL16depay.c: Check if clock-rate and channels are valid.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16_depay_setcaps),
(gst_rtp_L16_depay_process):
Check if clock-rate and channels are valid.
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
Use the marker bit to set the DISCONT flag on outgoing buffers.
* gst/rtp/gstrtpL16pay.c: (gst_rtp_L16_pay_setcaps):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtpac3depay.c: (gst_rtp_ac3_depay_setcaps),
(gst_rtp_ac3_depay_process):
Don't ignore the return value of set_caps.
No need to validate the buffer, the base class does that for us.
* gst/rtp/gstrtpamrdepay.c: (gst_rtp_amr_depay_setcaps),
(gst_rtp_amr_depay_process):
* gst/rtp/gstrtpamrdepay.h:
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
No need to set output caps on the buffers, the base class does that for
us.
The subclass will make sure we are negotiated.
* gst/rtp/gstrtpdvdepay.c: (gst_rtp_dv_depay_setcaps),
(gst_rtp_dv_depay_process), (gst_rtp_dv_depay_reset):
* gst/rtp/gstrtpdvdepay.h:
Clean up caps negotiation.
The subclass will make sure we are negotiated.
* gst/rtp/gstrtpg726depay.c: (gst_rtp_g726_depay_setcaps),
(gst_rtp_g726_depay_process):
Clean up caps negotiation.
Use the marker bit to set the DISCONT flag on outgoing buffers.
* gst/rtp/gstrtpg729depay.c: (gst_rtp_g729_depay_init),
(gst_rtp_g729_depay_setcaps), (gst_rtp_g729_depay_process):
* gst/rtp/gstrtpg729depay.h:
The subclass will make sure we are negotiated.
Use the marker bit to set the DISCONT flag on outgoing buffers.
* gst/rtp/gstrtpgsmdepay.c: (gst_rtp_gsm_depay_setcaps),
(gst_rtp_gsm_depay_process):
Clean up caps negotiation.
Use the marker bit to set the DISCONT flag on outgoing buffers.
* gst/rtp/gstrtpgsmpay.c: (gst_rtp_gsm_pay_setcaps):
Clean up caps negotiation.
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtph263depay.c: (gst_rtp_h263_depay_setcaps),
(gst_rtp_h263_depay_process):
Clean up caps negotiation.
No need to validate the buffer, the base class does that for us.
* gst/rtp/gstrtph263pay.c: (gst_rtp_h263_pay_setcaps),
(gst_rtp_h263_pay_flush), (gst_rtp_h263_pay_handle_buffer):
* gst/rtp/gstrtph263pay.h:
Don't ignore the return value of set_outcaps.
Do some more timestamps.
* gst/rtp/gstrtph263pdepay.c: (gst_rtp_h263p_depay_setcaps),
(gst_rtp_h263p_depay_process):
Clean up caps negotiation.
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
* gst/rtp/gstrtph263ppay.c: (gst_rtp_h263p_pay_class_init),
(gst_rtp_h263p_pay_setcaps), (gst_rtp_h263p_pay_flush),
(gst_rtp_h263p_pay_handle_buffer):
* gst/rtp/gstrtph263ppay.h:
Don't ignore the return value of set_outcaps.
Do some more timestamps.
* gst/rtp/gstrtph264depay.c: (gst_rtp_h264_depay_setcaps),
(gst_rtp_h264_depay_process):
Clean up caps negotiation.
Don't ignore the return value of setcaps.
Fix possible caps leak.
No need to validate the buffer, the base class does that for us.
* gst/rtp/gstrtph264pay.c: (gst_rtp_h264_pay_setcaps):
Add some more debug info.
* gst/rtp/gstrtpilbcdepay.c: (gst_rtp_ilbc_depay_setcaps),
(gst_rtp_ilbc_depay_process):
Clean up caps negotiation.
Use the marker bit to set the DISCONT flag on outgoing buffers.
* gst/rtp/gstrtpilbcpay.c: (gst_rtpilbcpay_sink_setcaps):
Clean up caps negotiation.
* gst/rtp/gstrtpmp1sdepay.c: (gst_rtp_mp1s_depay_setcaps),
(gst_rtp_mp1s_depay_process):
Clean up caps negotiation.
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
No need to set caps on buffers, subclass does that for us.
* gst/rtp/gstrtpmp2tdepay.c: (gst_rtp_mp2t_depay_setcaps),
(gst_rtp_mp2t_depay_process):
Clean up caps negotiation.
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
No need to set caps on buffers, subclass does that for us.
* gst/rtp/gstrtpmp4adepay.c: (gst_rtp_mp4a_depay_setcaps),
(gst_rtp_mp4a_depay_process):
Clean up caps negotiation.
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_setcaps),
(gst_rtp_mp4g_depay_process):
Clean up caps negotiation.
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
No need to set caps on buffers, subclass does that for us.
* gst/rtp/gstrtpmp4gpay.c: (gst_rtp_mp4g_pay_finalize),
(gst_rtp_mp4g_pay_new_caps), (gst_rtp_mp4g_pay_setcaps):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtpmp4vdepay.c: (gst_rtp_mp4v_depay_setcaps),
(gst_rtp_mp4v_depay_process):
Clean up caps negotiation.
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
No need to set caps on buffers, subclass does that for us.
* gst/rtp/gstrtpmp4vpay.c: (gst_rtp_mp4v_pay_new_caps),
(gst_rtp_mp4v_pay_setcaps):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtpmpadepay.c: (gst_rtp_mpa_depay_setcaps),
(gst_rtp_mpa_depay_process):
Clean up caps negotiation.
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
Use the marker bit to set the DISCONT flag on outgoing buffers.
* gst/rtp/gstrtpmpapay.c: (gst_rtp_mpa_pay_setcaps):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtpmpvdepay.c: (gst_rtp_mpv_depay_setcaps),
(gst_rtp_mpv_depay_process):
Clean up caps negotiation.
Actually set output caps.
No need to validate the buffer, the base class does that for us.
* gst/rtp/gstrtpmpvpay.c: (gst_rtp_mpv_pay_setcaps):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtppcmadepay.c: (gst_rtp_pcma_depay_setcaps),
(gst_rtp_pcma_depay_process):
Clean up caps negotiation.
Set output buffer duration because we can.
Use the marker bit to set the DISCONT flag on outgoing buffers.
* gst/rtp/gstrtppcmapay.c: (gst_rtp_pcma_pay_setcaps):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtppcmudepay.c: (gst_rtp_pcmu_depay_setcaps),
(gst_rtp_pcmu_depay_process):
Clean up caps negotiation.
Use the marker bit to set the DISCONT flag on outgoing buffers.
* gst/rtp/gstrtppcmupay.c: (gst_rtp_pcmu_pay_setcaps):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtpspeexdepay.c: (gst_rtp_speex_depay_init),
(gst_rtp_speex_depay_setcaps), (gst_rtp_speex_depay_process):
Clean up caps negotiation.
Set output caps on the pad and header buffers.
Set duration on output buffers because we can.
* gst/rtp/gstrtpspeexpay.c: (gst_rtp_speex_pay_parse_ident):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtpsv3vdepay.c: (gst_rtp_sv3v_depay_setcaps),
(gst_rtp_sv3v_depay_process):
Clean up caps negotiation.
No need to validate the buffer, the base class does that for us.
No need to set caps out output buffers, subclass does that.
* gst/rtp/gstrtptheoradepay.c: (gst_rtp_theora_depay_setcaps),
(gst_rtp_theora_depay_process):
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
* gst/rtp/gstrtptheorapay.c: (gst_rtp_theora_pay_class_init),
(gst_rtp_theora_pay_flush_packet), (encode_base64),
(gst_rtp_theora_pay_finish_headers), (gst_rtp_theora_pay_parse_id),
(gst_rtp_theora_pay_handle_buffer):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process):
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_finish_headers):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtpvrawdepay.c: (gst_rtp_vraw_depay_setcaps):
Clean up caps negotiation, don't ignore setcaps return.
* gst/rtp/gstrtpvrawpay.c: (gst_rtp_vraw_pay_setcaps):
Don't ignore the return value of set_outcaps.
2008-10-27 11:03:53 +00:00
|
|
|
res = gst_rtp_mp4a_pay_new_caps (rtpmp4apay);
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
|
gst/rtp/gstrtpL16depay.c: Check if clock-rate and channels are valid.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16_depay_setcaps),
(gst_rtp_L16_depay_process):
Check if clock-rate and channels are valid.
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
Use the marker bit to set the DISCONT flag on outgoing buffers.
* gst/rtp/gstrtpL16pay.c: (gst_rtp_L16_pay_setcaps):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtpac3depay.c: (gst_rtp_ac3_depay_setcaps),
(gst_rtp_ac3_depay_process):
Don't ignore the return value of set_caps.
No need to validate the buffer, the base class does that for us.
* gst/rtp/gstrtpamrdepay.c: (gst_rtp_amr_depay_setcaps),
(gst_rtp_amr_depay_process):
* gst/rtp/gstrtpamrdepay.h:
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
No need to set output caps on the buffers, the base class does that for
us.
The subclass will make sure we are negotiated.
* gst/rtp/gstrtpdvdepay.c: (gst_rtp_dv_depay_setcaps),
(gst_rtp_dv_depay_process), (gst_rtp_dv_depay_reset):
* gst/rtp/gstrtpdvdepay.h:
Clean up caps negotiation.
The subclass will make sure we are negotiated.
* gst/rtp/gstrtpg726depay.c: (gst_rtp_g726_depay_setcaps),
(gst_rtp_g726_depay_process):
Clean up caps negotiation.
Use the marker bit to set the DISCONT flag on outgoing buffers.
* gst/rtp/gstrtpg729depay.c: (gst_rtp_g729_depay_init),
(gst_rtp_g729_depay_setcaps), (gst_rtp_g729_depay_process):
* gst/rtp/gstrtpg729depay.h:
The subclass will make sure we are negotiated.
Use the marker bit to set the DISCONT flag on outgoing buffers.
* gst/rtp/gstrtpgsmdepay.c: (gst_rtp_gsm_depay_setcaps),
(gst_rtp_gsm_depay_process):
Clean up caps negotiation.
Use the marker bit to set the DISCONT flag on outgoing buffers.
* gst/rtp/gstrtpgsmpay.c: (gst_rtp_gsm_pay_setcaps):
Clean up caps negotiation.
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtph263depay.c: (gst_rtp_h263_depay_setcaps),
(gst_rtp_h263_depay_process):
Clean up caps negotiation.
No need to validate the buffer, the base class does that for us.
* gst/rtp/gstrtph263pay.c: (gst_rtp_h263_pay_setcaps),
(gst_rtp_h263_pay_flush), (gst_rtp_h263_pay_handle_buffer):
* gst/rtp/gstrtph263pay.h:
Don't ignore the return value of set_outcaps.
Do some more timestamps.
* gst/rtp/gstrtph263pdepay.c: (gst_rtp_h263p_depay_setcaps),
(gst_rtp_h263p_depay_process):
Clean up caps negotiation.
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
* gst/rtp/gstrtph263ppay.c: (gst_rtp_h263p_pay_class_init),
(gst_rtp_h263p_pay_setcaps), (gst_rtp_h263p_pay_flush),
(gst_rtp_h263p_pay_handle_buffer):
* gst/rtp/gstrtph263ppay.h:
Don't ignore the return value of set_outcaps.
Do some more timestamps.
* gst/rtp/gstrtph264depay.c: (gst_rtp_h264_depay_setcaps),
(gst_rtp_h264_depay_process):
Clean up caps negotiation.
Don't ignore the return value of setcaps.
Fix possible caps leak.
No need to validate the buffer, the base class does that for us.
* gst/rtp/gstrtph264pay.c: (gst_rtp_h264_pay_setcaps):
Add some more debug info.
* gst/rtp/gstrtpilbcdepay.c: (gst_rtp_ilbc_depay_setcaps),
(gst_rtp_ilbc_depay_process):
Clean up caps negotiation.
Use the marker bit to set the DISCONT flag on outgoing buffers.
* gst/rtp/gstrtpilbcpay.c: (gst_rtpilbcpay_sink_setcaps):
Clean up caps negotiation.
* gst/rtp/gstrtpmp1sdepay.c: (gst_rtp_mp1s_depay_setcaps),
(gst_rtp_mp1s_depay_process):
Clean up caps negotiation.
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
No need to set caps on buffers, subclass does that for us.
* gst/rtp/gstrtpmp2tdepay.c: (gst_rtp_mp2t_depay_setcaps),
(gst_rtp_mp2t_depay_process):
Clean up caps negotiation.
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
No need to set caps on buffers, subclass does that for us.
* gst/rtp/gstrtpmp4adepay.c: (gst_rtp_mp4a_depay_setcaps),
(gst_rtp_mp4a_depay_process):
Clean up caps negotiation.
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_setcaps),
(gst_rtp_mp4g_depay_process):
Clean up caps negotiation.
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
No need to set caps on buffers, subclass does that for us.
* gst/rtp/gstrtpmp4gpay.c: (gst_rtp_mp4g_pay_finalize),
(gst_rtp_mp4g_pay_new_caps), (gst_rtp_mp4g_pay_setcaps):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtpmp4vdepay.c: (gst_rtp_mp4v_depay_setcaps),
(gst_rtp_mp4v_depay_process):
Clean up caps negotiation.
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
No need to set caps on buffers, subclass does that for us.
* gst/rtp/gstrtpmp4vpay.c: (gst_rtp_mp4v_pay_new_caps),
(gst_rtp_mp4v_pay_setcaps):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtpmpadepay.c: (gst_rtp_mpa_depay_setcaps),
(gst_rtp_mpa_depay_process):
Clean up caps negotiation.
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
Use the marker bit to set the DISCONT flag on outgoing buffers.
* gst/rtp/gstrtpmpapay.c: (gst_rtp_mpa_pay_setcaps):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtpmpvdepay.c: (gst_rtp_mpv_depay_setcaps),
(gst_rtp_mpv_depay_process):
Clean up caps negotiation.
Actually set output caps.
No need to validate the buffer, the base class does that for us.
* gst/rtp/gstrtpmpvpay.c: (gst_rtp_mpv_pay_setcaps):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtppcmadepay.c: (gst_rtp_pcma_depay_setcaps),
(gst_rtp_pcma_depay_process):
Clean up caps negotiation.
Set output buffer duration because we can.
Use the marker bit to set the DISCONT flag on outgoing buffers.
* gst/rtp/gstrtppcmapay.c: (gst_rtp_pcma_pay_setcaps):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtppcmudepay.c: (gst_rtp_pcmu_depay_setcaps),
(gst_rtp_pcmu_depay_process):
Clean up caps negotiation.
Use the marker bit to set the DISCONT flag on outgoing buffers.
* gst/rtp/gstrtppcmupay.c: (gst_rtp_pcmu_pay_setcaps):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtpspeexdepay.c: (gst_rtp_speex_depay_init),
(gst_rtp_speex_depay_setcaps), (gst_rtp_speex_depay_process):
Clean up caps negotiation.
Set output caps on the pad and header buffers.
Set duration on output buffers because we can.
* gst/rtp/gstrtpspeexpay.c: (gst_rtp_speex_pay_parse_ident):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtpsv3vdepay.c: (gst_rtp_sv3v_depay_setcaps),
(gst_rtp_sv3v_depay_process):
Clean up caps negotiation.
No need to validate the buffer, the base class does that for us.
No need to set caps out output buffers, subclass does that.
* gst/rtp/gstrtptheoradepay.c: (gst_rtp_theora_depay_setcaps),
(gst_rtp_theora_depay_process):
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
* gst/rtp/gstrtptheorapay.c: (gst_rtp_theora_pay_class_init),
(gst_rtp_theora_pay_flush_packet), (encode_base64),
(gst_rtp_theora_pay_finish_headers), (gst_rtp_theora_pay_parse_id),
(gst_rtp_theora_pay_handle_buffer):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process):
Don't ignore the return value of setcaps.
No need to validate the buffer, the base class does that for us.
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_finish_headers):
Don't ignore the return value of set_outcaps.
* gst/rtp/gstrtpvrawdepay.c: (gst_rtp_vraw_depay_setcaps):
Clean up caps negotiation, don't ignore setcaps return.
* gst/rtp/gstrtpvrawpay.c: (gst_rtp_vraw_pay_setcaps):
Don't ignore the return value of set_outcaps.
2008-10-27 11:03:53 +00:00
|
|
|
return res;
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
|
|
|
|
/* ERRORS */
|
|
|
|
config_failed:
|
|
|
|
{
|
|
|
|
GST_DEBUG_OBJECT (rtpmp4apay, "failed to parse config");
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-07-03 08:51:57 +00:00
|
|
|
#define RTP_HEADER_LEN 12
|
|
|
|
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
/* we expect buffers as exactly one complete AU
|
|
|
|
*/
|
|
|
|
static GstFlowReturn
|
2011-11-11 11:25:01 +00:00
|
|
|
gst_rtp_mp4a_pay_handle_buffer (GstRTPBasePayload * basepayload,
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
GstBuffer * buffer)
|
|
|
|
{
|
|
|
|
GstRtpMP4APay *rtpmp4apay;
|
|
|
|
GstFlowReturn ret;
|
2015-07-03 08:51:57 +00:00
|
|
|
GstBufferList *list;
|
|
|
|
guint mtu;
|
|
|
|
guint offset;
|
2011-07-10 19:50:19 +00:00
|
|
|
gsize size;
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
gboolean fragmented;
|
2008-12-08 12:37:45 +00:00
|
|
|
GstClockTime timestamp;
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
|
|
|
|
ret = GST_FLOW_OK;
|
|
|
|
|
|
|
|
rtpmp4apay = GST_RTP_MP4A_PAY (basepayload);
|
|
|
|
|
2015-07-03 08:51:57 +00:00
|
|
|
offset = 0;
|
|
|
|
size = gst_buffer_get_size (buffer);
|
2012-01-23 16:25:37 +00:00
|
|
|
|
2015-06-10 12:33:50 +00:00
|
|
|
timestamp = GST_BUFFER_PTS (buffer);
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
|
|
|
|
fragmented = FALSE;
|
2011-11-11 11:25:01 +00:00
|
|
|
mtu = GST_RTP_BASE_PAYLOAD_MTU (rtpmp4apay);
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
|
2015-07-03 08:51:57 +00:00
|
|
|
list = gst_buffer_list_new_sized (size / (mtu - RTP_HEADER_LEN) + 1);
|
|
|
|
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
while (size > 0) {
|
|
|
|
guint towrite;
|
2015-07-03 08:51:57 +00:00
|
|
|
GstBuffer *outbuf;
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
guint payload_len;
|
|
|
|
guint packet_len;
|
2015-07-03 08:51:57 +00:00
|
|
|
guint header_len;
|
|
|
|
GstBuffer *paybuf;
|
2011-12-05 17:39:59 +00:00
|
|
|
GstRTPBuffer rtp = { NULL };
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
|
2015-07-03 08:51:57 +00:00
|
|
|
header_len = 0;
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
if (!fragmented) {
|
2015-07-03 08:51:57 +00:00
|
|
|
guint count;
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
/* first packet calculate space for the packet including the header */
|
|
|
|
count = size;
|
|
|
|
while (count >= 0xff) {
|
2015-07-03 08:51:57 +00:00
|
|
|
header_len++;
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
count -= 0xff;
|
|
|
|
}
|
2015-07-03 08:51:57 +00:00
|
|
|
header_len++;
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
}
|
|
|
|
|
2015-07-03 08:51:57 +00:00
|
|
|
packet_len = gst_rtp_buffer_calc_packet_len (header_len + size, 0, 0);
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
towrite = MIN (packet_len, mtu);
|
|
|
|
payload_len = gst_rtp_buffer_calc_payload_len (towrite, 0, 0);
|
2015-07-03 08:51:57 +00:00
|
|
|
payload_len -= header_len;
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
|
|
|
|
GST_DEBUG_OBJECT (rtpmp4apay,
|
2015-07-03 08:51:57 +00:00
|
|
|
"avail %" G_GSIZE_FORMAT
|
|
|
|
", header_len %d, packet_len %d, payload_len %d", size, header_len,
|
|
|
|
packet_len, payload_len);
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
|
|
|
|
/* create buffer to hold the payload. */
|
2015-07-03 08:51:57 +00:00
|
|
|
outbuf = gst_rtp_buffer_new_allocate (header_len, 0, 0);
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
|
|
|
|
/* copy payload */
|
2011-07-10 19:50:19 +00:00
|
|
|
gst_rtp_buffer_map (outbuf, GST_MAP_WRITE, &rtp);
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
|
|
|
|
if (!fragmented) {
|
2015-07-03 08:51:57 +00:00
|
|
|
guint8 *payload = gst_rtp_buffer_get_payload (&rtp);
|
|
|
|
guint count;
|
|
|
|
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
/* first packet write the header */
|
|
|
|
count = size;
|
|
|
|
while (count >= 0xff) {
|
|
|
|
*payload++ = 0xff;
|
|
|
|
count -= 0xff;
|
|
|
|
}
|
|
|
|
*payload++ = count;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* marker only if the packet is complete */
|
2015-07-03 08:51:57 +00:00
|
|
|
gst_rtp_buffer_set_marker (&rtp, size == payload_len);
|
2011-07-10 19:50:19 +00:00
|
|
|
|
|
|
|
gst_rtp_buffer_unmap (&rtp);
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
|
2015-07-03 08:51:57 +00:00
|
|
|
/* create a new buf to hold the payload */
|
|
|
|
paybuf = gst_buffer_copy_region (buffer, GST_BUFFER_COPY_ALL,
|
|
|
|
offset, payload_len);
|
|
|
|
|
|
|
|
/* join memory parts */
|
2015-08-04 17:59:17 +00:00
|
|
|
gst_rtp_copy_meta (GST_ELEMENT_CAST (rtpmp4apay), outbuf, paybuf,
|
|
|
|
g_quark_from_static_string (GST_META_TAG_AUDIO_STR));
|
2015-07-03 08:51:57 +00:00
|
|
|
outbuf = gst_buffer_append (outbuf, paybuf);
|
|
|
|
gst_buffer_list_add (list, outbuf);
|
|
|
|
offset += payload_len;
|
|
|
|
size -= payload_len;
|
|
|
|
|
2008-12-08 12:37:45 +00:00
|
|
|
/* copy incomming timestamp (if any) to outgoing buffers */
|
2015-06-10 12:33:50 +00:00
|
|
|
GST_BUFFER_PTS (outbuf) = timestamp;
|
2008-12-08 12:37:45 +00:00
|
|
|
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
fragmented = TRUE;
|
|
|
|
}
|
2009-03-25 01:28:38 +00:00
|
|
|
|
2015-07-03 08:51:57 +00:00
|
|
|
ret =
|
|
|
|
gst_rtp_base_payload_push_list (GST_RTP_BASE_PAYLOAD (rtpmp4apay), list);
|
|
|
|
|
2009-03-25 01:28:38 +00:00
|
|
|
gst_buffer_unref (buffer);
|
|
|
|
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
return ret;
|
|
|
|
}
|
|
|
|
|
|
|
|
gboolean
|
|
|
|
gst_rtp_mp4a_pay_plugin_init (GstPlugin * plugin)
|
|
|
|
{
|
|
|
|
return gst_element_register (plugin, "rtpmp4apay",
|
2010-12-21 15:49:28 +00:00
|
|
|
GST_RANK_SECONDARY, GST_TYPE_RTP_MP4A_PAY);
|
gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
|
|
|
}
|