mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-23 16:50:47 +00:00
ext/vorbis/: Remove left-over 0.8 cruft; use GST_DEBUG_FUNCPTR; make vorbisenc adhere to the official nomenclature; u...
Original commit message from CVS: * ext/vorbis/vorbisdec.c: (gst_vorbis_dec_class_init), (gst_vorbis_dec_init), (vorbis_dec_finalize): * ext/vorbis/vorbisdec.h: * ext/vorbis/vorbisenc.c: (gst_vorbis_enc_add_interfaces), (gst_vorbis_enc_base_init), (gst_vorbis_enc_class_init), (gst_vorbis_enc_sink_setcaps), (gst_vorbis_enc_convert_src), (gst_vorbis_enc_convert_sink), (gst_vorbis_enc_get_query_types), (gst_vorbis_enc_src_query), (gst_vorbis_enc_sink_query), (gst_vorbis_enc_init), (gst_vorbis_enc_get_tag_value), (gst_vorbis_enc_metadata_set1), (gst_vorbis_enc_set_metadata), (gst_vorbis_enc_setup), (gst_vorbis_enc_clear), (gst_vorbis_enc_buffer_from_packet), (gst_vorbis_enc_buffer_from_header_packet), (gst_vorbis_enc_push_buffer), (gst_vorbis_enc_push_packet), (gst_vorbis_enc_set_header_on_caps), (gst_vorbis_enc_sink_event), (gst_vorbis_enc_chain), (gst_vorbis_enc_output_buffers), (gst_vorbis_enc_get_property), (gst_vorbis_enc_set_property), (gst_vorbis_enc_change_state): * ext/vorbis/vorbisenc.h: Remove left-over 0.8 cruft; use GST_DEBUG_FUNCPTR; make vorbisenc adhere to the official nomenclature; use boilerplate macro.
This commit is contained in:
parent
eb390423e7
commit
e330b2ed88
6 changed files with 135 additions and 205 deletions
25
ChangeLog
25
ChangeLog
|
@ -1,3 +1,28 @@
|
||||||
|
2006-04-05 Tim-Philipp Müller <tim at centricular dot net>
|
||||||
|
|
||||||
|
* ext/vorbis/vorbisdec.c: (gst_vorbis_dec_class_init),
|
||||||
|
(gst_vorbis_dec_init), (vorbis_dec_finalize):
|
||||||
|
* ext/vorbis/vorbisdec.h:
|
||||||
|
* ext/vorbis/vorbisenc.c: (gst_vorbis_enc_add_interfaces),
|
||||||
|
(gst_vorbis_enc_base_init), (gst_vorbis_enc_class_init),
|
||||||
|
(gst_vorbis_enc_sink_setcaps), (gst_vorbis_enc_convert_src),
|
||||||
|
(gst_vorbis_enc_convert_sink), (gst_vorbis_enc_get_query_types),
|
||||||
|
(gst_vorbis_enc_src_query), (gst_vorbis_enc_sink_query),
|
||||||
|
(gst_vorbis_enc_init), (gst_vorbis_enc_get_tag_value),
|
||||||
|
(gst_vorbis_enc_metadata_set1), (gst_vorbis_enc_set_metadata),
|
||||||
|
(gst_vorbis_enc_setup), (gst_vorbis_enc_clear),
|
||||||
|
(gst_vorbis_enc_buffer_from_packet),
|
||||||
|
(gst_vorbis_enc_buffer_from_header_packet),
|
||||||
|
(gst_vorbis_enc_push_buffer), (gst_vorbis_enc_push_packet),
|
||||||
|
(gst_vorbis_enc_set_header_on_caps), (gst_vorbis_enc_sink_event),
|
||||||
|
(gst_vorbis_enc_chain), (gst_vorbis_enc_output_buffers),
|
||||||
|
(gst_vorbis_enc_get_property), (gst_vorbis_enc_set_property),
|
||||||
|
(gst_vorbis_enc_change_state):
|
||||||
|
* ext/vorbis/vorbisenc.h:
|
||||||
|
Remove left-over 0.8 cruft; use GST_DEBUG_FUNCPTR; make
|
||||||
|
vorbisenc adhere to the official nomenclature; use boilerplate
|
||||||
|
macro.
|
||||||
|
|
||||||
2006-04-04 Andy Wingo <wingo@pobox.com>
|
2006-04-04 Andy Wingo <wingo@pobox.com>
|
||||||
|
|
||||||
* gst/videorate/gstvideorate.c (gst_video_rate_flush_prev):
|
* gst/videorate/gstvideorate.c (gst_video_rate_flush_prev):
|
||||||
|
|
2
common
2
common
|
@ -1 +1 @@
|
||||||
Subproject commit 6f7101e2227975fa8a134358362dd4b55e326b4c
|
Subproject commit cbedff4d5f090d43fdeaa189748a6651f2c6a07f
|
|
@ -60,18 +60,6 @@ GST_ELEMENT_DETAILS ("Vorbis audio decoder",
|
||||||
"decode raw vorbis streams to float audio",
|
"decode raw vorbis streams to float audio",
|
||||||
"Benjamin Otte <in7y118@public.uni-hamburg.de>");
|
"Benjamin Otte <in7y118@public.uni-hamburg.de>");
|
||||||
|
|
||||||
/* Filter signals and args */
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
/* FILL ME */
|
|
||||||
LAST_SIGNAL
|
|
||||||
};
|
|
||||||
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
ARG_0
|
|
||||||
};
|
|
||||||
|
|
||||||
static GstStaticPadTemplate vorbis_dec_src_factory =
|
static GstStaticPadTemplate vorbis_dec_src_factory =
|
||||||
GST_STATIC_PAD_TEMPLATE ("src",
|
GST_STATIC_PAD_TEMPLATE ("src",
|
||||||
GST_PAD_SRC,
|
GST_PAD_SRC,
|
||||||
|
@ -96,16 +84,12 @@ GST_STATIC_PAD_TEMPLATE ("sink",
|
||||||
|
|
||||||
GST_BOILERPLATE (GstVorbisDec, gst_vorbis_dec, GstElement, GST_TYPE_ELEMENT);
|
GST_BOILERPLATE (GstVorbisDec, gst_vorbis_dec, GstElement, GST_TYPE_ELEMENT);
|
||||||
|
|
||||||
static void vorbisdec_finalize (GObject * object);
|
static void vorbis_dec_finalize (GObject * object);
|
||||||
static gboolean vorbis_dec_sink_event (GstPad * pad, GstEvent * event);
|
static gboolean vorbis_dec_sink_event (GstPad * pad, GstEvent * event);
|
||||||
static GstFlowReturn vorbis_dec_chain (GstPad * pad, GstBuffer * buffer);
|
static GstFlowReturn vorbis_dec_chain (GstPad * pad, GstBuffer * buffer);
|
||||||
static GstStateChangeReturn vorbis_dec_change_state (GstElement * element,
|
static GstStateChangeReturn vorbis_dec_change_state (GstElement * element,
|
||||||
GstStateChange transition);
|
GstStateChange transition);
|
||||||
|
|
||||||
#if 0
|
|
||||||
static const GstFormat *vorbis_dec_get_formats (GstPad * pad);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static gboolean vorbis_dec_src_event (GstPad * pad, GstEvent * event);
|
static gboolean vorbis_dec_src_event (GstPad * pad, GstEvent * event);
|
||||||
static gboolean vorbis_dec_src_query (GstPad * pad, GstQuery * query);
|
static gboolean vorbis_dec_src_query (GstPad * pad, GstQuery * query);
|
||||||
static gboolean vorbis_dec_convert (GstPad * pad,
|
static gboolean vorbis_dec_convert (GstPad * pad,
|
||||||
|
@ -135,45 +119,11 @@ gst_vorbis_dec_class_init (GstVorbisDecClass * klass)
|
||||||
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
|
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
|
||||||
GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
|
GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
|
||||||
|
|
||||||
gobject_class->finalize = vorbisdec_finalize;
|
gobject_class->finalize = vorbis_dec_finalize;
|
||||||
|
|
||||||
gstelement_class->change_state = vorbis_dec_change_state;
|
gstelement_class->change_state = GST_DEBUG_FUNCPTR (vorbis_dec_change_state);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
static const GstFormat *
|
|
||||||
vorbis_dec_get_formats (GstPad * pad)
|
|
||||||
{
|
|
||||||
static GstFormat src_formats[] = {
|
|
||||||
GST_FORMAT_BYTES,
|
|
||||||
GST_FORMAT_DEFAULT, /* samples in the audio case */
|
|
||||||
GST_FORMAT_TIME,
|
|
||||||
0
|
|
||||||
};
|
|
||||||
static GstFormat sink_formats[] = {
|
|
||||||
/*GST_FORMAT_BYTES, */
|
|
||||||
GST_FORMAT_TIME,
|
|
||||||
GST_FORMAT_DEFAULT, /* granulepos or samples */
|
|
||||||
0
|
|
||||||
};
|
|
||||||
|
|
||||||
return (GST_PAD_IS_SRC (pad) ? src_formats : sink_formats);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
static const GstEventMask *
|
|
||||||
vorbis_get_event_masks (GstPad * pad)
|
|
||||||
{
|
|
||||||
static const GstEventMask vorbis_dec_src_event_masks[] = {
|
|
||||||
{GST_EVENT_SEEK, GST_SEEK_METHOD_SET | GST_SEEK_FLAG_FLUSH},
|
|
||||||
{0,}
|
|
||||||
};
|
|
||||||
|
|
||||||
return vorbis_dec_src_event_masks;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static const GstQueryType *
|
static const GstQueryType *
|
||||||
vorbis_get_query_types (GstPad * pad)
|
vorbis_get_query_types (GstPad * pad)
|
||||||
{
|
{
|
||||||
|
@ -191,17 +141,23 @@ gst_vorbis_dec_init (GstVorbisDec * dec, GstVorbisDecClass * g_class)
|
||||||
dec->sinkpad = gst_pad_new_from_static_template (&vorbis_dec_sink_factory,
|
dec->sinkpad = gst_pad_new_from_static_template (&vorbis_dec_sink_factory,
|
||||||
"sink");
|
"sink");
|
||||||
|
|
||||||
gst_pad_set_event_function (dec->sinkpad, vorbis_dec_sink_event);
|
gst_pad_set_event_function (dec->sinkpad,
|
||||||
gst_pad_set_chain_function (dec->sinkpad, vorbis_dec_chain);
|
GST_DEBUG_FUNCPTR (vorbis_dec_sink_event));
|
||||||
gst_pad_set_query_function (dec->sinkpad, vorbis_dec_sink_query);
|
gst_pad_set_chain_function (dec->sinkpad,
|
||||||
|
GST_DEBUG_FUNCPTR (vorbis_dec_chain));
|
||||||
|
gst_pad_set_query_function (dec->sinkpad,
|
||||||
|
GST_DEBUG_FUNCPTR (vorbis_dec_sink_query));
|
||||||
gst_element_add_pad (GST_ELEMENT (dec), dec->sinkpad);
|
gst_element_add_pad (GST_ELEMENT (dec), dec->sinkpad);
|
||||||
|
|
||||||
dec->srcpad = gst_pad_new_from_static_template (&vorbis_dec_src_factory,
|
dec->srcpad = gst_pad_new_from_static_template (&vorbis_dec_src_factory,
|
||||||
"src");
|
"src");
|
||||||
|
|
||||||
gst_pad_set_event_function (dec->srcpad, vorbis_dec_src_event);
|
gst_pad_set_event_function (dec->srcpad,
|
||||||
gst_pad_set_query_type_function (dec->srcpad, vorbis_get_query_types);
|
GST_DEBUG_FUNCPTR (vorbis_dec_src_event));
|
||||||
gst_pad_set_query_function (dec->srcpad, vorbis_dec_src_query);
|
gst_pad_set_query_type_function (dec->srcpad,
|
||||||
|
GST_DEBUG_FUNCPTR (vorbis_get_query_types));
|
||||||
|
gst_pad_set_query_function (dec->srcpad,
|
||||||
|
GST_DEBUG_FUNCPTR (vorbis_dec_src_query));
|
||||||
gst_pad_use_fixed_caps (dec->srcpad);
|
gst_pad_use_fixed_caps (dec->srcpad);
|
||||||
gst_element_add_pad (GST_ELEMENT (dec), dec->srcpad);
|
gst_element_add_pad (GST_ELEMENT (dec), dec->srcpad);
|
||||||
|
|
||||||
|
@ -209,7 +165,7 @@ gst_vorbis_dec_init (GstVorbisDec * dec, GstVorbisDecClass * g_class)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
vorbisdec_finalize (GObject * object)
|
vorbis_dec_finalize (GObject * object)
|
||||||
{
|
{
|
||||||
/* Release any possibly allocated libvorbis data.
|
/* Release any possibly allocated libvorbis data.
|
||||||
* _clear functions can safely be called multiple times
|
* _clear functions can safely be called multiple times
|
||||||
|
|
|
@ -33,10 +33,10 @@ G_BEGIN_DECLS
|
||||||
#define GST_VORBIS_DEC(obj) \
|
#define GST_VORBIS_DEC(obj) \
|
||||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_VORBIS_DEC,GstVorbisDec))
|
(G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_VORBIS_DEC,GstVorbisDec))
|
||||||
#define GST_VORBIS_DEC_CLASS(klass) \
|
#define GST_VORBIS_DEC_CLASS(klass) \
|
||||||
(G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_VORBIS_DEC,GstVorbisDec))
|
(G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_VORBIS_DEC,GstVorbisDecClass))
|
||||||
#define GST_IS_VORBIS_DEC(obj) \
|
#define GST_IS_VORBIS_DEC(obj) \
|
||||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_VORBIS_DEC))
|
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_VORBIS_DEC))
|
||||||
#define GST_IS_VORBIS_DEC_CLASS(obj) \
|
#define GST_IS_VORBIS_DEC_CLASS(klass) \
|
||||||
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_VORBIS_DEC))
|
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_VORBIS_DEC))
|
||||||
|
|
||||||
typedef struct _GstVorbisDec GstVorbisDec;
|
typedef struct _GstVorbisDec GstVorbisDec;
|
||||||
|
|
|
@ -63,7 +63,8 @@
|
||||||
GST_DEBUG_CATEGORY_EXTERN (vorbisenc_debug);
|
GST_DEBUG_CATEGORY_EXTERN (vorbisenc_debug);
|
||||||
#define GST_CAT_DEFAULT vorbisenc_debug
|
#define GST_CAT_DEFAULT vorbisenc_debug
|
||||||
|
|
||||||
static GstPadTemplate *gst_vorbisenc_src_template, *gst_vorbisenc_sink_template;
|
static GstPadTemplate *gst_vorbis_enc_src_template,
|
||||||
|
*gst_vorbis_enc_sink_template;
|
||||||
|
|
||||||
/* elementfactory information */
|
/* elementfactory information */
|
||||||
GstElementDetails vorbisenc_details =
|
GstElementDetails vorbisenc_details =
|
||||||
|
@ -72,13 +73,6 @@ GST_ELEMENT_DETAILS ("Vorbis audio encoder",
|
||||||
"Encodes audio in Vorbis format",
|
"Encodes audio in Vorbis format",
|
||||||
"Monty <monty@xiph.org>, " "Wim Taymans <wim@fluendo.com>");
|
"Monty <monty@xiph.org>, " "Wim Taymans <wim@fluendo.com>");
|
||||||
|
|
||||||
/* GstVorbisEnc signals and args */
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
/* FILL ME */
|
|
||||||
LAST_SIGNAL
|
|
||||||
};
|
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
ARG_0,
|
ARG_0,
|
||||||
|
@ -90,7 +84,7 @@ enum
|
||||||
ARG_LAST_MESSAGE
|
ARG_LAST_MESSAGE
|
||||||
};
|
};
|
||||||
|
|
||||||
static GstFlowReturn gst_vorbisenc_output_buffers (GstVorbisEnc * vorbisenc);
|
static GstFlowReturn gst_vorbis_enc_output_buffers (GstVorbisEnc * vorbisenc);
|
||||||
|
|
||||||
/* this function takes into account the granulepos_offset and the subgranule
|
/* this function takes into account the granulepos_offset and the subgranule
|
||||||
* time offset */
|
* time offset */
|
||||||
|
@ -115,26 +109,6 @@ granulepos_to_timestamp (GstVorbisEnc * vorbisenc, ogg_int64_t granulepos)
|
||||||
return GST_CLOCK_TIME_NONE;
|
return GST_CLOCK_TIME_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
static const GstFormat *
|
|
||||||
gst_vorbisenc_get_formats (GstPad * pad)
|
|
||||||
{
|
|
||||||
static const GstFormat src_formats[] = {
|
|
||||||
GST_FORMAT_BYTES,
|
|
||||||
GST_FORMAT_TIME,
|
|
||||||
0
|
|
||||||
};
|
|
||||||
static const GstFormat sink_formats[] = {
|
|
||||||
GST_FORMAT_BYTES,
|
|
||||||
GST_FORMAT_DEFAULT,
|
|
||||||
GST_FORMAT_TIME,
|
|
||||||
0
|
|
||||||
};
|
|
||||||
|
|
||||||
return (GST_PAD_IS_SRC (pad) ? src_formats : sink_formats);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define MAX_BITRATE_DEFAULT -1
|
#define MAX_BITRATE_DEFAULT -1
|
||||||
#define BITRATE_DEFAULT -1
|
#define BITRATE_DEFAULT -1
|
||||||
#define MIN_BITRATE_DEFAULT -1
|
#define MIN_BITRATE_DEFAULT -1
|
||||||
|
@ -142,57 +116,29 @@ gst_vorbisenc_get_formats (GstPad * pad)
|
||||||
#define LOWEST_BITRATE 6000 /* lowest allowed for a 8 kHz stream */
|
#define LOWEST_BITRATE 6000 /* lowest allowed for a 8 kHz stream */
|
||||||
#define HIGHEST_BITRATE 250001 /* highest allowed for a 44 kHz stream */
|
#define HIGHEST_BITRATE 250001 /* highest allowed for a 44 kHz stream */
|
||||||
|
|
||||||
static void gst_vorbisenc_base_init (gpointer g_class);
|
static gboolean gst_vorbis_enc_sink_event (GstPad * pad, GstEvent * event);
|
||||||
static void gst_vorbisenc_class_init (GstVorbisEncClass * klass);
|
static GstFlowReturn gst_vorbis_enc_chain (GstPad * pad, GstBuffer * buffer);
|
||||||
static void gst_vorbisenc_init (GstVorbisEnc * vorbisenc);
|
static gboolean gst_vorbis_enc_setup (GstVorbisEnc * vorbisenc);
|
||||||
|
|
||||||
static gboolean gst_vorbisenc_sink_event (GstPad * pad, GstEvent * event);
|
static void gst_vorbis_enc_get_property (GObject * object, guint prop_id,
|
||||||
static GstFlowReturn gst_vorbisenc_chain (GstPad * pad, GstBuffer * buffer);
|
|
||||||
static gboolean gst_vorbisenc_setup (GstVorbisEnc * vorbisenc);
|
|
||||||
|
|
||||||
static void gst_vorbisenc_get_property (GObject * object, guint prop_id,
|
|
||||||
GValue * value, GParamSpec * pspec);
|
GValue * value, GParamSpec * pspec);
|
||||||
static void gst_vorbisenc_set_property (GObject * object, guint prop_id,
|
static void gst_vorbis_enc_set_property (GObject * object, guint prop_id,
|
||||||
const GValue * value, GParamSpec * pspec);
|
const GValue * value, GParamSpec * pspec);
|
||||||
static GstStateChangeReturn gst_vorbisenc_change_state (GstElement * element,
|
static GstStateChangeReturn gst_vorbis_enc_change_state (GstElement * element,
|
||||||
GstStateChange transition);
|
GstStateChange transition);
|
||||||
|
static void gst_vorbis_enc_add_interfaces (GType vorbisenc_type);
|
||||||
|
|
||||||
static GstElementClass *parent_class = NULL;
|
GST_BOILERPLATE_FULL (GstVorbisEnc, gst_vorbis_enc, GstElement,
|
||||||
|
GST_TYPE_ELEMENT, gst_vorbis_enc_add_interfaces);
|
||||||
|
|
||||||
/*static guint gst_vorbisenc_signals[LAST_SIGNAL] = { 0 }; */
|
static void
|
||||||
|
gst_vorbis_enc_add_interfaces (GType vorbisenc_type)
|
||||||
GType
|
|
||||||
vorbisenc_get_type (void)
|
|
||||||
{
|
{
|
||||||
static GType vorbisenc_type = 0;
|
static const GInterfaceInfo tag_setter_info = { NULL, NULL, NULL };
|
||||||
|
|
||||||
if (!vorbisenc_type) {
|
|
||||||
static const GTypeInfo vorbisenc_info = {
|
|
||||||
sizeof (GstVorbisEncClass),
|
|
||||||
gst_vorbisenc_base_init,
|
|
||||||
NULL,
|
|
||||||
(GClassInitFunc) gst_vorbisenc_class_init,
|
|
||||||
NULL,
|
|
||||||
NULL,
|
|
||||||
sizeof (GstVorbisEnc),
|
|
||||||
0,
|
|
||||||
(GInstanceInitFunc) gst_vorbisenc_init,
|
|
||||||
};
|
|
||||||
static const GInterfaceInfo tag_setter_info = {
|
|
||||||
NULL,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
};
|
|
||||||
|
|
||||||
vorbisenc_type =
|
|
||||||
g_type_register_static (GST_TYPE_ELEMENT, "GstVorbisEnc",
|
|
||||||
&vorbisenc_info, 0);
|
|
||||||
|
|
||||||
g_type_add_interface_static (vorbisenc_type, GST_TYPE_TAG_SETTER,
|
g_type_add_interface_static (vorbisenc_type, GST_TYPE_TAG_SETTER,
|
||||||
&tag_setter_info);
|
&tag_setter_info);
|
||||||
}
|
}
|
||||||
return vorbisenc_type;
|
|
||||||
}
|
|
||||||
|
|
||||||
static GstCaps *
|
static GstCaps *
|
||||||
vorbis_caps_factory (void)
|
vorbis_caps_factory (void)
|
||||||
|
@ -213,7 +159,7 @@ raw_caps_factory (void)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gst_vorbisenc_base_init (gpointer g_class)
|
gst_vorbis_enc_base_init (gpointer g_class)
|
||||||
{
|
{
|
||||||
GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
|
GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
|
||||||
GstCaps *raw_caps, *vorbis_caps;
|
GstCaps *raw_caps, *vorbis_caps;
|
||||||
|
@ -221,19 +167,19 @@ gst_vorbisenc_base_init (gpointer g_class)
|
||||||
raw_caps = raw_caps_factory ();
|
raw_caps = raw_caps_factory ();
|
||||||
vorbis_caps = vorbis_caps_factory ();
|
vorbis_caps = vorbis_caps_factory ();
|
||||||
|
|
||||||
gst_vorbisenc_sink_template = gst_pad_template_new ("sink", GST_PAD_SINK,
|
gst_vorbis_enc_sink_template = gst_pad_template_new ("sink", GST_PAD_SINK,
|
||||||
GST_PAD_ALWAYS, raw_caps);
|
GST_PAD_ALWAYS, raw_caps);
|
||||||
gst_vorbisenc_src_template = gst_pad_template_new ("src", GST_PAD_SRC,
|
gst_vorbis_enc_src_template = gst_pad_template_new ("src", GST_PAD_SRC,
|
||||||
GST_PAD_ALWAYS, vorbis_caps);
|
GST_PAD_ALWAYS, vorbis_caps);
|
||||||
gst_element_class_add_pad_template (element_class,
|
gst_element_class_add_pad_template (element_class,
|
||||||
gst_vorbisenc_sink_template);
|
gst_vorbis_enc_sink_template);
|
||||||
gst_element_class_add_pad_template (element_class,
|
gst_element_class_add_pad_template (element_class,
|
||||||
gst_vorbisenc_src_template);
|
gst_vorbis_enc_src_template);
|
||||||
gst_element_class_set_details (element_class, &vorbisenc_details);
|
gst_element_class_set_details (element_class, &vorbisenc_details);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gst_vorbisenc_class_init (GstVorbisEncClass * klass)
|
gst_vorbis_enc_class_init (GstVorbisEncClass * klass)
|
||||||
{
|
{
|
||||||
GObjectClass *gobject_class;
|
GObjectClass *gobject_class;
|
||||||
GstElementClass *gstelement_class;
|
GstElementClass *gstelement_class;
|
||||||
|
@ -241,8 +187,8 @@ gst_vorbisenc_class_init (GstVorbisEncClass * klass)
|
||||||
gobject_class = (GObjectClass *) klass;
|
gobject_class = (GObjectClass *) klass;
|
||||||
gstelement_class = (GstElementClass *) klass;
|
gstelement_class = (GstElementClass *) klass;
|
||||||
|
|
||||||
gobject_class->set_property = gst_vorbisenc_set_property;
|
gobject_class->set_property = gst_vorbis_enc_set_property;
|
||||||
gobject_class->get_property = gst_vorbisenc_get_property;
|
gobject_class->get_property = gst_vorbis_enc_get_property;
|
||||||
|
|
||||||
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_MAX_BITRATE,
|
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_MAX_BITRATE,
|
||||||
g_param_spec_int ("max-bitrate", "Maximum Bitrate",
|
g_param_spec_int ("max-bitrate", "Maximum Bitrate",
|
||||||
|
@ -271,13 +217,12 @@ gst_vorbisenc_class_init (GstVorbisEncClass * klass)
|
||||||
g_param_spec_string ("last-message", "last-message",
|
g_param_spec_string ("last-message", "last-message",
|
||||||
"The last status message", NULL, G_PARAM_READABLE));
|
"The last status message", NULL, G_PARAM_READABLE));
|
||||||
|
|
||||||
parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
|
gstelement_class->change_state =
|
||||||
|
GST_DEBUG_FUNCPTR (gst_vorbis_enc_change_state);
|
||||||
gstelement_class->change_state = gst_vorbisenc_change_state;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
gst_vorbisenc_sink_setcaps (GstPad * pad, GstCaps * caps)
|
gst_vorbis_enc_sink_setcaps (GstPad * pad, GstCaps * caps)
|
||||||
{
|
{
|
||||||
GstVorbisEnc *vorbisenc;
|
GstVorbisEnc *vorbisenc;
|
||||||
GstStructure *structure;
|
GstStructure *structure;
|
||||||
|
@ -289,7 +234,7 @@ gst_vorbisenc_sink_setcaps (GstPad * pad, GstCaps * caps)
|
||||||
gst_structure_get_int (structure, "channels", &vorbisenc->channels);
|
gst_structure_get_int (structure, "channels", &vorbisenc->channels);
|
||||||
gst_structure_get_int (structure, "rate", &vorbisenc->frequency);
|
gst_structure_get_int (structure, "rate", &vorbisenc->frequency);
|
||||||
|
|
||||||
gst_vorbisenc_setup (vorbisenc);
|
gst_vorbis_enc_setup (vorbisenc);
|
||||||
|
|
||||||
if (vorbisenc->setup)
|
if (vorbisenc->setup)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
@ -298,8 +243,8 @@ gst_vorbisenc_sink_setcaps (GstPad * pad, GstCaps * caps)
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
gst_vorbisenc_convert_src (GstPad * pad, GstFormat src_format, gint64 src_value,
|
gst_vorbis_enc_convert_src (GstPad * pad, GstFormat src_format,
|
||||||
GstFormat * dest_format, gint64 * dest_value)
|
gint64 src_value, GstFormat * dest_format, gint64 * dest_value)
|
||||||
{
|
{
|
||||||
gboolean res = TRUE;
|
gboolean res = TRUE;
|
||||||
GstVorbisEnc *vorbisenc;
|
GstVorbisEnc *vorbisenc;
|
||||||
|
@ -342,7 +287,7 @@ gst_vorbisenc_convert_src (GstPad * pad, GstFormat src_format, gint64 src_value,
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
gst_vorbisenc_convert_sink (GstPad * pad, GstFormat src_format,
|
gst_vorbis_enc_convert_sink (GstPad * pad, GstFormat src_format,
|
||||||
gint64 src_value, GstFormat * dest_format, gint64 * dest_value)
|
gint64 src_value, GstFormat * dest_format, gint64 * dest_value)
|
||||||
{
|
{
|
||||||
gboolean res = TRUE;
|
gboolean res = TRUE;
|
||||||
|
@ -414,20 +359,20 @@ gst_vorbisenc_convert_sink (GstPad * pad, GstFormat src_format,
|
||||||
}
|
}
|
||||||
|
|
||||||
static const GstQueryType *
|
static const GstQueryType *
|
||||||
gst_vorbisenc_get_query_types (GstPad * pad)
|
gst_vorbis_enc_get_query_types (GstPad * pad)
|
||||||
{
|
{
|
||||||
static const GstQueryType gst_vorbisenc_src_query_types[] = {
|
static const GstQueryType gst_vorbis_enc_src_query_types[] = {
|
||||||
GST_QUERY_POSITION,
|
GST_QUERY_POSITION,
|
||||||
GST_QUERY_DURATION,
|
GST_QUERY_DURATION,
|
||||||
GST_QUERY_CONVERT,
|
GST_QUERY_CONVERT,
|
||||||
0
|
0
|
||||||
};
|
};
|
||||||
|
|
||||||
return gst_vorbisenc_src_query_types;
|
return gst_vorbis_enc_src_query_types;
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
gst_vorbisenc_src_query (GstPad * pad, GstQuery * query)
|
gst_vorbis_enc_src_query (GstPad * pad, GstQuery * query)
|
||||||
{
|
{
|
||||||
gboolean res = TRUE;
|
gboolean res = TRUE;
|
||||||
GstVorbisEnc *vorbisenc;
|
GstVorbisEnc *vorbisenc;
|
||||||
|
@ -484,7 +429,7 @@ gst_vorbisenc_src_query (GstPad * pad, GstQuery * query)
|
||||||
|
|
||||||
gst_query_parse_convert (query, &src_fmt, &src_val, &dest_fmt, &dest_val);
|
gst_query_parse_convert (query, &src_fmt, &src_val, &dest_fmt, &dest_val);
|
||||||
if (!(res =
|
if (!(res =
|
||||||
gst_vorbisenc_convert_src (pad, src_fmt, src_val, &dest_fmt,
|
gst_vorbis_enc_convert_src (pad, src_fmt, src_val, &dest_fmt,
|
||||||
&dest_val)))
|
&dest_val)))
|
||||||
goto error;
|
goto error;
|
||||||
gst_query_set_convert (query, src_fmt, src_val, dest_fmt, dest_val);
|
gst_query_set_convert (query, src_fmt, src_val, dest_fmt, dest_val);
|
||||||
|
@ -502,7 +447,7 @@ error:
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
gst_vorbisenc_sink_query (GstPad * pad, GstQuery * query)
|
gst_vorbis_enc_sink_query (GstPad * pad, GstQuery * query)
|
||||||
{
|
{
|
||||||
gboolean res = TRUE;
|
gboolean res = TRUE;
|
||||||
GstVorbisEnc *vorbisenc;
|
GstVorbisEnc *vorbisenc;
|
||||||
|
@ -517,7 +462,7 @@ gst_vorbisenc_sink_query (GstPad * pad, GstQuery * query)
|
||||||
|
|
||||||
gst_query_parse_convert (query, &src_fmt, &src_val, &dest_fmt, &dest_val);
|
gst_query_parse_convert (query, &src_fmt, &src_val, &dest_fmt, &dest_val);
|
||||||
if (!(res =
|
if (!(res =
|
||||||
gst_vorbisenc_convert_sink (pad, src_fmt, src_val, &dest_fmt,
|
gst_vorbis_enc_convert_sink (pad, src_fmt, src_val, &dest_fmt,
|
||||||
&dest_val)))
|
&dest_val)))
|
||||||
goto error;
|
goto error;
|
||||||
gst_query_set_convert (query, src_fmt, src_val, dest_fmt, dest_val);
|
gst_query_set_convert (query, src_fmt, src_val, dest_fmt, dest_val);
|
||||||
|
@ -533,23 +478,26 @@ error:
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gst_vorbisenc_init (GstVorbisEnc * vorbisenc)
|
gst_vorbis_enc_init (GstVorbisEnc * vorbisenc, GstVorbisEncClass * klass)
|
||||||
{
|
{
|
||||||
vorbisenc->sinkpad =
|
vorbisenc->sinkpad =
|
||||||
gst_pad_new_from_template (gst_vorbisenc_sink_template, "sink");
|
gst_pad_new_from_template (gst_vorbis_enc_sink_template, "sink");
|
||||||
gst_element_add_pad (GST_ELEMENT (vorbisenc), vorbisenc->sinkpad);
|
gst_pad_set_event_function (vorbisenc->sinkpad,
|
||||||
gst_pad_set_event_function (vorbisenc->sinkpad, gst_vorbisenc_sink_event);
|
GST_DEBUG_FUNCPTR (gst_vorbis_enc_sink_event));
|
||||||
gst_pad_set_chain_function (vorbisenc->sinkpad, gst_vorbisenc_chain);
|
gst_pad_set_chain_function (vorbisenc->sinkpad,
|
||||||
gst_pad_set_setcaps_function (vorbisenc->sinkpad, gst_vorbisenc_sink_setcaps);
|
GST_DEBUG_FUNCPTR (gst_vorbis_enc_chain));
|
||||||
|
gst_pad_set_setcaps_function (vorbisenc->sinkpad,
|
||||||
|
GST_DEBUG_FUNCPTR (gst_vorbis_enc_sink_setcaps));
|
||||||
gst_pad_set_query_function (vorbisenc->sinkpad,
|
gst_pad_set_query_function (vorbisenc->sinkpad,
|
||||||
GST_DEBUG_FUNCPTR (gst_vorbisenc_sink_query));
|
GST_DEBUG_FUNCPTR (gst_vorbis_enc_sink_query));
|
||||||
|
gst_element_add_pad (GST_ELEMENT (vorbisenc), vorbisenc->sinkpad);
|
||||||
|
|
||||||
vorbisenc->srcpad =
|
vorbisenc->srcpad =
|
||||||
gst_pad_new_from_template (gst_vorbisenc_src_template, "src");
|
gst_pad_new_from_template (gst_vorbis_enc_src_template, "src");
|
||||||
gst_pad_set_query_function (vorbisenc->srcpad,
|
gst_pad_set_query_function (vorbisenc->srcpad,
|
||||||
GST_DEBUG_FUNCPTR (gst_vorbisenc_src_query));
|
GST_DEBUG_FUNCPTR (gst_vorbis_enc_src_query));
|
||||||
gst_pad_set_query_type_function (vorbisenc->srcpad,
|
gst_pad_set_query_type_function (vorbisenc->srcpad,
|
||||||
GST_DEBUG_FUNCPTR (gst_vorbisenc_get_query_types));
|
GST_DEBUG_FUNCPTR (gst_vorbis_enc_get_query_types));
|
||||||
gst_element_add_pad (GST_ELEMENT (vorbisenc), vorbisenc->srcpad);
|
gst_element_add_pad (GST_ELEMENT (vorbisenc), vorbisenc->srcpad);
|
||||||
|
|
||||||
vorbisenc->channels = -1;
|
vorbisenc->channels = -1;
|
||||||
|
@ -566,7 +514,7 @@ gst_vorbisenc_init (GstVorbisEnc * vorbisenc)
|
||||||
|
|
||||||
|
|
||||||
static gchar *
|
static gchar *
|
||||||
gst_vorbisenc_get_tag_value (const GstTagList * list, const gchar * tag,
|
gst_vorbis_enc_get_tag_value (const GstTagList * list, const gchar * tag,
|
||||||
int index)
|
int index)
|
||||||
{
|
{
|
||||||
GType tag_type;
|
GType tag_type;
|
||||||
|
@ -607,7 +555,7 @@ gst_vorbisenc_get_tag_value (const GstTagList * list, const gchar * tag,
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gst_vorbisenc_metadata_set1 (const GstTagList * list, const gchar * tag,
|
gst_vorbis_enc_metadata_set1 (const GstTagList * list, const gchar * tag,
|
||||||
gpointer vorbisenc)
|
gpointer vorbisenc)
|
||||||
{
|
{
|
||||||
const gchar *vorbistag = NULL;
|
const gchar *vorbistag = NULL;
|
||||||
|
@ -622,7 +570,7 @@ gst_vorbisenc_metadata_set1 (const GstTagList * list, const gchar * tag,
|
||||||
|
|
||||||
count = gst_tag_list_get_tag_size (list, tag);
|
count = gst_tag_list_get_tag_size (list, tag);
|
||||||
for (i = 0; i < count; i++) {
|
for (i = 0; i < count; i++) {
|
||||||
vorbisvalue = gst_vorbisenc_get_tag_value (list, tag, i);
|
vorbisvalue = gst_vorbis_enc_get_tag_value (list, tag, i);
|
||||||
|
|
||||||
if (vorbisvalue != NULL) {
|
if (vorbisvalue != NULL) {
|
||||||
gchar *tmptag = g_strdup (vorbistag);
|
gchar *tmptag = g_strdup (vorbistag);
|
||||||
|
@ -635,7 +583,7 @@ gst_vorbisenc_metadata_set1 (const GstTagList * list, const gchar * tag,
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gst_vorbisenc_set_metadata (GstVorbisEnc * vorbisenc)
|
gst_vorbis_enc_set_metadata (GstVorbisEnc * vorbisenc)
|
||||||
{
|
{
|
||||||
GstTagList *copy;
|
GstTagList *copy;
|
||||||
const GstTagList *user_tags;
|
const GstTagList *user_tags;
|
||||||
|
@ -648,7 +596,7 @@ gst_vorbisenc_set_metadata (GstVorbisEnc * vorbisenc)
|
||||||
gst_tag_list_merge (user_tags, vorbisenc->tags,
|
gst_tag_list_merge (user_tags, vorbisenc->tags,
|
||||||
gst_tag_setter_get_tag_merge_mode (GST_TAG_SETTER (vorbisenc)));
|
gst_tag_setter_get_tag_merge_mode (GST_TAG_SETTER (vorbisenc)));
|
||||||
vorbis_comment_init (&vorbisenc->vc);
|
vorbis_comment_init (&vorbisenc->vc);
|
||||||
gst_tag_list_foreach (copy, gst_vorbisenc_metadata_set1, vorbisenc);
|
gst_tag_list_foreach (copy, gst_vorbis_enc_metadata_set1, vorbisenc);
|
||||||
gst_tag_list_free (copy);
|
gst_tag_list_free (copy);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -717,7 +665,7 @@ update_start_message (GstVorbisEnc * vorbisenc)
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
gst_vorbisenc_setup (GstVorbisEnc * vorbisenc)
|
gst_vorbis_enc_setup (GstVorbisEnc * vorbisenc)
|
||||||
{
|
{
|
||||||
vorbisenc->setup = FALSE;
|
vorbisenc->setup = FALSE;
|
||||||
|
|
||||||
|
@ -794,13 +742,13 @@ gst_vorbisenc_setup (GstVorbisEnc * vorbisenc)
|
||||||
}
|
}
|
||||||
|
|
||||||
static GstFlowReturn
|
static GstFlowReturn
|
||||||
gst_vorbisenc_clear (GstVorbisEnc * vorbisenc)
|
gst_vorbis_enc_clear (GstVorbisEnc * vorbisenc)
|
||||||
{
|
{
|
||||||
GstFlowReturn ret = GST_FLOW_OK;
|
GstFlowReturn ret = GST_FLOW_OK;
|
||||||
|
|
||||||
if (vorbisenc->setup) {
|
if (vorbisenc->setup) {
|
||||||
vorbis_analysis_wrote (&vorbisenc->vd, 0);
|
vorbis_analysis_wrote (&vorbisenc->vd, 0);
|
||||||
ret = gst_vorbisenc_output_buffers (vorbisenc);
|
ret = gst_vorbis_enc_output_buffers (vorbisenc);
|
||||||
|
|
||||||
vorbisenc->setup = FALSE;
|
vorbisenc->setup = FALSE;
|
||||||
}
|
}
|
||||||
|
@ -817,7 +765,8 @@ gst_vorbisenc_clear (GstVorbisEnc * vorbisenc)
|
||||||
|
|
||||||
/* prepare a buffer for transmission by passing data through libvorbis */
|
/* prepare a buffer for transmission by passing data through libvorbis */
|
||||||
static GstBuffer *
|
static GstBuffer *
|
||||||
gst_vorbisenc_buffer_from_packet (GstVorbisEnc * vorbisenc, ogg_packet * packet)
|
gst_vorbis_enc_buffer_from_packet (GstVorbisEnc * vorbisenc,
|
||||||
|
ogg_packet * packet)
|
||||||
{
|
{
|
||||||
GstBuffer *outbuf;
|
GstBuffer *outbuf;
|
||||||
|
|
||||||
|
@ -846,7 +795,7 @@ gst_vorbisenc_buffer_from_packet (GstVorbisEnc * vorbisenc, ogg_packet * packet)
|
||||||
/* the same as above, but different logic for setting timestamp and granulepos
|
/* the same as above, but different logic for setting timestamp and granulepos
|
||||||
* */
|
* */
|
||||||
static GstBuffer *
|
static GstBuffer *
|
||||||
gst_vorbisenc_buffer_from_header_packet (GstVorbisEnc * vorbisenc,
|
gst_vorbis_enc_buffer_from_header_packet (GstVorbisEnc * vorbisenc,
|
||||||
ogg_packet * packet)
|
ogg_packet * packet)
|
||||||
{
|
{
|
||||||
GstBuffer *outbuf;
|
GstBuffer *outbuf;
|
||||||
|
@ -865,7 +814,7 @@ gst_vorbisenc_buffer_from_header_packet (GstVorbisEnc * vorbisenc,
|
||||||
|
|
||||||
/* push out the buffer and do internal bookkeeping */
|
/* push out the buffer and do internal bookkeeping */
|
||||||
static GstFlowReturn
|
static GstFlowReturn
|
||||||
gst_vorbisenc_push_buffer (GstVorbisEnc * vorbisenc, GstBuffer * buffer)
|
gst_vorbis_enc_push_buffer (GstVorbisEnc * vorbisenc, GstBuffer * buffer)
|
||||||
{
|
{
|
||||||
vorbisenc->bytes_out += GST_BUFFER_SIZE (buffer);
|
vorbisenc->bytes_out += GST_BUFFER_SIZE (buffer);
|
||||||
|
|
||||||
|
@ -873,16 +822,16 @@ gst_vorbisenc_push_buffer (GstVorbisEnc * vorbisenc, GstBuffer * buffer)
|
||||||
}
|
}
|
||||||
|
|
||||||
static GstFlowReturn
|
static GstFlowReturn
|
||||||
gst_vorbisenc_push_packet (GstVorbisEnc * vorbisenc, ogg_packet * packet)
|
gst_vorbis_enc_push_packet (GstVorbisEnc * vorbisenc, ogg_packet * packet)
|
||||||
{
|
{
|
||||||
GstBuffer *outbuf;
|
GstBuffer *outbuf;
|
||||||
|
|
||||||
outbuf = gst_vorbisenc_buffer_from_packet (vorbisenc, packet);
|
outbuf = gst_vorbis_enc_buffer_from_packet (vorbisenc, packet);
|
||||||
return gst_vorbisenc_push_buffer (vorbisenc, outbuf);
|
return gst_vorbis_enc_push_buffer (vorbisenc, outbuf);
|
||||||
}
|
}
|
||||||
|
|
||||||
static GstCaps *
|
static GstCaps *
|
||||||
gst_vorbisenc_set_header_on_caps (GstCaps * caps, GstBuffer * buf1,
|
gst_vorbis_enc_set_header_on_caps (GstCaps * caps, GstBuffer * buf1,
|
||||||
GstBuffer * buf2, GstBuffer * buf3)
|
GstBuffer * buf2, GstBuffer * buf3)
|
||||||
{
|
{
|
||||||
GstStructure *structure;
|
GstStructure *structure;
|
||||||
|
@ -918,7 +867,7 @@ gst_vorbisenc_set_header_on_caps (GstCaps * caps, GstBuffer * buf1,
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
gst_vorbisenc_sink_event (GstPad * pad, GstEvent * event)
|
gst_vorbis_enc_sink_event (GstPad * pad, GstEvent * event)
|
||||||
{
|
{
|
||||||
gboolean res = TRUE;
|
gboolean res = TRUE;
|
||||||
GstVorbisEnc *vorbisenc;
|
GstVorbisEnc *vorbisenc;
|
||||||
|
@ -930,7 +879,7 @@ gst_vorbisenc_sink_event (GstPad * pad, GstEvent * event)
|
||||||
/* Tell the library we're at end of stream so that it can handle
|
/* Tell the library we're at end of stream so that it can handle
|
||||||
* the last frame and mark end of stream in the output properly */
|
* the last frame and mark end of stream in the output properly */
|
||||||
GST_DEBUG_OBJECT (vorbisenc, "EOS, clearing state and sending event on");
|
GST_DEBUG_OBJECT (vorbisenc, "EOS, clearing state and sending event on");
|
||||||
gst_vorbisenc_clear (vorbisenc);
|
gst_vorbis_enc_clear (vorbisenc);
|
||||||
|
|
||||||
res = gst_pad_push_event (vorbisenc->srcpad, event);
|
res = gst_pad_push_event (vorbisenc->srcpad, event);
|
||||||
break;
|
break;
|
||||||
|
@ -954,7 +903,7 @@ gst_vorbisenc_sink_event (GstPad * pad, GstEvent * event)
|
||||||
}
|
}
|
||||||
|
|
||||||
static GstFlowReturn
|
static GstFlowReturn
|
||||||
gst_vorbisenc_chain (GstPad * pad, GstBuffer * buffer)
|
gst_vorbis_enc_chain (GstPad * pad, GstBuffer * buffer)
|
||||||
{
|
{
|
||||||
GstVorbisEnc *vorbisenc;
|
GstVorbisEnc *vorbisenc;
|
||||||
GstFlowReturn ret = GST_FLOW_OK;
|
GstFlowReturn ret = GST_FLOW_OK;
|
||||||
|
@ -987,19 +936,19 @@ gst_vorbisenc_chain (GstPad * pad, GstBuffer * buffer)
|
||||||
vorbisenc->subgranule_offset = 0;
|
vorbisenc->subgranule_offset = 0;
|
||||||
|
|
||||||
GST_DEBUG_OBJECT (vorbisenc, "creating and sending header packets");
|
GST_DEBUG_OBJECT (vorbisenc, "creating and sending header packets");
|
||||||
gst_vorbisenc_set_metadata (vorbisenc);
|
gst_vorbis_enc_set_metadata (vorbisenc);
|
||||||
vorbis_analysis_headerout (&vorbisenc->vd, &vorbisenc->vc, &header,
|
vorbis_analysis_headerout (&vorbisenc->vd, &vorbisenc->vc, &header,
|
||||||
&header_comm, &header_code);
|
&header_comm, &header_code);
|
||||||
vorbis_comment_clear (&vorbisenc->vc);
|
vorbis_comment_clear (&vorbisenc->vc);
|
||||||
|
|
||||||
/* create header buffers */
|
/* create header buffers */
|
||||||
buf1 = gst_vorbisenc_buffer_from_header_packet (vorbisenc, &header);
|
buf1 = gst_vorbis_enc_buffer_from_header_packet (vorbisenc, &header);
|
||||||
buf2 = gst_vorbisenc_buffer_from_header_packet (vorbisenc, &header_comm);
|
buf2 = gst_vorbis_enc_buffer_from_header_packet (vorbisenc, &header_comm);
|
||||||
buf3 = gst_vorbisenc_buffer_from_header_packet (vorbisenc, &header_code);
|
buf3 = gst_vorbis_enc_buffer_from_header_packet (vorbisenc, &header_code);
|
||||||
|
|
||||||
/* mark and put on caps */
|
/* mark and put on caps */
|
||||||
caps = gst_pad_get_caps (vorbisenc->srcpad);
|
caps = gst_pad_get_caps (vorbisenc->srcpad);
|
||||||
caps = gst_vorbisenc_set_header_on_caps (caps, buf1, buf2, buf3);
|
caps = gst_vorbis_enc_set_header_on_caps (caps, buf1, buf2, buf3);
|
||||||
|
|
||||||
/* negotiate with these caps */
|
/* negotiate with these caps */
|
||||||
GST_DEBUG ("here are the caps: %" GST_PTR_FORMAT, caps);
|
GST_DEBUG ("here are the caps: %" GST_PTR_FORMAT, caps);
|
||||||
|
@ -1010,11 +959,11 @@ gst_vorbisenc_chain (GstPad * pad, GstBuffer * buffer)
|
||||||
gst_buffer_set_caps (buf3, caps);
|
gst_buffer_set_caps (buf3, caps);
|
||||||
|
|
||||||
/* push out buffers */
|
/* push out buffers */
|
||||||
if ((ret = gst_vorbisenc_push_buffer (vorbisenc, buf1)) != GST_FLOW_OK)
|
if ((ret = gst_vorbis_enc_push_buffer (vorbisenc, buf1)) != GST_FLOW_OK)
|
||||||
goto failed_header_push;
|
goto failed_header_push;
|
||||||
if ((ret = gst_vorbisenc_push_buffer (vorbisenc, buf2)) != GST_FLOW_OK)
|
if ((ret = gst_vorbis_enc_push_buffer (vorbisenc, buf2)) != GST_FLOW_OK)
|
||||||
goto failed_header_push;
|
goto failed_header_push;
|
||||||
if ((ret = gst_vorbisenc_push_buffer (vorbisenc, buf3)) != GST_FLOW_OK)
|
if ((ret = gst_vorbis_enc_push_buffer (vorbisenc, buf3)) != GST_FLOW_OK)
|
||||||
goto failed_header_push;
|
goto failed_header_push;
|
||||||
|
|
||||||
|
|
||||||
|
@ -1051,7 +1000,7 @@ gst_vorbisenc_chain (GstPad * pad, GstBuffer * buffer)
|
||||||
|
|
||||||
gst_buffer_unref (buffer);
|
gst_buffer_unref (buffer);
|
||||||
|
|
||||||
ret = gst_vorbisenc_output_buffers (vorbisenc);
|
ret = gst_vorbis_enc_output_buffers (vorbisenc);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
@ -1071,7 +1020,7 @@ failed_header_push:
|
||||||
}
|
}
|
||||||
|
|
||||||
static GstFlowReturn
|
static GstFlowReturn
|
||||||
gst_vorbisenc_output_buffers (GstVorbisEnc * vorbisenc)
|
gst_vorbis_enc_output_buffers (GstVorbisEnc * vorbisenc)
|
||||||
{
|
{
|
||||||
GstFlowReturn ret;
|
GstFlowReturn ret;
|
||||||
|
|
||||||
|
@ -1089,7 +1038,7 @@ gst_vorbisenc_output_buffers (GstVorbisEnc * vorbisenc)
|
||||||
|
|
||||||
while (vorbis_bitrate_flushpacket (&vorbisenc->vd, &op)) {
|
while (vorbis_bitrate_flushpacket (&vorbisenc->vd, &op)) {
|
||||||
GST_LOG_OBJECT (vorbisenc, "pushing out a data packet");
|
GST_LOG_OBJECT (vorbisenc, "pushing out a data packet");
|
||||||
ret = gst_vorbisenc_push_packet (vorbisenc, &op);
|
ret = gst_vorbis_enc_push_packet (vorbisenc, &op);
|
||||||
|
|
||||||
if (ret != GST_FLOW_OK)
|
if (ret != GST_FLOW_OK)
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -1100,7 +1049,7 @@ gst_vorbisenc_output_buffers (GstVorbisEnc * vorbisenc)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gst_vorbisenc_get_property (GObject * object, guint prop_id, GValue * value,
|
gst_vorbis_enc_get_property (GObject * object, guint prop_id, GValue * value,
|
||||||
GParamSpec * pspec)
|
GParamSpec * pspec)
|
||||||
{
|
{
|
||||||
GstVorbisEnc *vorbisenc;
|
GstVorbisEnc *vorbisenc;
|
||||||
|
@ -1135,7 +1084,7 @@ gst_vorbisenc_get_property (GObject * object, guint prop_id, GValue * value,
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gst_vorbisenc_set_property (GObject * object, guint prop_id,
|
gst_vorbis_enc_set_property (GObject * object, guint prop_id,
|
||||||
const GValue * value, GParamSpec * pspec)
|
const GValue * value, GParamSpec * pspec)
|
||||||
{
|
{
|
||||||
GstVorbisEnc *vorbisenc;
|
GstVorbisEnc *vorbisenc;
|
||||||
|
@ -1207,7 +1156,7 @@ gst_vorbisenc_set_property (GObject * object, guint prop_id,
|
||||||
}
|
}
|
||||||
|
|
||||||
static GstStateChangeReturn
|
static GstStateChangeReturn
|
||||||
gst_vorbisenc_change_state (GstElement * element, GstStateChange transition)
|
gst_vorbis_enc_change_state (GstElement * element, GstStateChange transition)
|
||||||
{
|
{
|
||||||
GstVorbisEnc *vorbisenc = GST_VORBISENC (element);
|
GstVorbisEnc *vorbisenc = GST_VORBISENC (element);
|
||||||
GstStateChangeReturn res;
|
GstStateChangeReturn res;
|
||||||
|
|
|
@ -18,8 +18,8 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#ifndef __VORBISENC_H__
|
#ifndef __GST_VORBIS_ENC_H__
|
||||||
#define __VORBISENC_H__
|
#define __GST_VORBIS_ENC_H__
|
||||||
|
|
||||||
|
|
||||||
#include <gst/gst.h>
|
#include <gst/gst.h>
|
||||||
|
@ -29,14 +29,14 @@
|
||||||
G_BEGIN_DECLS
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
#define GST_TYPE_VORBISENC \
|
#define GST_TYPE_VORBISENC \
|
||||||
(vorbisenc_get_type())
|
(gst_vorbis_enc_get_type())
|
||||||
#define GST_VORBISENC(obj) \
|
#define GST_VORBISENC(obj) \
|
||||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_VORBISENC,GstVorbisEnc))
|
(G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_VORBISENC,GstVorbisEnc))
|
||||||
#define GST_VORBISENC_CLASS(klass) \
|
#define GST_VORBISENC_CLASS(klass) \
|
||||||
(G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_VORBISENC,GstVorbisEncClass))
|
(G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_VORBISENC,GstVorbisEncClass))
|
||||||
#define GST_IS_VORBISENC(obj) \
|
#define GST_IS_VORBISENC(obj) \
|
||||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_VORBISENC))
|
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_VORBISENC))
|
||||||
#define GST_IS_VORBISENC_CLASS(obj) \
|
#define GST_IS_VORBISENC_CLASS(klass) \
|
||||||
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_VORBISENC))
|
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_VORBISENC))
|
||||||
|
|
||||||
typedef struct _GstVorbisEnc GstVorbisEnc;
|
typedef struct _GstVorbisEnc GstVorbisEnc;
|
||||||
|
@ -87,8 +87,8 @@ struct _GstVorbisEncClass {
|
||||||
GstElementClass parent_class;
|
GstElementClass parent_class;
|
||||||
};
|
};
|
||||||
|
|
||||||
GType vorbisenc_get_type(void);
|
GType gst_vorbis_enc_get_type(void);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
#endif /* __VORBISENC_H__ */
|
#endif /* __GST_VORBIS_ENC_H__ */
|
||||||
|
|
Loading…
Reference in a new issue