summaryrefslogtreecommitdiffstats
path: root/gst/wavparse/gstwavparse.c
diff options
context:
space:
mode:
Diffstat (limited to 'gst/wavparse/gstwavparse.c')
-rw-r--r--gst/wavparse/gstwavparse.c162
1 files changed, 71 insertions, 91 deletions
diff --git a/gst/wavparse/gstwavparse.c b/gst/wavparse/gstwavparse.c
index cc550e88..e1b93a1b 100644
--- a/gst/wavparse/gstwavparse.c
+++ b/gst/wavparse/gstwavparse.c
@@ -60,61 +60,62 @@ static GstElementDetails gst_wavparse_details = GST_ELEMENT_DETAILS (
"Erik Walthinsen <omega@cse.ogi.edu>"
);
-GST_PAD_TEMPLATE_FACTORY (sink_template_factory,
+static GstStaticPadTemplate sink_template_factory =
+GST_STATIC_PAD_TEMPLATE (
"wavparse_sink",
GST_PAD_SINK,
GST_PAD_ALWAYS,
- GST_CAPS_NEW (
- "wavparse_wav",
- "audio/x-wav",
- NULL
- )
-)
+ GST_STATIC_CAPS ("audio/x-wav")
+);
-GST_PAD_TEMPLATE_FACTORY (src_template_factory,
+static GstStaticPadTemplate src_template_factory =
+GST_STATIC_PAD_TEMPLATE (
"wavparse_src",
GST_PAD_SRC,
GST_PAD_ALWAYS,
- GST_CAPS_NEW (
+ GST_STATIC_CAPS_ANY
+);
+#if 0
+ GST_STATIC_CAPS (
"wavparse_raw",
"audio/x-raw-int",
- "endianness", GST_PROPS_INT (G_LITTLE_ENDIAN),
+ "endianness", G_TYPE_INT (G_LITTLE_ENDIAN),
"signed", GST_PROPS_LIST (
- GST_PROPS_BOOLEAN (FALSE),
- GST_PROPS_BOOLEAN (TRUE)
+ G_TYPE_BOOLEAN (FALSE),
+ G_TYPE_BOOLEAN (TRUE)
),
"width", GST_PROPS_LIST (
- GST_PROPS_INT (8),
- GST_PROPS_INT (16)
+ G_TYPE_INT (8),
+ G_TYPE_INT (16)
),
"depth", GST_PROPS_LIST (
- GST_PROPS_INT (8),
- GST_PROPS_INT (16)
+ G_TYPE_INT (8),
+ G_TYPE_INT (16)
),
- "rate", GST_PROPS_INT_RANGE (8000, 48000),
- "channels", GST_PROPS_INT_RANGE (1, 2)
+ "rate", G_TYPE_INT_RANGE (8000, 48000),
+ "channels", G_TYPE_INT_RANGE (1, 2)
),
- GST_CAPS_NEW (
+ GST_STATIC_CAPS (
"wavparse_mpeg",
"audio/mpeg",
- "mpegversion", GST_PROPS_INT (1),
- "rate", GST_PROPS_INT_RANGE (8000, 48000),
- "channels", GST_PROPS_INT_RANGE (1, 2),
- "layer", GST_PROPS_INT_RANGE (1, 3)
+ "mpegversion", G_TYPE_INT, 1,
+ "rate", G_TYPE_INT_RANGE (8000, 48000),
+ "channels", G_TYPE_INT_RANGE (1, 2),
+ "layer", G_TYPE_INT_RANGE (1, 3)
),
- GST_CAPS_NEW (
+ GST_STATIC_CAPS (
"parsewav_law",
"audio/x-alaw",
- "rate", GST_PROPS_INT_RANGE (8000, 48000),
- "channels", GST_PROPS_INT_RANGE (1, 2)
+ "rate", G_TYPE_INT_RANGE (8000, 48000),
+ "channels", G_TYPE_INT_RANGE (1, 2)
),
- GST_CAPS_NEW (
+ GST_STATIC_CAPS (
"parsewav_law",
"audio/x-mulaw",
- "rate", GST_PROPS_INT_RANGE (8000, 48000),
- "channels", GST_PROPS_INT_RANGE (1, 2)
+ "rate", G_TYPE_INT_RANGE (8000, 48000),
+ "channels", G_TYPE_INT_RANGE (1, 2)
)
-)
+#endif
/* WavParse signals and args */
enum {
@@ -124,7 +125,6 @@ enum {
enum {
PROP_0,
- PROP_METADATA
};
static GstElementClass *parent_class = NULL;
@@ -161,8 +161,8 @@ gst_wavparse_base_init (gpointer g_class)
gst_element_class_set_details (element_class, &gst_wavparse_details);
/* register src pads */
- gst_element_class_add_pad_template (element_class, GST_PAD_TEMPLATE_GET (sink_template_factory));
- gst_element_class_add_pad_template (element_class, GST_PAD_TEMPLATE_GET (src_template_factory));
+ gst_element_class_add_pad_template (element_class, gst_static_pad_template_get (&sink_template_factory));
+ gst_element_class_add_pad_template (element_class, gst_static_pad_template_get (&src_template_factory));
}
static void
gst_wavparse_class_init (GstWavParseClass *klass)
@@ -177,21 +177,13 @@ gst_wavparse_class_init (GstWavParseClass *klass)
object_class->get_property = gst_wavparse_get_property;
gstelement_class->change_state = gst_wavparse_change_state;
-
- g_object_class_install_property (object_class, PROP_METADATA,
- g_param_spec_boxed ("metadata",
- "Metadata", "Metadata",
- GST_TYPE_CAPS,
- G_PARAM_READABLE));
}
static void
gst_wavparse_init (GstWavParse *wavparse)
{
- GstProps *props;
-
/* sink */
- wavparse->sinkpad = gst_pad_new_from_template (GST_PAD_TEMPLATE_GET (sink_template_factory), "sink");
+ wavparse->sinkpad = gst_pad_new_from_template (gst_static_pad_template_get (&sink_template_factory), "sink");
gst_element_add_pad (GST_ELEMENT (wavparse), wavparse->sinkpad);
gst_pad_set_formats_function (wavparse->sinkpad, gst_wavparse_get_formats);
@@ -201,7 +193,7 @@ gst_wavparse_init (GstWavParse *wavparse)
gst_pad_set_query_function (wavparse->sinkpad, gst_wavparse_pad_query);
/* source */
- wavparse->srcpad = gst_pad_new_from_template (GST_PAD_TEMPLATE_GET (src_template_factory), "src");
+ wavparse->srcpad = gst_pad_new_from_template (gst_static_pad_template_get (&src_template_factory), "src");
gst_element_add_pad (GST_ELEMENT (wavparse), wavparse->srcpad);
gst_pad_set_formats_function (wavparse->srcpad, gst_wavparse_get_formats);
gst_pad_set_convert_function (wavparse->srcpad, gst_wavparse_pad_convert);
@@ -217,14 +209,6 @@ gst_wavparse_init (GstWavParse *wavparse)
wavparse->bps = 0;
wavparse->seek_pending = FALSE;
wavparse->seek_offset = 0;
-
- props = gst_props_empty_new ();
-
- /* Metadata is added later when we find it */
- gst_caps_replace_sink (&wavparse->metadata,
- gst_caps_new ("wav_metadata",
- "application/x-gst-metadata",
- props));
}
static void
@@ -238,15 +222,12 @@ gst_wavparse_get_property (GObject *object,
wavparse = GST_WAVPARSE (object);
switch (prop_id) {
- case PROP_METADATA:
- g_value_set_boxed (value, wavparse->metadata);
- break;
-
default:
break;
}
}
+#if 0
static void
gst_wavparse_parse_adtl (GstWavParse *wavparse,
int len)
@@ -310,8 +291,8 @@ gst_wavparse_parse_adtl (GstWavParse *wavparse,
new_caps = gst_caps_new ("label",
"application/x-gst-metadata",
gst_props_new (
- "identifier", GST_PROPS_INT (labl.identifier),
- "name", GST_PROPS_STRING (label_name),
+ "identifier", G_TYPE_INT (labl.identifier),
+ "name", G_TYPE_STRING (label_name),
NULL));
if (gst_props_get (props, "labels", &caps, NULL)) {
@@ -362,9 +343,9 @@ gst_wavparse_parse_adtl (GstWavParse *wavparse,
new_caps = gst_caps_new ("ltxt",
"application/x-gst-metadata",
gst_props_new (
- "identifier", GST_PROPS_INT (ltxt.identifier),
- "name", GST_PROPS_STRING (label_name),
- "length", GST_PROPS_INT (ltxt.length),
+ "identifier", G_TYPE_INT (ltxt.identifier),
+ "name", G_TYPE_STRING (label_name),
+ "length", G_TYPE_INT (ltxt.length),
NULL));
if (gst_props_get (props, "ltxts", &caps, NULL)) {
@@ -405,8 +386,8 @@ gst_wavparse_parse_adtl (GstWavParse *wavparse,
new_caps = gst_caps_new ("note",
"application/x-gst-metadata",
gst_props_new (
- "identifier", GST_PROPS_INT (note.identifier),
- "name", GST_PROPS_STRING (label_name),
+ "identifier", G_TYPE_INT (note.identifier),
+ "name", G_TYPE_STRING (label_name),
NULL));
if (gst_props_get (props, "notes", &caps, NULL)) {
@@ -536,7 +517,7 @@ gst_wavparse_parse_info (GstWavParse *wavparse,
if (type) {
GstPropsEntry *entry;
- entry = gst_props_entry_new (type, GST_PROPS_STRING (name));
+ entry = gst_props_entry_new (type, G_TYPE_STRING (name));
gst_props_add_entry (wavparse->metadata->properties, entry);
}
}
@@ -595,8 +576,8 @@ gst_wavparse_parse_cues (GstWavParse *wavparse,
caps = gst_caps_new ("cues",
"application/x-gst-metadata",
gst_props_new (
- "identifier", GST_PROPS_INT (points[i].identifier),
- "position", GST_PROPS_INT (points[i].offset),
+ "identifier", G_TYPE_INT (points[i].identifier),
+ "position", G_TYPE_INT (points[i].offset),
NULL));
cues = g_list_append (cues, caps);
}
@@ -640,36 +621,33 @@ gst_wavparse_parse_fmt (GstWavParse *wavparse)
return;
}
- caps = GST_CAPS_NEW ("parsewav_src",
- mime,
- "rate", GST_PROPS_INT (wavparse->rate),
- "channels", GST_PROPS_INT (wavparse->channels)
- );
+ caps = gst_caps_new_simple (mime,
+ "rate", G_TYPE_INT, wavparse->rate,
+ "channels", G_TYPE_INT, wavparse->channels,
+ NULL);
}
case GST_RIFF_WAVE_FORMAT_PCM:
- caps = GST_CAPS_NEW ("parsewav_src",
- "audio/x-raw-int",
- "endianness", GST_PROPS_INT (G_LITTLE_ENDIAN),
- "signed", GST_PROPS_BOOLEAN ((wavparse->width > 8) ? TRUE : FALSE),
- "width", GST_PROPS_INT (wavparse->width),
- "depth", GST_PROPS_INT (wavparse->width),
- "rate", GST_PROPS_INT (wavparse->rate),
- "channels", GST_PROPS_INT (wavparse->channels)
- );
+ caps = gst_caps_new_simple ("audio/x-raw-int",
+ "endianness", G_TYPE_INT, G_LITTLE_ENDIAN,
+ "signed", G_TYPE_BOOLEAN, (wavparse->width > 8) ? TRUE : FALSE,
+ "width", G_TYPE_INT, wavparse->width,
+ "depth", G_TYPE_INT, wavparse->width,
+ "rate", G_TYPE_INT, wavparse->rate,
+ "channels", G_TYPE_INT, wavparse->channels,
+ NULL);
break;
case GST_RIFF_WAVE_FORMAT_MPEGL12:
case GST_RIFF_WAVE_FORMAT_MPEGL3: {
int layer = (wavparse->format == GST_RIFF_WAVE_FORMAT_MPEGL12) ? 2 : 3;
- caps = GST_CAPS_NEW ("parsewav_src",
- "audio/mpeg",
- "mpegversion", GST_PROPS_INT (1),
- "layer", GST_PROPS_INT (layer),
- "rate", GST_PROPS_INT (wavparse->rate),
- "channels", GST_PROPS_INT (wavparse->channels)
- );
+ caps = gst_caps_new_simple ("audio/mpeg",
+ "mpegversion", G_TYPE_INT, 1,
+ "layer", G_TYPE_INT, layer,
+ "rate", G_TYPE_INT, wavparse->rate,
+ "channels", G_TYPE_INT, wavparse->channels,
+ NULL);
}
break;
@@ -687,6 +665,7 @@ gst_wavparse_parse_fmt (GstWavParse *wavparse)
wavparse->rate, wavparse->channels);
}
}
+#endif
static gboolean
gst_wavparse_handle_sink_event (GstWavParse *wavparse)
@@ -853,32 +832,34 @@ gst_wavparse_loop (GstElement *element)
switch (chunk.id) {
case GST_RIFF_TAG_data:
+#if 0
wavparse->state = GST_WAVPARSE_DATA;
wavparse->dataleft = chunk.size;
wavparse->byteoffset = 0;
flush = 0;
+#endif
break;
case GST_RIFF_TAG_fmt:
- gst_wavparse_parse_fmt (wavparse);
+ //gst_wavparse_parse_fmt (wavparse);
break;
case GST_RIFF_TAG_cue:
- gst_wavparse_parse_cues (wavparse, chunk.size);
+ //gst_wavparse_parse_cues (wavparse, chunk.size);
break;
case GST_RIFF_TAG_LIST:
GST_DEBUG ("list type: %4.4s", (char *) &chunk.type);
switch (chunk.type) {
case GST_RIFF_LIST_INFO:
- gst_wavparse_parse_info (wavparse, chunk.size - 4);
+ //gst_wavparse_parse_info (wavparse, chunk.size - 4);
flush = 0;
break;
case GST_RIFF_LIST_adtl:
- gst_wavparse_parse_adtl (wavparse, chunk.size - 4);
+ //gst_wavparse_parse_adtl (wavparse, chunk.size - 4);
flush = 0;
break;
@@ -1108,7 +1089,6 @@ gst_wavparse_change_state (GstElement *element)
wavparse->bps = 0;
wavparse->seek_pending = FALSE;
wavparse->seek_offset = 0;
- gst_caps_replace (&wavparse->metadata, NULL);
break;
case GST_STATE_READY_TO_NULL: