diff options
author | Edward Hervey <bilboed@bilboed.com> | 2005-12-07 11:40:46 +0000 |
---|---|---|
committer | Edward Hervey <bilboed@bilboed.com> | 2005-12-07 11:40:46 +0000 |
commit | 8a2d8148e476abad532b50f9f901334d2f8ca7f4 (patch) | |
tree | b2e0cfc8504dedd342c5beef9616de969a81bd16 /gst/wavparse | |
parent | b6540959e64c2c13077728886f62e3ae3d675b3d (diff) |
gst/avi/gstavidemux.c: Memleak and crasher fixes.
Original commit message from CVS:
* gst/avi/gstavidemux.c: (gst_avi_demux_handle_src_event),
(gst_avi_demux_parse_stream), (gst_avi_demux_stream_header),
(gst_avi_demux_invert):
Memleak and crasher fixes.
* gst/wavparse/gstwavparse.c: (gst_wavparse_base_init),
(gst_wavparse_create_sourcepad), (gst_wavparse_stream_headers):
Memleak fixes
Diffstat (limited to 'gst/wavparse')
-rw-r--r-- | gst/wavparse/gstwavparse.c | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/gst/wavparse/gstwavparse.c b/gst/wavparse/gstwavparse.c index 12005db5..9a974ccf 100644 --- a/gst/wavparse/gstwavparse.c +++ b/gst/wavparse/gstwavparse.c @@ -143,6 +143,7 @@ static void gst_wavparse_base_init (gpointer g_class) { GstElementClass *element_class = GST_ELEMENT_CLASS (g_class); + GstPadTemplate *templ; static GstElementDetails gst_wavparse_details = GST_ELEMENT_DETAILS (".wav demuxer", "Codec/Demuxer/Audio", @@ -152,10 +153,12 @@ 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_static_pad_template_get (&sink_template_factory)); - gst_element_class_add_pad_template (element_class, - gst_static_pad_template_get (&src_template_factory)); + templ = gst_static_pad_template_get (&sink_template_factory); + gst_element_class_add_pad_template (element_class, templ); + gst_object_unref (templ); + templ = gst_static_pad_template_get (&src_template_factory); + gst_element_class_add_pad_template (element_class, templ); + gst_object_unref (templ); } static void @@ -228,12 +231,14 @@ gst_wavparse_destroy_sourcepad (GstWavParse * wavparse) static void gst_wavparse_create_sourcepad (GstWavParse * wavparse) { + GstPadTemplate *templ; + gst_wavparse_destroy_sourcepad (wavparse); /* source */ - wavparse->srcpad = - gst_pad_new_from_template (gst_static_pad_template_get - (&src_template_factory), "src"); + templ = gst_static_pad_template_get (&src_template_factory); + wavparse->srcpad = gst_pad_new_from_template (templ, "src"); + gst_object_unref (templ); gst_pad_use_fixed_caps (wavparse->srcpad); gst_pad_set_query_type_function (wavparse->srcpad, GST_DEBUG_FUNCPTR (gst_wavparse_get_query_types)); @@ -776,6 +781,9 @@ gst_wavparse_stream_headers (GstWavParse * wav) if (!(gst_riff_parse_strf_auds (GST_ELEMENT (wav), buf, &header, &extra))) goto parse_header_error; + if (extra) + gst_buffer_unref (extra); + /* Note: gst_riff_create_audio_caps might nedd to fix values in * the header header depending on the format, so call it first */ caps = |