gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
/* GStreamer
|
2008-11-25 18:03:02 +00:00
|
|
|
* Copyright (C) <2006> Wim Taymans <wim.taymans@gmail.com>
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
*
|
|
|
|
* 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/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +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/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
|
gst/rtp/Makefile.am: gst/rtp/fnv1hash.c (MASK_24, FNV1_HASH_32_INIT, FNV1_HASH_32_PRIME, fnv1_hash_32_new, fnv1_hash_...
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/fnv1hash.c (MASK_24, FNV1_HASH_32_INIT, FNV1_HASH_32_PRIME,
fnv1_hash_32_new, fnv1_hash_32_update, fnv1_hash_32_to_24):
* gst/rtp/fnv1hash.h (__GST_FNV1_HASH_H__):
Add a simple hashing implementation that we can use to generate
a 24-bit ident value based on the codebooks for vorbis and theora.
* gst/rtp/gstrtptheorapay.c (gst_rtp_theora_pay_finish_headers,
gst_rtp_theora_pay_handle_buffer):
* gst/rtp/gstrtpvorbisdepay.c
(gst_rtp_vorbis_depay_parse_configuration,
gst_rtp_vorbis_depay_switch_codebook, gst_rtp_vorbis_depay_process):
* gst/rtp/gstrtpvorbispay.c (gst_rtp_vorbis_pay_reset_packet,
gst_rtp_vorbis_pay_init_packet, gst_rtp_vorbis_pay_flush_packet,
gst_rtp_vorbis_pay_finish_headers, gst_rtp_vorbis_pay_handle_buffer):
Use the hashing function, ensuring that the same codebooks result
in the same ident and thus the same SDP description.
Various log fixes/changes.
2007-04-12 11:41:11 +00:00
|
|
|
#include "fnv1hash.h"
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
#include "gstrtpvorbispay.h"
|
2015-08-04 17:59:17 +00:00
|
|
|
#include "gstrtputils.h"
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
|
|
|
|
GST_DEBUG_CATEGORY_STATIC (rtpvorbispay_debug);
|
|
|
|
#define GST_CAT_DEFAULT (rtpvorbispay_debug)
|
|
|
|
|
|
|
|
/* references:
|
2008-08-15 17:26:18 +00:00
|
|
|
* http://www.rfc-editor.org/rfc/rfc5215.txt
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
static GstStaticPadTemplate gst_rtp_vorbis_pay_src_template =
|
|
|
|
GST_STATIC_PAD_TEMPLATE ("src",
|
|
|
|
GST_PAD_SRC,
|
|
|
|
GST_PAD_ALWAYS,
|
|
|
|
GST_STATIC_CAPS ("application/x-rtp, "
|
|
|
|
"media = (string) \"audio\", "
|
2007-01-24 12:22:51 +00:00
|
|
|
"payload = (int) " GST_RTP_PAYLOAD_DYNAMIC_STRING ", "
|
2007-01-25 14:22:53 +00:00
|
|
|
"clock-rate = (int) [1, MAX ], " "encoding-name = (string) \"VORBIS\""
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
/* All required parameters
|
|
|
|
*
|
|
|
|
* "encoding-params = (string) <num channels>"
|
|
|
|
* "configuration = (string) ANY"
|
|
|
|
*/
|
|
|
|
)
|
|
|
|
);
|
|
|
|
|
|
|
|
static GstStaticPadTemplate gst_rtp_vorbis_pay_sink_template =
|
|
|
|
GST_STATIC_PAD_TEMPLATE ("sink",
|
|
|
|
GST_PAD_SINK,
|
|
|
|
GST_PAD_ALWAYS,
|
|
|
|
GST_STATIC_CAPS ("audio/x-vorbis")
|
|
|
|
);
|
|
|
|
|
2013-06-28 13:21:56 +00:00
|
|
|
#define DEFAULT_CONFIG_INTERVAL 0
|
|
|
|
|
|
|
|
enum
|
|
|
|
{
|
|
|
|
PROP_0,
|
|
|
|
PROP_CONFIG_INTERVAL
|
|
|
|
};
|
|
|
|
|
2011-07-10 19:50:19 +00:00
|
|
|
#define gst_rtp_vorbis_pay_parent_class parent_class
|
2011-11-11 11:25:01 +00:00
|
|
|
G_DEFINE_TYPE (GstRtpVorbisPay, gst_rtp_vorbis_pay, GST_TYPE_RTP_BASE_PAYLOAD);
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
|
2011-11-11 11:25:01 +00:00
|
|
|
static gboolean gst_rtp_vorbis_pay_setcaps (GstRTPBasePayload * basepayload,
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
GstCaps * caps);
|
2008-02-12 23:38:19 +00:00
|
|
|
static GstStateChangeReturn gst_rtp_vorbis_pay_change_state (GstElement *
|
|
|
|
element, GstStateChange transition);
|
2011-11-11 11:25:01 +00:00
|
|
|
static GstFlowReturn gst_rtp_vorbis_pay_handle_buffer (GstRTPBasePayload * pad,
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
GstBuffer * buffer);
|
2011-11-15 15:31:45 +00:00
|
|
|
static gboolean gst_rtp_vorbis_pay_sink_event (GstRTPBasePayload * payload,
|
2010-12-21 12:49:41 +00:00
|
|
|
GstEvent * event);
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
|
2013-06-28 09:43:17 +00:00
|
|
|
static gboolean gst_rtp_vorbis_pay_parse_id (GstRTPBasePayload * basepayload,
|
|
|
|
guint8 * data, guint size);
|
|
|
|
static gboolean gst_rtp_vorbis_pay_finish_headers (GstRTPBasePayload *
|
|
|
|
basepayload);
|
|
|
|
|
2013-06-28 13:21:56 +00:00
|
|
|
static void gst_rtp_vorbis_pay_set_property (GObject * object, guint prop_id,
|
|
|
|
const GValue * value, GParamSpec * pspec);
|
|
|
|
static void gst_rtp_vorbis_pay_get_property (GObject * object, guint prop_id,
|
|
|
|
GValue * value, GParamSpec * pspec);
|
|
|
|
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
static void
|
|
|
|
gst_rtp_vorbis_pay_class_init (GstRtpVorbisPayClass * klass)
|
|
|
|
{
|
2013-06-28 13:21:56 +00:00
|
|
|
GObjectClass *gobject_class;
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
GstElementClass *gstelement_class;
|
2011-11-11 11:25:01 +00:00
|
|
|
GstRTPBasePayloadClass *gstrtpbasepayload_class;
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
|
2013-06-28 13:21:56 +00:00
|
|
|
gobject_class = (GObjectClass *) klass;
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
gstelement_class = (GstElementClass *) klass;
|
2011-11-11 11:25:01 +00:00
|
|
|
gstrtpbasepayload_class = (GstRTPBasePayloadClass *) klass;
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
|
2008-02-12 23:38:19 +00:00
|
|
|
gstelement_class->change_state = gst_rtp_vorbis_pay_change_state;
|
|
|
|
|
2011-11-11 11:25:01 +00:00
|
|
|
gstrtpbasepayload_class->set_caps = gst_rtp_vorbis_pay_setcaps;
|
|
|
|
gstrtpbasepayload_class->handle_buffer = gst_rtp_vorbis_pay_handle_buffer;
|
2011-11-15 15:31:45 +00:00
|
|
|
gstrtpbasepayload_class->sink_event = gst_rtp_vorbis_pay_sink_event;
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
|
2013-06-28 13:21:56 +00:00
|
|
|
gobject_class->set_property = gst_rtp_vorbis_pay_set_property;
|
|
|
|
gobject_class->get_property = gst_rtp_vorbis_pay_get_property;
|
|
|
|
|
2016-03-04 01:30:12 +00:00
|
|
|
gst_element_class_add_static_pad_template (gstelement_class,
|
|
|
|
&gst_rtp_vorbis_pay_src_template);
|
|
|
|
gst_element_class_add_static_pad_template (gstelement_class,
|
|
|
|
&gst_rtp_vorbis_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,
|
2015-02-26 15:10:41 +00:00
|
|
|
"RTP Vorbis payloader",
|
2011-07-10 19:50:19 +00:00
|
|
|
"Codec/Payloader/Network/RTP",
|
|
|
|
"Payload-encode Vorbis audio into RTP packets (RFC 5215)",
|
2015-02-26 15:10:41 +00:00
|
|
|
"Wim Taymans <wim.taymans@gmail.com>");
|
2011-07-10 19:50:19 +00:00
|
|
|
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
GST_DEBUG_CATEGORY_INIT (rtpvorbispay_debug, "rtpvorbispay", 0,
|
|
|
|
"Vorbis RTP Payloader");
|
2013-06-28 13:21:56 +00:00
|
|
|
|
|
|
|
g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_CONFIG_INTERVAL,
|
|
|
|
g_param_spec_uint ("config-interval", "Config Send Interval",
|
|
|
|
"Send Config Insertion Interval in seconds (configuration headers "
|
|
|
|
"will be multiplexed in the data stream when detected.) (0 = disabled)",
|
|
|
|
0, 3600, DEFAULT_CONFIG_INTERVAL,
|
|
|
|
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)
|
|
|
|
);
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2011-07-10 19:50:19 +00:00
|
|
|
gst_rtp_vorbis_pay_init (GstRtpVorbisPay * rtpvorbispay)
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
{
|
2013-06-28 13:21:56 +00:00
|
|
|
rtpvorbispay->last_config = GST_CLOCK_TIME_NONE;
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
}
|
|
|
|
|
2010-12-21 12:49:41 +00:00
|
|
|
static void
|
|
|
|
gst_rtp_vorbis_pay_clear_packet (GstRtpVorbisPay * rtpvorbispay)
|
|
|
|
{
|
|
|
|
if (rtpvorbispay->packet)
|
|
|
|
gst_buffer_unref (rtpvorbispay->packet);
|
|
|
|
rtpvorbispay->packet = NULL;
|
2015-09-19 15:04:07 +00:00
|
|
|
g_list_free_full (rtpvorbispay->packet_buffers,
|
|
|
|
(GDestroyNotify) gst_buffer_unref);
|
2015-08-04 17:59:17 +00:00
|
|
|
rtpvorbispay->packet_buffers = NULL;
|
2010-12-21 12:49:41 +00:00
|
|
|
}
|
|
|
|
|
2008-02-12 23:38:19 +00:00
|
|
|
static void
|
|
|
|
gst_rtp_vorbis_pay_cleanup (GstRtpVorbisPay * rtpvorbispay)
|
|
|
|
{
|
2010-12-21 12:49:41 +00:00
|
|
|
gst_rtp_vorbis_pay_clear_packet (rtpvorbispay);
|
2015-09-19 15:04:07 +00:00
|
|
|
g_list_free_full (rtpvorbispay->headers, (GDestroyNotify) gst_buffer_unref);
|
|
|
|
rtpvorbispay->headers = NULL;
|
2015-11-15 04:33:54 +00:00
|
|
|
g_free (rtpvorbispay->config_data);
|
2013-06-28 13:21:56 +00:00
|
|
|
rtpvorbispay->config_data = NULL;
|
|
|
|
rtpvorbispay->last_config = GST_CLOCK_TIME_NONE;
|
2008-02-12 23:38:19 +00:00
|
|
|
}
|
|
|
|
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
static gboolean
|
2011-11-11 11:25:01 +00:00
|
|
|
gst_rtp_vorbis_pay_setcaps (GstRTPBasePayload * basepayload, GstCaps * caps)
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
{
|
|
|
|
GstRtpVorbisPay *rtpvorbispay;
|
2013-06-28 09:43:17 +00:00
|
|
|
GstStructure *s;
|
|
|
|
const GValue *array;
|
|
|
|
gint asize, i;
|
|
|
|
GstBuffer *buf;
|
|
|
|
GstMapInfo map;
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
|
|
|
|
rtpvorbispay = GST_RTP_VORBIS_PAY (basepayload);
|
|
|
|
|
2013-06-28 09:43:17 +00:00
|
|
|
s = gst_caps_get_structure (caps, 0);
|
|
|
|
|
2006-11-06 20:52:10 +00:00
|
|
|
rtpvorbispay->need_headers = TRUE;
|
|
|
|
|
2013-06-28 09:43:17 +00:00
|
|
|
if ((array = gst_structure_get_value (s, "streamheader")) == NULL)
|
|
|
|
goto done;
|
|
|
|
|
|
|
|
if (G_VALUE_TYPE (array) != GST_TYPE_ARRAY)
|
|
|
|
goto done;
|
|
|
|
|
|
|
|
if ((asize = gst_value_array_get_size (array)) < 3)
|
|
|
|
goto done;
|
|
|
|
|
|
|
|
for (i = 0; i < asize; i++) {
|
|
|
|
const GValue *value;
|
|
|
|
|
|
|
|
value = gst_value_array_get_value (array, i);
|
|
|
|
if ((buf = gst_value_get_buffer (value)) == NULL)
|
|
|
|
goto null_buffer;
|
|
|
|
|
|
|
|
gst_buffer_map (buf, &map, GST_MAP_READ);
|
2013-06-28 10:06:21 +00:00
|
|
|
if (map.size < 1)
|
|
|
|
goto invalid_streamheader;
|
|
|
|
|
2013-06-28 09:43:17 +00:00
|
|
|
/* no data packets allowed */
|
|
|
|
if ((map.data[0] & 1) == 0)
|
|
|
|
goto invalid_streamheader;
|
|
|
|
|
|
|
|
/* we need packets with id 1, 3, 5 */
|
|
|
|
if (map.data[0] != (i * 2) + 1)
|
|
|
|
goto invalid_streamheader;
|
|
|
|
|
|
|
|
if (i == 0) {
|
|
|
|
/* identification, we need to parse this in order to get the clock rate. */
|
|
|
|
if (G_UNLIKELY (!gst_rtp_vorbis_pay_parse_id (basepayload, map.data,
|
|
|
|
map.size)))
|
|
|
|
goto parse_id_failed;
|
|
|
|
}
|
|
|
|
GST_DEBUG_OBJECT (rtpvorbispay, "collecting header %d", i);
|
|
|
|
rtpvorbispay->headers =
|
|
|
|
g_list_append (rtpvorbispay->headers, gst_buffer_ref (buf));
|
|
|
|
gst_buffer_unmap (buf, &map);
|
|
|
|
}
|
|
|
|
if (!gst_rtp_vorbis_pay_finish_headers (basepayload))
|
|
|
|
goto finish_failed;
|
|
|
|
|
|
|
|
done:
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
return TRUE;
|
2013-06-28 09:43:17 +00:00
|
|
|
|
|
|
|
/* ERRORS */
|
|
|
|
null_buffer:
|
|
|
|
{
|
|
|
|
GST_WARNING_OBJECT (rtpvorbispay, "streamheader with null buffer received");
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
invalid_streamheader:
|
|
|
|
{
|
|
|
|
GST_WARNING_OBJECT (rtpvorbispay, "unable to parse initial header");
|
|
|
|
gst_buffer_unmap (buf, &map);
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
parse_id_failed:
|
|
|
|
{
|
|
|
|
GST_WARNING_OBJECT (rtpvorbispay, "unable to parse initial header");
|
|
|
|
gst_buffer_unmap (buf, &map);
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
finish_failed:
|
|
|
|
{
|
|
|
|
GST_WARNING_OBJECT (rtpvorbispay, "unable to finish headers");
|
|
|
|
return FALSE;
|
|
|
|
}
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2006-09-22 15:15:13 +00:00
|
|
|
gst_rtp_vorbis_pay_reset_packet (GstRtpVorbisPay * rtpvorbispay, guint8 VDT)
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
{
|
|
|
|
guint payload_len;
|
2011-12-05 17:39:59 +00:00
|
|
|
GstRTPBuffer rtp = { NULL };
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
|
gst/rtp/Makefile.am: gst/rtp/fnv1hash.c (MASK_24, FNV1_HASH_32_INIT, FNV1_HASH_32_PRIME, fnv1_hash_32_new, fnv1_hash_...
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/fnv1hash.c (MASK_24, FNV1_HASH_32_INIT, FNV1_HASH_32_PRIME,
fnv1_hash_32_new, fnv1_hash_32_update, fnv1_hash_32_to_24):
* gst/rtp/fnv1hash.h (__GST_FNV1_HASH_H__):
Add a simple hashing implementation that we can use to generate
a 24-bit ident value based on the codebooks for vorbis and theora.
* gst/rtp/gstrtptheorapay.c (gst_rtp_theora_pay_finish_headers,
gst_rtp_theora_pay_handle_buffer):
* gst/rtp/gstrtpvorbisdepay.c
(gst_rtp_vorbis_depay_parse_configuration,
gst_rtp_vorbis_depay_switch_codebook, gst_rtp_vorbis_depay_process):
* gst/rtp/gstrtpvorbispay.c (gst_rtp_vorbis_pay_reset_packet,
gst_rtp_vorbis_pay_init_packet, gst_rtp_vorbis_pay_flush_packet,
gst_rtp_vorbis_pay_finish_headers, gst_rtp_vorbis_pay_handle_buffer):
Use the hashing function, ensuring that the same codebooks result
in the same ident and thus the same SDP description.
Various log fixes/changes.
2007-04-12 11:41:11 +00:00
|
|
|
GST_LOG_OBJECT (rtpvorbispay, "reset packet");
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
|
|
|
|
rtpvorbispay->payload_pos = 4;
|
2011-07-10 19:50:19 +00:00
|
|
|
gst_rtp_buffer_map (rtpvorbispay->packet, GST_MAP_READ, &rtp);
|
|
|
|
payload_len = gst_rtp_buffer_get_payload_len (&rtp);
|
|
|
|
gst_rtp_buffer_unmap (&rtp);
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
rtpvorbispay->payload_left = payload_len - 4;
|
|
|
|
rtpvorbispay->payload_duration = 0;
|
|
|
|
rtpvorbispay->payload_F = 0;
|
2006-09-22 15:15:13 +00:00
|
|
|
rtpvorbispay->payload_VDT = VDT;
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
rtpvorbispay->payload_pkts = 0;
|
|
|
|
}
|
|
|
|
|
2006-09-22 15:15:13 +00:00
|
|
|
static void
|
2006-11-07 01:43:06 +00:00
|
|
|
gst_rtp_vorbis_pay_init_packet (GstRtpVorbisPay * rtpvorbispay, guint8 VDT,
|
|
|
|
GstClockTime timestamp)
|
2006-09-22 15:15:13 +00:00
|
|
|
{
|
gst/rtp/Makefile.am: gst/rtp/fnv1hash.c (MASK_24, FNV1_HASH_32_INIT, FNV1_HASH_32_PRIME, fnv1_hash_32_new, fnv1_hash_...
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/fnv1hash.c (MASK_24, FNV1_HASH_32_INIT, FNV1_HASH_32_PRIME,
fnv1_hash_32_new, fnv1_hash_32_update, fnv1_hash_32_to_24):
* gst/rtp/fnv1hash.h (__GST_FNV1_HASH_H__):
Add a simple hashing implementation that we can use to generate
a 24-bit ident value based on the codebooks for vorbis and theora.
* gst/rtp/gstrtptheorapay.c (gst_rtp_theora_pay_finish_headers,
gst_rtp_theora_pay_handle_buffer):
* gst/rtp/gstrtpvorbisdepay.c
(gst_rtp_vorbis_depay_parse_configuration,
gst_rtp_vorbis_depay_switch_codebook, gst_rtp_vorbis_depay_process):
* gst/rtp/gstrtpvorbispay.c (gst_rtp_vorbis_pay_reset_packet,
gst_rtp_vorbis_pay_init_packet, gst_rtp_vorbis_pay_flush_packet,
gst_rtp_vorbis_pay_finish_headers, gst_rtp_vorbis_pay_handle_buffer):
Use the hashing function, ensuring that the same codebooks result
in the same ident and thus the same SDP description.
Various log fixes/changes.
2007-04-12 11:41:11 +00:00
|
|
|
GST_LOG_OBJECT (rtpvorbispay, "starting new packet, VDT: %d", VDT);
|
2006-09-22 15:15:13 +00:00
|
|
|
|
2015-09-19 15:04:07 +00:00
|
|
|
gst_rtp_vorbis_pay_clear_packet (rtpvorbispay);
|
2006-09-22 15:15:13 +00:00
|
|
|
|
|
|
|
/* new packet allocate max packet size */
|
|
|
|
rtpvorbispay->packet =
|
2011-11-11 11:25:01 +00:00
|
|
|
gst_rtp_buffer_new_allocate_len (GST_RTP_BASE_PAYLOAD_MTU
|
2006-09-22 15:15:13 +00:00
|
|
|
(rtpvorbispay), 0, 0);
|
|
|
|
gst_rtp_vorbis_pay_reset_packet (rtpvorbispay, VDT);
|
2013-06-28 13:21:56 +00:00
|
|
|
|
2015-06-10 12:33:50 +00:00
|
|
|
GST_BUFFER_PTS (rtpvorbispay->packet) = timestamp;
|
2006-09-22 15:15:13 +00:00
|
|
|
}
|
|
|
|
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
static GstFlowReturn
|
|
|
|
gst_rtp_vorbis_pay_flush_packet (GstRtpVorbisPay * rtpvorbispay)
|
|
|
|
{
|
|
|
|
GstFlowReturn ret;
|
|
|
|
guint8 *payload;
|
|
|
|
guint hlen;
|
2011-12-05 17:39:59 +00:00
|
|
|
GstRTPBuffer rtp = { NULL };
|
2015-08-04 17:59:17 +00:00
|
|
|
GList *l;
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
|
|
|
|
/* check for empty packet */
|
2006-09-22 15:15:13 +00:00
|
|
|
if (!rtpvorbispay->packet || rtpvorbispay->payload_pos <= 4)
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
return GST_FLOW_OK;
|
|
|
|
|
gst/rtp/Makefile.am: gst/rtp/fnv1hash.c (MASK_24, FNV1_HASH_32_INIT, FNV1_HASH_32_PRIME, fnv1_hash_32_new, fnv1_hash_...
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/fnv1hash.c (MASK_24, FNV1_HASH_32_INIT, FNV1_HASH_32_PRIME,
fnv1_hash_32_new, fnv1_hash_32_update, fnv1_hash_32_to_24):
* gst/rtp/fnv1hash.h (__GST_FNV1_HASH_H__):
Add a simple hashing implementation that we can use to generate
a 24-bit ident value based on the codebooks for vorbis and theora.
* gst/rtp/gstrtptheorapay.c (gst_rtp_theora_pay_finish_headers,
gst_rtp_theora_pay_handle_buffer):
* gst/rtp/gstrtpvorbisdepay.c
(gst_rtp_vorbis_depay_parse_configuration,
gst_rtp_vorbis_depay_switch_codebook, gst_rtp_vorbis_depay_process):
* gst/rtp/gstrtpvorbispay.c (gst_rtp_vorbis_pay_reset_packet,
gst_rtp_vorbis_pay_init_packet, gst_rtp_vorbis_pay_flush_packet,
gst_rtp_vorbis_pay_finish_headers, gst_rtp_vorbis_pay_handle_buffer):
Use the hashing function, ensuring that the same codebooks result
in the same ident and thus the same SDP description.
Various log fixes/changes.
2007-04-12 11:41:11 +00:00
|
|
|
GST_LOG_OBJECT (rtpvorbispay, "flushing packet");
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
|
2011-07-10 19:50:19 +00:00
|
|
|
gst_rtp_buffer_map (rtpvorbispay->packet, GST_MAP_WRITE, &rtp);
|
|
|
|
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
/* fix header */
|
2011-07-10 19:50:19 +00:00
|
|
|
payload = gst_rtp_buffer_get_payload (&rtp);
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
/*
|
|
|
|
* 0 1 2 3
|
|
|
|
* 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
|
|
|
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
|
|
* | Ident | F |VDT|# pkts.|
|
|
|
|
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
|
|
*
|
|
|
|
* F: Fragment type (0=none, 1=start, 2=cont, 3=end)
|
|
|
|
* VDT: Vorbis data type (0=vorbis, 1=config, 2=comment, 3=reserved)
|
|
|
|
* pkts: number of packets.
|
|
|
|
*/
|
|
|
|
payload[0] = (rtpvorbispay->payload_ident >> 16) & 0xff;
|
|
|
|
payload[1] = (rtpvorbispay->payload_ident >> 8) & 0xff;
|
|
|
|
payload[2] = (rtpvorbispay->payload_ident) & 0xff;
|
|
|
|
payload[3] = (rtpvorbispay->payload_F & 0x3) << 6 |
|
|
|
|
(rtpvorbispay->payload_VDT & 0x3) << 4 |
|
|
|
|
(rtpvorbispay->payload_pkts & 0xf);
|
|
|
|
|
2011-07-10 19:50:19 +00:00
|
|
|
gst_rtp_buffer_unmap (&rtp);
|
|
|
|
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
/* shrink the buffer size to the last written byte */
|
|
|
|
hlen = gst_rtp_buffer_calc_header_len (0);
|
2011-07-10 19:50:19 +00:00
|
|
|
gst_buffer_resize (rtpvorbispay->packet, 0, hlen + rtpvorbispay->payload_pos);
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
|
2007-09-19 16:24:09 +00:00
|
|
|
GST_BUFFER_DURATION (rtpvorbispay->packet) = rtpvorbispay->payload_duration;
|
|
|
|
|
2015-08-04 17:59:17 +00:00
|
|
|
for (l = g_list_last (rtpvorbispay->packet_buffers); l; l = l->prev) {
|
|
|
|
GstBuffer *buf = GST_BUFFER_CAST (l->data);
|
|
|
|
gst_rtp_copy_meta (GST_ELEMENT_CAST (rtpvorbispay), rtpvorbispay->packet,
|
|
|
|
buf, g_quark_from_static_string (GST_META_TAG_AUDIO_STR));
|
|
|
|
gst_buffer_unref (buf);
|
|
|
|
}
|
|
|
|
g_list_free (rtpvorbispay->packet_buffers);
|
|
|
|
rtpvorbispay->packet_buffers = NULL;
|
|
|
|
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
/* push, this gives away our ref to the packet, so clear it. */
|
|
|
|
ret =
|
2011-11-11 11:25:01 +00:00
|
|
|
gst_rtp_base_payload_push (GST_RTP_BASE_PAYLOAD (rtpvorbispay),
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
rtpvorbispay->packet);
|
|
|
|
rtpvorbispay->packet = NULL;
|
|
|
|
|
|
|
|
return ret;
|
|
|
|
}
|
|
|
|
|
2006-11-06 20:52:10 +00:00
|
|
|
static gboolean
|
2011-11-11 11:25:01 +00:00
|
|
|
gst_rtp_vorbis_pay_finish_headers (GstRTPBasePayload * basepayload)
|
2006-11-06 20:52:10 +00:00
|
|
|
{
|
|
|
|
GstRtpVorbisPay *rtpvorbispay = GST_RTP_VORBIS_PAY (basepayload);
|
|
|
|
GList *walk;
|
2013-06-28 13:21:56 +00:00
|
|
|
guint length, size, n_headers, configlen, extralen;
|
2006-11-06 20:52:10 +00:00
|
|
|
gchar *cstr, *configuration;
|
2007-05-11 15:04:38 +00:00
|
|
|
guint8 *data, *config;
|
2006-11-06 20:52:10 +00:00
|
|
|
guint32 ident;
|
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;
|
2006-11-06 20:52:10 +00:00
|
|
|
|
|
|
|
GST_DEBUG_OBJECT (rtpvorbispay, "finish headers");
|
|
|
|
|
|
|
|
if (!rtpvorbispay->headers)
|
|
|
|
goto no_headers;
|
|
|
|
|
|
|
|
/* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
|
|
* | Number of packed headers |
|
|
|
|
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
|
|
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
|
|
* | Packed header |
|
|
|
|
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
|
|
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
|
|
* | Packed header |
|
|
|
|
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
|
|
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
|
|
* | .... |
|
|
|
|
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
|
|
*
|
|
|
|
* We only construct a config containing 1 packed header like this:
|
|
|
|
*
|
|
|
|
* 0 1 2 3
|
|
|
|
* 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
|
|
|
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
2007-05-11 15:04:38 +00:00
|
|
|
* | Ident | length ..
|
|
|
|
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
|
|
* .. | n. of headers | length1 | length2 ..
|
|
|
|
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
|
|
* .. | Identification Header ..
|
|
|
|
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
|
|
* .................................................................
|
|
|
|
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
|
|
* .. | Comment Header ..
|
2006-11-06 20:52:10 +00:00
|
|
|
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
2007-05-11 15:04:38 +00:00
|
|
|
* .................................................................
|
2006-11-06 20:52:10 +00:00
|
|
|
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
2007-05-11 15:04:38 +00:00
|
|
|
* .. Comment Header |
|
2006-11-06 20:52:10 +00:00
|
|
|
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
|
|
* | Setup Header ..
|
|
|
|
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
2007-05-11 15:04:38 +00:00
|
|
|
* .................................................................
|
|
|
|
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
2006-11-06 20:52:10 +00:00
|
|
|
* .. Setup Header |
|
|
|
|
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
|
|
*/
|
|
|
|
|
2007-05-11 15:04:38 +00:00
|
|
|
/* we need 4 bytes for the number of headers (which is always 1), 3 bytes for
|
|
|
|
* the ident, 2 bytes for length, 1 byte for n. of headers. */
|
|
|
|
size = 4 + 3 + 2 + 1;
|
|
|
|
|
|
|
|
/* count the size of the headers first and update the hash */
|
2006-11-06 20:52:10 +00:00
|
|
|
length = 0;
|
2007-05-11 15:04:38 +00:00
|
|
|
n_headers = 0;
|
gst/rtp/Makefile.am: gst/rtp/fnv1hash.c (MASK_24, FNV1_HASH_32_INIT, FNV1_HASH_32_PRIME, fnv1_hash_32_new, fnv1_hash_...
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/fnv1hash.c (MASK_24, FNV1_HASH_32_INIT, FNV1_HASH_32_PRIME,
fnv1_hash_32_new, fnv1_hash_32_update, fnv1_hash_32_to_24):
* gst/rtp/fnv1hash.h (__GST_FNV1_HASH_H__):
Add a simple hashing implementation that we can use to generate
a 24-bit ident value based on the codebooks for vorbis and theora.
* gst/rtp/gstrtptheorapay.c (gst_rtp_theora_pay_finish_headers,
gst_rtp_theora_pay_handle_buffer):
* gst/rtp/gstrtpvorbisdepay.c
(gst_rtp_vorbis_depay_parse_configuration,
gst_rtp_vorbis_depay_switch_codebook, gst_rtp_vorbis_depay_process):
* gst/rtp/gstrtpvorbispay.c (gst_rtp_vorbis_pay_reset_packet,
gst_rtp_vorbis_pay_init_packet, gst_rtp_vorbis_pay_flush_packet,
gst_rtp_vorbis_pay_finish_headers, gst_rtp_vorbis_pay_handle_buffer):
Use the hashing function, ensuring that the same codebooks result
in the same ident and thus the same SDP description.
Various log fixes/changes.
2007-04-12 11:41:11 +00:00
|
|
|
ident = fnv1_hash_32_new ();
|
2013-06-28 13:21:56 +00:00
|
|
|
extralen = 1;
|
2006-11-06 20:52:10 +00:00
|
|
|
for (walk = rtpvorbispay->headers; walk; walk = g_list_next (walk)) {
|
|
|
|
GstBuffer *buf = GST_BUFFER_CAST (walk->data);
|
2012-01-24 13:38:58 +00:00
|
|
|
GstMapInfo map;
|
|
|
|
guint bsize;
|
2007-05-11 15:04:38 +00:00
|
|
|
|
2012-01-24 13:38:58 +00:00
|
|
|
bsize = gst_buffer_get_size (buf);
|
2007-05-11 15:04:38 +00:00
|
|
|
length += bsize;
|
|
|
|
n_headers++;
|
|
|
|
|
|
|
|
/* count number of bytes needed for length fields, we don't need this for
|
|
|
|
* the last header. */
|
|
|
|
if (g_list_next (walk)) {
|
|
|
|
do {
|
|
|
|
size++;
|
2013-06-28 13:21:56 +00:00
|
|
|
extralen++;
|
2007-05-11 15:04:38 +00:00
|
|
|
bsize >>= 7;
|
|
|
|
} while (bsize);
|
|
|
|
}
|
|
|
|
/* update hash */
|
2012-01-24 13:38:58 +00:00
|
|
|
gst_buffer_map (buf, &map, GST_MAP_READ);
|
|
|
|
ident = fnv1_hash_32_update (ident, map.data, map.size);
|
|
|
|
gst_buffer_unmap (buf, &map);
|
2006-11-06 20:52:10 +00:00
|
|
|
}
|
|
|
|
|
2007-05-11 15:04:38 +00:00
|
|
|
/* packet length is header size + packet length */
|
|
|
|
configlen = size + length;
|
|
|
|
config = data = g_malloc (configlen);
|
2006-11-06 20:52:10 +00:00
|
|
|
|
2006-11-07 01:43:06 +00:00
|
|
|
/* number of packed headers, we only pack 1 header */
|
|
|
|
data[0] = 0;
|
|
|
|
data[1] = 0;
|
|
|
|
data[2] = 0;
|
|
|
|
data[3] = 1;
|
|
|
|
|
gst/rtp/Makefile.am: gst/rtp/fnv1hash.c (MASK_24, FNV1_HASH_32_INIT, FNV1_HASH_32_PRIME, fnv1_hash_32_new, fnv1_hash_...
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/fnv1hash.c (MASK_24, FNV1_HASH_32_INIT, FNV1_HASH_32_PRIME,
fnv1_hash_32_new, fnv1_hash_32_update, fnv1_hash_32_to_24):
* gst/rtp/fnv1hash.h (__GST_FNV1_HASH_H__):
Add a simple hashing implementation that we can use to generate
a 24-bit ident value based on the codebooks for vorbis and theora.
* gst/rtp/gstrtptheorapay.c (gst_rtp_theora_pay_finish_headers,
gst_rtp_theora_pay_handle_buffer):
* gst/rtp/gstrtpvorbisdepay.c
(gst_rtp_vorbis_depay_parse_configuration,
gst_rtp_vorbis_depay_switch_codebook, gst_rtp_vorbis_depay_process):
* gst/rtp/gstrtpvorbispay.c (gst_rtp_vorbis_pay_reset_packet,
gst_rtp_vorbis_pay_init_packet, gst_rtp_vorbis_pay_flush_packet,
gst_rtp_vorbis_pay_finish_headers, gst_rtp_vorbis_pay_handle_buffer):
Use the hashing function, ensuring that the same codebooks result
in the same ident and thus the same SDP description.
Various log fixes/changes.
2007-04-12 11:41:11 +00:00
|
|
|
ident = fnv1_hash_32_to_24 (ident);
|
|
|
|
rtpvorbispay->payload_ident = ident;
|
|
|
|
GST_DEBUG_OBJECT (rtpvorbispay, "ident 0x%08x", ident);
|
2006-11-06 20:52:10 +00:00
|
|
|
|
|
|
|
/* take lower 3 bytes */
|
2006-11-07 01:43:06 +00:00
|
|
|
data[4] = (ident >> 16) & 0xff;
|
|
|
|
data[5] = (ident >> 8) & 0xff;
|
|
|
|
data[6] = ident & 0xff;
|
2006-11-06 20:52:10 +00:00
|
|
|
|
2007-05-11 15:04:38 +00:00
|
|
|
/* store length of all vorbis headers */
|
|
|
|
data[7] = ((length) >> 8) & 0xff;
|
|
|
|
data[8] = (length) & 0xff;
|
|
|
|
|
|
|
|
/* store number of headers minus one. */
|
|
|
|
data[9] = n_headers - 1;
|
|
|
|
data += 10;
|
|
|
|
|
|
|
|
/* store length for each header */
|
|
|
|
for (walk = rtpvorbispay->headers; walk; walk = g_list_next (walk)) {
|
|
|
|
GstBuffer *buf = GST_BUFFER_CAST (walk->data);
|
|
|
|
guint bsize, size, temp;
|
2009-04-02 00:23:33 +00:00
|
|
|
guint flag;
|
2007-05-11 15:04:38 +00:00
|
|
|
|
|
|
|
/* only need to store the length when it's not the last header */
|
|
|
|
if (!g_list_next (walk))
|
|
|
|
break;
|
|
|
|
|
2011-07-10 19:50:19 +00:00
|
|
|
bsize = gst_buffer_get_size (buf);
|
2007-05-11 15:04:38 +00:00
|
|
|
|
|
|
|
/* calc size */
|
|
|
|
size = 0;
|
|
|
|
do {
|
|
|
|
size++;
|
|
|
|
bsize >>= 7;
|
|
|
|
} while (bsize);
|
|
|
|
temp = size;
|
|
|
|
|
2011-07-10 19:50:19 +00:00
|
|
|
bsize = gst_buffer_get_size (buf);
|
2007-05-11 15:04:38 +00:00
|
|
|
/* write the size backwards */
|
2009-04-02 00:23:33 +00:00
|
|
|
flag = 0;
|
2007-05-11 15:04:38 +00:00
|
|
|
while (size) {
|
|
|
|
size--;
|
2009-04-02 00:23:33 +00:00
|
|
|
data[size] = (bsize & 0x7f) | flag;
|
2007-05-11 15:04:38 +00:00
|
|
|
bsize >>= 7;
|
2009-04-02 00:23:33 +00:00
|
|
|
flag = 0x80; /* Flag bit on all bytes of the length except the last */
|
2007-05-11 15:04:38 +00:00
|
|
|
}
|
|
|
|
data += temp;
|
|
|
|
}
|
2006-11-06 20:52:10 +00:00
|
|
|
|
|
|
|
/* copy header data */
|
|
|
|
for (walk = rtpvorbispay->headers; walk; walk = g_list_next (walk)) {
|
|
|
|
GstBuffer *buf = GST_BUFFER_CAST (walk->data);
|
|
|
|
|
2011-07-10 19:50:19 +00:00
|
|
|
gst_buffer_extract (buf, 0, data, gst_buffer_get_size (buf));
|
|
|
|
data += gst_buffer_get_size (buf);
|
2006-11-06 20:52:10 +00:00
|
|
|
}
|
2013-06-28 09:43:17 +00:00
|
|
|
rtpvorbispay->need_headers = FALSE;
|
2006-11-06 20:52:10 +00:00
|
|
|
|
2007-05-11 15:04:38 +00:00
|
|
|
/* serialize to base64 */
|
2009-03-18 13:50:17 +00:00
|
|
|
configuration = g_base64_encode (config, configlen);
|
2013-06-28 13:21:56 +00:00
|
|
|
|
|
|
|
/* store for later re-sending */
|
2015-11-15 04:33:54 +00:00
|
|
|
g_free (rtpvorbispay->config_data);
|
2013-06-28 13:21:56 +00:00
|
|
|
rtpvorbispay->config_size = configlen - 4 - 3 - 2;
|
|
|
|
rtpvorbispay->config_data = g_malloc (rtpvorbispay->config_size);
|
|
|
|
rtpvorbispay->config_extra_len = extralen;
|
|
|
|
memcpy (rtpvorbispay->config_data, config + 4 + 3 + 2,
|
|
|
|
rtpvorbispay->config_size);
|
|
|
|
|
2007-05-11 15:04:38 +00:00
|
|
|
g_free (config);
|
2006-11-06 20:52:10 +00:00
|
|
|
|
|
|
|
/* configure payloader settings */
|
|
|
|
cstr = g_strdup_printf ("%d", rtpvorbispay->channels);
|
2011-11-11 11:25:01 +00:00
|
|
|
gst_rtp_base_payload_set_options (basepayload, "audio", TRUE, "VORBIS",
|
2006-11-06 20:52:10 +00:00
|
|
|
rtpvorbispay->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 =
|
2011-11-11 11:25:01 +00:00
|
|
|
gst_rtp_base_payload_set_outcaps (basepayload, "encoding-params",
|
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
|
|
|
G_TYPE_STRING, cstr, "configuration", G_TYPE_STRING, configuration, NULL);
|
2006-11-06 20:52:10 +00:00
|
|
|
g_free (cstr);
|
|
|
|
g_free (configuration);
|
|
|
|
|
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;
|
2006-11-06 20:52:10 +00:00
|
|
|
|
|
|
|
/* ERRORS */
|
|
|
|
no_headers:
|
|
|
|
{
|
|
|
|
GST_DEBUG_OBJECT (rtpvorbispay, "finish headers");
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2006-09-22 15:15:13 +00:00
|
|
|
static gboolean
|
2011-11-11 11:25:01 +00:00
|
|
|
gst_rtp_vorbis_pay_parse_id (GstRTPBasePayload * basepayload, guint8 * data,
|
2006-09-22 15:15:13 +00:00
|
|
|
guint size)
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
{
|
2006-11-06 20:52:10 +00:00
|
|
|
GstRtpVorbisPay *rtpvorbispay = GST_RTP_VORBIS_PAY (basepayload);
|
2006-09-22 15:15:13 +00:00
|
|
|
guint8 channels;
|
|
|
|
gint32 rate, version;
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
|
2006-09-22 15:15:13 +00:00
|
|
|
if (G_UNLIKELY (size < 16))
|
|
|
|
goto too_short;
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
|
2006-09-22 15:15:13 +00:00
|
|
|
if (G_UNLIKELY (memcmp (data, "\001vorbis", 7)))
|
|
|
|
goto invalid_start;
|
|
|
|
data += 7;
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
|
2006-09-22 15:15:13 +00:00
|
|
|
if (G_UNLIKELY ((version = GST_READ_UINT32_LE (data)) != 0))
|
|
|
|
goto invalid_version;
|
|
|
|
data += 4;
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
|
2006-09-22 15:15:13 +00:00
|
|
|
if (G_UNLIKELY ((channels = *data++) < 1))
|
|
|
|
goto invalid_channels;
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
|
2006-09-22 15:15:13 +00:00
|
|
|
if (G_UNLIKELY ((rate = GST_READ_UINT32_LE (data)) < 1))
|
|
|
|
goto invalid_rate;
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
|
2006-11-06 20:52:10 +00:00
|
|
|
/* all fine, store the values */
|
|
|
|
rtpvorbispay->channels = channels;
|
|
|
|
rtpvorbispay->rate = rate;
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
|
2006-09-22 15:15:13 +00:00
|
|
|
return TRUE;
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
|
2006-09-22 15:15:13 +00:00
|
|
|
/* ERRORS */
|
|
|
|
too_short:
|
|
|
|
{
|
|
|
|
GST_ELEMENT_ERROR (basepayload, STREAM, DECODE,
|
|
|
|
("Identification packet is too short, need at least 16, got %d", size),
|
|
|
|
(NULL));
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
invalid_start:
|
|
|
|
{
|
|
|
|
GST_ELEMENT_ERROR (basepayload, STREAM, DECODE,
|
|
|
|
("Invalid header start in identification packet"), (NULL));
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
invalid_version:
|
|
|
|
{
|
|
|
|
GST_ELEMENT_ERROR (basepayload, STREAM, DECODE,
|
|
|
|
("Invalid version, expected 0, got %d", version), (NULL));
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
invalid_rate:
|
|
|
|
{
|
|
|
|
GST_ELEMENT_ERROR (basepayload, STREAM, DECODE,
|
|
|
|
("Invalid rate %d", rate), (NULL));
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
invalid_channels:
|
|
|
|
{
|
|
|
|
GST_ELEMENT_ERROR (basepayload, STREAM, DECODE,
|
|
|
|
("Invalid channels %d", channels), (NULL));
|
|
|
|
return FALSE;
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static GstFlowReturn
|
2013-06-28 13:21:56 +00:00
|
|
|
gst_rtp_vorbis_pay_payload_buffer (GstRtpVorbisPay * rtpvorbispay, guint8 VDT,
|
2015-08-04 17:59:17 +00:00
|
|
|
GstBuffer * buffer, guint8 * data, guint size, GstClockTime timestamp,
|
|
|
|
GstClockTime duration, guint not_in_length)
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
{
|
2013-06-28 13:21:56 +00:00
|
|
|
GstFlowReturn ret = GST_FLOW_OK;
|
2011-07-10 19:50:19 +00:00
|
|
|
guint newsize;
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
guint packet_len;
|
2013-06-28 13:21:56 +00:00
|
|
|
GstClockTime newduration;
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
gboolean flush;
|
2006-09-22 15:15:13 +00:00
|
|
|
guint plen;
|
|
|
|
guint8 *ppos, *payload;
|
|
|
|
gboolean fragmented;
|
2011-12-05 17:39:59 +00:00
|
|
|
GstRTPBuffer rtp = { NULL };
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
|
|
|
|
/* size increases with packet length and 2 bytes size eader. */
|
|
|
|
newduration = rtpvorbispay->payload_duration;
|
|
|
|
if (duration != GST_CLOCK_TIME_NONE)
|
|
|
|
newduration += duration;
|
|
|
|
|
|
|
|
newsize = rtpvorbispay->payload_pos + 2 + size;
|
|
|
|
packet_len = gst_rtp_buffer_calc_packet_len (newsize, 0, 0);
|
|
|
|
|
|
|
|
/* check buffer filled against length and max latency */
|
2013-06-28 13:21:56 +00:00
|
|
|
flush = gst_rtp_base_payload_is_filled (GST_RTP_BASE_PAYLOAD (rtpvorbispay),
|
|
|
|
packet_len, newduration);
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
/* we can store up to 15 vorbis packets in one RTP packet. */
|
|
|
|
flush |= (rtpvorbispay->payload_pkts == 15);
|
2006-09-22 15:15:13 +00:00
|
|
|
/* flush if we have a new VDT */
|
|
|
|
if (rtpvorbispay->packet)
|
|
|
|
flush |= (rtpvorbispay->payload_VDT != VDT);
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
if (flush)
|
2013-06-28 13:21:56 +00:00
|
|
|
ret = gst_rtp_vorbis_pay_flush_packet (rtpvorbispay);
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
|
2015-08-08 15:41:02 +00:00
|
|
|
if (ret != GST_FLOW_OK)
|
|
|
|
goto done;
|
|
|
|
|
2006-09-22 15:15:13 +00:00
|
|
|
/* create new packet if we must */
|
2006-11-07 01:43:06 +00:00
|
|
|
if (!rtpvorbispay->packet) {
|
|
|
|
gst_rtp_vorbis_pay_init_packet (rtpvorbispay, VDT, timestamp);
|
|
|
|
}
|
2006-09-22 15:15:13 +00:00
|
|
|
|
2011-07-10 19:50:19 +00:00
|
|
|
gst_rtp_buffer_map (rtpvorbispay->packet, GST_MAP_WRITE, &rtp);
|
|
|
|
payload = gst_rtp_buffer_get_payload (&rtp);
|
2006-09-22 15:15:13 +00:00
|
|
|
ppos = payload + rtpvorbispay->payload_pos;
|
|
|
|
fragmented = FALSE;
|
|
|
|
|
|
|
|
/* put buffer in packet, it either fits completely or needs to be fragmented
|
|
|
|
* over multiple RTP packets. */
|
2013-06-28 13:21:56 +00:00
|
|
|
do {
|
2006-09-22 15:15:13 +00:00
|
|
|
plen = MIN (rtpvorbispay->payload_left - 2, size);
|
|
|
|
|
gst/rtp/Makefile.am: gst/rtp/fnv1hash.c (MASK_24, FNV1_HASH_32_INIT, FNV1_HASH_32_PRIME, fnv1_hash_32_new, fnv1_hash_...
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/fnv1hash.c (MASK_24, FNV1_HASH_32_INIT, FNV1_HASH_32_PRIME,
fnv1_hash_32_new, fnv1_hash_32_update, fnv1_hash_32_to_24):
* gst/rtp/fnv1hash.h (__GST_FNV1_HASH_H__):
Add a simple hashing implementation that we can use to generate
a 24-bit ident value based on the codebooks for vorbis and theora.
* gst/rtp/gstrtptheorapay.c (gst_rtp_theora_pay_finish_headers,
gst_rtp_theora_pay_handle_buffer):
* gst/rtp/gstrtpvorbisdepay.c
(gst_rtp_vorbis_depay_parse_configuration,
gst_rtp_vorbis_depay_switch_codebook, gst_rtp_vorbis_depay_process):
* gst/rtp/gstrtpvorbispay.c (gst_rtp_vorbis_pay_reset_packet,
gst_rtp_vorbis_pay_init_packet, gst_rtp_vorbis_pay_flush_packet,
gst_rtp_vorbis_pay_finish_headers, gst_rtp_vorbis_pay_handle_buffer):
Use the hashing function, ensuring that the same codebooks result
in the same ident and thus the same SDP description.
Various log fixes/changes.
2007-04-12 11:41:11 +00:00
|
|
|
GST_LOG_OBJECT (rtpvorbispay, "append %u bytes", plen);
|
2006-09-22 15:15:13 +00:00
|
|
|
|
|
|
|
/* data is copied in the payload with a 2 byte length header */
|
2013-06-28 13:21:56 +00:00
|
|
|
ppos[0] = ((plen - not_in_length) >> 8) & 0xff;
|
|
|
|
ppos[1] = ((plen - not_in_length) & 0xff);
|
|
|
|
if (plen)
|
|
|
|
memcpy (&ppos[2], data, plen);
|
|
|
|
|
2015-08-04 17:59:17 +00:00
|
|
|
if (buffer) {
|
|
|
|
if (!rtpvorbispay->packet_buffers
|
|
|
|
|| rtpvorbispay->packet_buffers->data != (gpointer) buffer)
|
|
|
|
rtpvorbispay->packet_buffers =
|
|
|
|
g_list_prepend (rtpvorbispay->packet_buffers,
|
|
|
|
gst_buffer_ref (buffer));
|
|
|
|
} else {
|
|
|
|
GList *l;
|
|
|
|
|
|
|
|
for (l = rtpvorbispay->headers; l; l = l->next)
|
|
|
|
rtpvorbispay->packet_buffers =
|
|
|
|
g_list_prepend (rtpvorbispay->packet_buffers,
|
2015-09-19 16:44:22 +00:00
|
|
|
gst_buffer_ref (l->data));
|
2015-08-04 17:59:17 +00:00
|
|
|
}
|
|
|
|
|
2013-06-28 13:21:56 +00:00
|
|
|
/* only first (only) configuration cuts length field */
|
|
|
|
/* NOTE: spec (if any) is not clear on this ... */
|
|
|
|
not_in_length = 0;
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
|
2006-09-22 15:15:13 +00:00
|
|
|
size -= plen;
|
|
|
|
data += plen;
|
|
|
|
|
|
|
|
rtpvorbispay->payload_pos += plen + 2;
|
|
|
|
rtpvorbispay->payload_left -= plen + 2;
|
|
|
|
|
|
|
|
if (fragmented) {
|
|
|
|
if (size == 0)
|
|
|
|
/* last fragment, set F to 0x3. */
|
|
|
|
rtpvorbispay->payload_F = 0x3;
|
|
|
|
else
|
|
|
|
/* fragment continues, set F to 0x2. */
|
|
|
|
rtpvorbispay->payload_F = 0x2;
|
|
|
|
} else {
|
|
|
|
if (size > 0) {
|
|
|
|
/* fragmented packet starts, set F to 0x1, mark ourselves as
|
|
|
|
* fragmented. */
|
|
|
|
rtpvorbispay->payload_F = 0x1;
|
|
|
|
fragmented = TRUE;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (fragmented) {
|
2011-07-10 19:50:19 +00:00
|
|
|
gst_rtp_buffer_unmap (&rtp);
|
2006-09-22 15:15:13 +00:00
|
|
|
/* fragmented packets are always flushed and have ptks of 0 */
|
|
|
|
rtpvorbispay->payload_pkts = 0;
|
|
|
|
ret = gst_rtp_vorbis_pay_flush_packet (rtpvorbispay);
|
|
|
|
|
|
|
|
if (size > 0) {
|
|
|
|
/* start new packet and get pointers. VDT stays the same. */
|
|
|
|
gst_rtp_vorbis_pay_init_packet (rtpvorbispay,
|
2006-11-07 01:43:06 +00:00
|
|
|
rtpvorbispay->payload_VDT, timestamp);
|
2011-07-10 19:50:19 +00:00
|
|
|
gst_rtp_buffer_map (rtpvorbispay->packet, GST_MAP_WRITE, &rtp);
|
|
|
|
payload = gst_rtp_buffer_get_payload (&rtp);
|
2006-09-22 15:15:13 +00:00
|
|
|
ppos = payload + rtpvorbispay->payload_pos;
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
/* unfragmented packet, update stats for next packet, size == 0 and we
|
|
|
|
* exit the while loop */
|
|
|
|
rtpvorbispay->payload_pkts++;
|
|
|
|
if (duration != GST_CLOCK_TIME_NONE)
|
|
|
|
rtpvorbispay->payload_duration += duration;
|
|
|
|
}
|
2015-08-08 15:41:02 +00:00
|
|
|
} while (size && ret == GST_FLOW_OK);
|
2011-07-10 19:50:19 +00:00
|
|
|
|
|
|
|
if (rtp.buffer)
|
|
|
|
gst_rtp_buffer_unmap (&rtp);
|
|
|
|
|
2015-08-08 15:41:02 +00:00
|
|
|
done:
|
|
|
|
|
2013-06-28 13:21:56 +00:00
|
|
|
return ret;
|
|
|
|
}
|
|
|
|
|
|
|
|
static GstFlowReturn
|
|
|
|
gst_rtp_vorbis_pay_handle_buffer (GstRTPBasePayload * basepayload,
|
|
|
|
GstBuffer * buffer)
|
|
|
|
{
|
|
|
|
GstRtpVorbisPay *rtpvorbispay;
|
|
|
|
GstFlowReturn ret;
|
|
|
|
GstMapInfo map;
|
|
|
|
gsize size;
|
|
|
|
guint8 *data;
|
|
|
|
GstClockTime duration, timestamp;
|
|
|
|
guint8 VDT;
|
|
|
|
|
|
|
|
rtpvorbispay = GST_RTP_VORBIS_PAY (basepayload);
|
|
|
|
|
|
|
|
gst_buffer_map (buffer, &map, GST_MAP_READ);
|
|
|
|
data = map.data;
|
|
|
|
size = map.size;
|
|
|
|
duration = GST_BUFFER_DURATION (buffer);
|
2015-06-10 12:33:50 +00:00
|
|
|
timestamp = GST_BUFFER_PTS (buffer);
|
2013-06-28 13:21:56 +00:00
|
|
|
|
|
|
|
GST_LOG_OBJECT (rtpvorbispay, "size %" G_GSIZE_FORMAT
|
|
|
|
", duration %" GST_TIME_FORMAT, size, GST_TIME_ARGS (duration));
|
|
|
|
|
2013-11-21 10:32:15 +00:00
|
|
|
if (G_UNLIKELY (size < 1))
|
2013-06-28 13:21:56 +00:00
|
|
|
goto wrong_size;
|
|
|
|
|
|
|
|
/* find packet type */
|
|
|
|
if (data[0] & 1) {
|
|
|
|
/* header */
|
|
|
|
if (data[0] == 1) {
|
|
|
|
/* identification, we need to parse this in order to get the clock rate. */
|
|
|
|
if (G_UNLIKELY (!gst_rtp_vorbis_pay_parse_id (basepayload, data, size)))
|
|
|
|
goto parse_id_failed;
|
|
|
|
VDT = 1;
|
|
|
|
} else if (data[0] == 3) {
|
|
|
|
/* comment */
|
|
|
|
VDT = 2;
|
|
|
|
} else if (data[0] == 5) {
|
|
|
|
/* setup */
|
|
|
|
VDT = 1;
|
|
|
|
} else
|
|
|
|
goto unknown_header;
|
|
|
|
} else
|
|
|
|
/* data */
|
|
|
|
VDT = 0;
|
|
|
|
|
|
|
|
/* we need to collect the headers and construct a config string from them */
|
|
|
|
if (VDT != 0) {
|
|
|
|
GST_DEBUG_OBJECT (rtpvorbispay, "collecting header");
|
|
|
|
/* append header to the list of headers */
|
|
|
|
gst_buffer_unmap (buffer, &map);
|
|
|
|
rtpvorbispay->headers = g_list_append (rtpvorbispay->headers, buffer);
|
|
|
|
ret = GST_FLOW_OK;
|
|
|
|
goto done;
|
2015-08-04 17:59:17 +00:00
|
|
|
} else if (rtpvorbispay->headers && rtpvorbispay->need_headers) {
|
|
|
|
if (!gst_rtp_vorbis_pay_finish_headers (basepayload))
|
|
|
|
goto header_error;
|
2013-06-28 13:21:56 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/* there is a config request, see if we need to insert it */
|
|
|
|
if (rtpvorbispay->config_interval > 0 && rtpvorbispay->config_data) {
|
|
|
|
gboolean send_config = FALSE;
|
|
|
|
|
|
|
|
if (rtpvorbispay->last_config != -1) {
|
|
|
|
guint64 diff;
|
|
|
|
|
|
|
|
GST_LOG_OBJECT (rtpvorbispay,
|
|
|
|
"now %" GST_TIME_FORMAT ", last config %" GST_TIME_FORMAT,
|
|
|
|
GST_TIME_ARGS (timestamp), GST_TIME_ARGS (rtpvorbispay->last_config));
|
|
|
|
|
|
|
|
/* calculate diff between last config in milliseconds */
|
|
|
|
if (timestamp > rtpvorbispay->last_config) {
|
|
|
|
diff = timestamp - rtpvorbispay->last_config;
|
|
|
|
} else {
|
|
|
|
diff = 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
GST_DEBUG_OBJECT (rtpvorbispay,
|
|
|
|
"interval since last config %" GST_TIME_FORMAT, GST_TIME_ARGS (diff));
|
|
|
|
|
|
|
|
/* bigger than interval, queue config */
|
|
|
|
/* FIXME should convert timestamps to running time */
|
|
|
|
if (GST_TIME_AS_SECONDS (diff) >= rtpvorbispay->config_interval) {
|
|
|
|
GST_DEBUG_OBJECT (rtpvorbispay, "time to send config");
|
|
|
|
send_config = TRUE;
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
/* no known previous config time, send now */
|
|
|
|
GST_DEBUG_OBJECT (rtpvorbispay, "no previous config time, send now");
|
|
|
|
send_config = TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (send_config) {
|
|
|
|
/* we need to send config now first */
|
|
|
|
/* different TDT type forces flush */
|
|
|
|
gst_rtp_vorbis_pay_payload_buffer (rtpvorbispay, 1,
|
2015-08-04 17:59:17 +00:00
|
|
|
NULL, rtpvorbispay->config_data, rtpvorbispay->config_size,
|
2013-06-28 13:21:56 +00:00
|
|
|
timestamp, GST_CLOCK_TIME_NONE, rtpvorbispay->config_extra_len);
|
|
|
|
|
|
|
|
if (timestamp != -1) {
|
|
|
|
rtpvorbispay->last_config = timestamp;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-08-04 17:59:17 +00:00
|
|
|
ret =
|
|
|
|
gst_rtp_vorbis_pay_payload_buffer (rtpvorbispay, VDT, buffer, data, size,
|
2013-06-28 13:21:56 +00:00
|
|
|
timestamp, duration, 0);
|
|
|
|
|
2012-01-24 13:38:58 +00:00
|
|
|
gst_buffer_unmap (buffer, &map);
|
2008-02-12 23:38:19 +00:00
|
|
|
gst_buffer_unref (buffer);
|
|
|
|
|
2006-11-06 20:52:10 +00:00
|
|
|
done:
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
return ret;
|
2006-09-22 15:15:13 +00:00
|
|
|
|
|
|
|
/* ERRORS */
|
|
|
|
wrong_size:
|
|
|
|
{
|
|
|
|
GST_ELEMENT_WARNING (rtpvorbispay, STREAM, DECODE,
|
2013-11-21 10:32:15 +00:00
|
|
|
("Invalid packet size (1 < %" G_GSIZE_FORMAT ")", size), (NULL));
|
2012-01-24 13:38:58 +00:00
|
|
|
gst_buffer_unmap (buffer, &map);
|
2008-02-12 23:38:19 +00:00
|
|
|
gst_buffer_unref (buffer);
|
2006-09-22 15:15:13 +00:00
|
|
|
return GST_FLOW_OK;
|
|
|
|
}
|
|
|
|
parse_id_failed:
|
|
|
|
{
|
2012-01-24 13:38:58 +00:00
|
|
|
gst_buffer_unmap (buffer, &map);
|
2008-02-12 23:38:19 +00:00
|
|
|
gst_buffer_unref (buffer);
|
2006-09-22 15:15:13 +00:00
|
|
|
return GST_FLOW_ERROR;
|
|
|
|
}
|
|
|
|
unknown_header:
|
|
|
|
{
|
|
|
|
GST_ELEMENT_WARNING (rtpvorbispay, STREAM, DECODE,
|
2006-11-06 20:52:10 +00:00
|
|
|
(NULL), ("Ignoring unknown header received"));
|
2012-01-24 13:38:58 +00:00
|
|
|
gst_buffer_unmap (buffer, &map);
|
2008-02-12 23:38:19 +00:00
|
|
|
gst_buffer_unref (buffer);
|
2006-11-06 20:52:10 +00:00
|
|
|
return GST_FLOW_OK;
|
|
|
|
}
|
|
|
|
header_error:
|
|
|
|
{
|
|
|
|
GST_ELEMENT_WARNING (rtpvorbispay, STREAM, DECODE,
|
|
|
|
(NULL), ("Error initializing header config"));
|
2012-01-24 13:38:58 +00:00
|
|
|
gst_buffer_unmap (buffer, &map);
|
2008-02-12 23:38:19 +00:00
|
|
|
gst_buffer_unref (buffer);
|
2006-09-22 15:15:13 +00:00
|
|
|
return GST_FLOW_OK;
|
|
|
|
}
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
}
|
|
|
|
|
2010-12-21 12:49:41 +00:00
|
|
|
static gboolean
|
2011-11-15 15:31:45 +00:00
|
|
|
gst_rtp_vorbis_pay_sink_event (GstRTPBasePayload * payload, GstEvent * event)
|
2010-12-21 12:49:41 +00:00
|
|
|
{
|
2011-07-10 19:50:19 +00:00
|
|
|
GstRtpVorbisPay *rtpvorbispay = GST_RTP_VORBIS_PAY (payload);
|
2010-12-21 12:49:41 +00:00
|
|
|
|
|
|
|
switch (GST_EVENT_TYPE (event)) {
|
|
|
|
case GST_EVENT_FLUSH_STOP:
|
|
|
|
gst_rtp_vorbis_pay_clear_packet (rtpvorbispay);
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
/* false to let parent handle event as well */
|
2011-11-15 15:31:45 +00:00
|
|
|
return GST_RTP_BASE_PAYLOAD_CLASS (parent_class)->sink_event (payload, event);
|
2010-12-21 12:49:41 +00:00
|
|
|
}
|
|
|
|
|
2008-02-12 23:38:19 +00:00
|
|
|
static GstStateChangeReturn
|
|
|
|
gst_rtp_vorbis_pay_change_state (GstElement * element,
|
|
|
|
GstStateChange transition)
|
|
|
|
{
|
|
|
|
GstRtpVorbisPay *rtpvorbispay;
|
|
|
|
GstStateChangeReturn ret;
|
|
|
|
|
|
|
|
rtpvorbispay = GST_RTP_VORBIS_PAY (element);
|
|
|
|
|
|
|
|
switch (transition) {
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
|
|
|
|
|
|
|
|
switch (transition) {
|
|
|
|
case GST_STATE_CHANGE_PAUSED_TO_READY:
|
|
|
|
gst_rtp_vorbis_pay_cleanup (rtpvorbispay);
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
return ret;
|
|
|
|
}
|
|
|
|
|
2013-06-28 13:21:56 +00:00
|
|
|
static void
|
|
|
|
gst_rtp_vorbis_pay_set_property (GObject * object, guint prop_id,
|
|
|
|
const GValue * value, GParamSpec * pspec)
|
|
|
|
{
|
|
|
|
GstRtpVorbisPay *rtpvorbispay;
|
|
|
|
|
|
|
|
rtpvorbispay = GST_RTP_VORBIS_PAY (object);
|
|
|
|
|
|
|
|
switch (prop_id) {
|
|
|
|
case PROP_CONFIG_INTERVAL:
|
|
|
|
rtpvorbispay->config_interval = g_value_get_uint (value);
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
gst_rtp_vorbis_pay_get_property (GObject * object, guint prop_id,
|
|
|
|
GValue * value, GParamSpec * pspec)
|
|
|
|
{
|
|
|
|
GstRtpVorbisPay *rtpvorbispay;
|
|
|
|
|
|
|
|
rtpvorbispay = GST_RTP_VORBIS_PAY (object);
|
|
|
|
|
|
|
|
switch (prop_id) {
|
|
|
|
case PROP_CONFIG_INTERVAL:
|
|
|
|
g_value_set_uint (value, rtpvorbispay->config_interval);
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
gboolean
|
|
|
|
gst_rtp_vorbis_pay_plugin_init (GstPlugin * plugin)
|
|
|
|
{
|
|
|
|
return gst_element_register (plugin, "rtpvorbispay",
|
2010-12-21 15:49:28 +00:00
|
|
|
GST_RANK_SECONDARY, GST_TYPE_RTP_VORBIS_PAY);
|
gst/rtp/: Small cleanups.
Original commit message from CVS:
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16depay_change_state):
* gst/rtp/gstrtpmp4gdepay.c: (gst_rtp_mp4g_depay_class_init):
Small cleanups.
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvorbisdepay.c: (gst_rtp_vorbis_depay_base_init),
(gst_rtp_vorbis_depay_class_init), (gst_rtp_vorbis_depay_init),
(gst_rtp_vorbis_depay_finalize), (gst_rtp_vorbis_depay_setcaps),
(gst_rtp_vorbis_depay_process),
(gst_rtp_vorbis_depay_set_property),
(gst_rtp_vorbis_depay_get_property),
(gst_rtp_vorbis_depay_change_state),
(gst_rtp_vorbis_depay_plugin_init):
* gst/rtp/gstrtpvorbisdepay.h:
* gst/rtp/gstrtpvorbispay.c: (gst_rtp_vorbis_pay_base_init),
(gst_rtp_vorbis_pay_class_init), (gst_rtp_vorbis_pay_init),
(gst_rtp_vorbis_pay_setcaps), (gst_rtp_vorbis_pay_init_packet),
(gst_rtp_vorbis_pay_flush_packet),
(gst_rtp_vorbis_pay_append_buffer),
(gst_rtp_vorbis_pay_handle_buffer),
(gst_rtp_vorbis_pay_plugin_init):
* gst/rtp/gstrtpvorbispay.h:
Add experimental vorbis pay and depayloaders.
2006-09-22 12:08:14 +00:00
|
|
|
}
|