From: <sl...@ke...> - 2007-03-28 22:24:00
|
CVS Root: /cvs/gstreamer Module: gst-plugins-good Changes by: slomo Date: Wed Mar 28 2007 22:23:55 UTC Log message: * gst/wavparse/gstwavparse.c: Add support for wav files containing audio/x-raw-int with random depths between 1 and 32 bits. Modified files: . : ChangeLog gst/wavparse : gstwavparse.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-good/ChangeLog.diff?r1=1.2838&r2=1.2839 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-good/gst/wavparse/gstwavparse.c.diff?r1=1.138&r2=1.139 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gst-plugins-good/ChangeLog,v retrieving revision 1.2838 retrieving revision 1.2839 diff -u -d -r1.2838 -r1.2839 --- ChangeLog 28 Mar 2007 18:40:12 -0000 1.2838 +++ ChangeLog 28 Mar 2007 22:23:43 -0000 1.2839 @@ -1,3 +1,9 @@ +2007-03-29 Sebastian Dröge <sl...@ci...> + + * gst/wavparse/gstwavparse.c: + Add support for wav files containing audio/x-raw-int with random + depths between 1 and 32 bits. 2007-03-28 Wim Taymans <wi...@fl...> Based on patch by: Stefan Kost <en...@us...> Index: gstwavparse.c RCS file: /cvs/gstreamer/gst-plugins-good/gst/wavparse/gstwavparse.c,v retrieving revision 1.138 retrieving revision 1.139 diff -u -d -r1.138 -r1.139 --- gstwavparse.c 19 Mar 2007 10:29:19 -0000 1.138 +++ gstwavparse.c 28 Mar 2007 22:23:43 -0000 1.139 @@ -112,7 +112,7 @@ "endianness = (int) little_endian, " "signed = (boolean) { true, false }, " "width = (int) { 8, 16, 24, 32 }, " - "depth = (int) { 8, 16, 24, 32 }, " + "depth = (int) [ 8, 32 ], " "rate = (int) [ 8000, 96000 ], " "channels = (int) [ 1, 8 ]; " "audio/ms-gsm; " |
From: <sl...@ke...> - 2007-03-28 22:27:53
|
CVS Root: /cvs/gstreamer Module: gst-plugins-good Changes by: slomo Date: Wed Mar 28 2007 22:27:48 UTC Log message: * gst/wavparse/gstwavparse.c: Actually support depths from 1 to 32, not only 8 to 32. Modified files: . : ChangeLog gst/wavparse : gstwavparse.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-good/ChangeLog.diff?r1=1.2839&r2=1.2840 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-good/gst/wavparse/gstwavparse.c.diff?r1=1.139&r2=1.140 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gst-plugins-good/ChangeLog,v retrieving revision 1.2839 retrieving revision 1.2840 diff -u -d -r1.2839 -r1.2840 --- ChangeLog 28 Mar 2007 22:23:43 -0000 1.2839 +++ ChangeLog 28 Mar 2007 22:27:36 -0000 1.2840 @@ -1,6 +1,11 @@ 2007-03-29 Sebastian Dröge <sl...@ci...> * gst/wavparse/gstwavparse.c: + Actually support depths from 1 to 32, not only 8 to 32. + +2007-03-29 Sebastian Dröge <sl...@ci...> + * gst/wavparse/gstwavparse.c: Add support for wav files containing audio/x-raw-int with random depths between 1 and 32 bits. Index: gstwavparse.c RCS file: /cvs/gstreamer/gst-plugins-good/gst/wavparse/gstwavparse.c,v retrieving revision 1.139 retrieving revision 1.140 diff -u -d -r1.139 -r1.140 --- gstwavparse.c 28 Mar 2007 22:23:43 -0000 1.139 +++ gstwavparse.c 28 Mar 2007 22:27:36 -0000 1.140 @@ -112,7 +112,7 @@ "endianness = (int) little_endian, " "signed = (boolean) { true, false }, " "width = (int) { 8, 16, 24, 32 }, " - "depth = (int) [ 8, 32 ], " + "depth = (int) [ 1, 32 ], " "rate = (int) [ 8000, 96000 ], " "channels = (int) [ 1, 8 ]; " "audio/ms-gsm; " |
From: <sl...@ke...> - 2007-03-30 17:19:52
|
CVS Root: /cvs/gstreamer Module: gst-plugins-good Changes by: slomo Date: Fri Mar 30 2007 17:19:46 UTC Log message: * gst/wavparse/gstwavparse.c: Support audio/x-raw-float in wav files. This only works with plugins-base CVS, using an older version doesn't have any disadvantages though. Modified files: . : ChangeLog gst/wavparse : gstwavparse.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-good/ChangeLog.diff?r1=1.2847&r2=1.2848 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-good/gst/wavparse/gstwavparse.c.diff?r1=1.141&r2=1.142 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gst-plugins-good/ChangeLog,v retrieving revision 1.2847 retrieving revision 1.2848 diff -u -d -r1.2847 -r1.2848 --- ChangeLog 30 Mar 2007 15:59:26 -0000 1.2847 +++ ChangeLog 30 Mar 2007 17:19:34 -0000 1.2848 @@ -1,5 +1,12 @@ 2007-03-30 Sebastian Dröge <sl...@ci...> + * gst/wavparse/gstwavparse.c: + Support audio/x-raw-float in wav files. This only works with + plugins-base CVS, using an older version doesn't have any + disadvantages though. + +2007-03-30 Sebastian Dröge <sl...@ci...> * configure.ac: * gst/auparse/gstauparse.c: (gst_au_parse_reset), (gst_au_parse_parse_header), (gst_au_parse_chain): Index: gstwavparse.c RCS file: /cvs/gstreamer/gst-plugins-good/gst/wavparse/gstwavparse.c,v retrieving revision 1.141 retrieving revision 1.142 diff -u -d -r1.141 -r1.142 --- gstwavparse.c 29 Mar 2007 12:14:22 -0000 1.141 +++ gstwavparse.c 30 Mar 2007 17:19:34 -0000 1.142 @@ -122,6 +122,11 @@ "depth = (int) [ 1, 8 ], " "rate = (int) [ 8000, 96000 ], " "channels = (int) [ 1, 8 ]; " + "audio/x-raw-float, " + "width = (int) { 32, 64 }, " + "endianness = (int) little_endian, " + "rate = (int) [ 8000, 96000 ], " + "channels = (int) [ 1, 8 ]; " "audio/ms-gsm; " "audio/mpeg, " "mpegversion = (int) 1, " |
From: <sl...@ke...> - 2007-04-17 02:51:20
|
CVS Root: /cvs/gstreamer Module: gst-plugins-good Changes by: slomo Date: Tue Apr 17 2007 02:51:14 UTC Log message: * gst/wavparse/gstwavparse.c: (gst_wavparse_base_init), (gst_wavparse_create_sourcepad): Use gst_riff_create_audio_template_caps () instead of the local caps. This makes updates of the local caps unecessary whenever libgstriff gets support for new formats. Modified files: . : ChangeLog gst/wavparse : gstwavparse.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-good/ChangeLog.diff?r1=1.2866&r2=1.2867 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-good/gst/wavparse/gstwavparse.c.diff?r1=1.145&r2=1.146 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gst-plugins-good/ChangeLog,v retrieving revision 1.2866 retrieving revision 1.2867 diff -u -d -r1.2866 -r1.2867 --- ChangeLog 16 Apr 2007 21:29:40 -0000 1.2866 +++ ChangeLog 17 Apr 2007 02:51:02 -0000 1.2867 @@ -1,3 +1,11 @@ +2007-04-17 Sebastian Dröge <sl...@ci...> + + * gst/wavparse/gstwavparse.c: (gst_wavparse_base_init), + (gst_wavparse_create_sourcepad): + Use gst_riff_create_audio_template_caps () instead of the local caps. + This makes updates of the local caps unecessary whenever libgstriff + gets support for new formats. 2007-04-16 Tim-Philipp Müller <tim at centricular dot net> Patch by: Brian Cameron <brian.cameron at sun dot com> Index: gstwavparse.c RCS file: /cvs/gstreamer/gst-plugins-good/gst/wavparse/gstwavparse.c,v retrieving revision 1.145 retrieving revision 1.146 diff -u -d -r1.145 -r1.146 --- gstwavparse.c 13 Apr 2007 08:19:35 -0000 1.145 +++ gstwavparse.c 17 Apr 2007 02:51:02 -0000 1.146 @@ -101,67 +101,6 @@ GST_STATIC_CAPS ("audio/x-wav") ); -/* the pad is marked a sometimes and is added to the element when the - * exact type is known. This makes it much easier for a static autoplugger - * to connect the right decoder when needed. - */ -static GstStaticPadTemplate src_template_factory = - GST_STATIC_PAD_TEMPLATE ("wavparse_src", - GST_PAD_SRC, - GST_PAD_SOMETIMES, - /* FIXME: we need to sync this better with gst_riff_create_audio_caps() - * shouldn't we use: gst_riff_create_audio_template_caps() ? - */ - GST_STATIC_CAPS ("audio/x-raw-int, " - "endianness = (int) little_endian, " - "signed = (boolean) true, " - "width = (int) { 16, 24, 32 }, " - "depth = (int) [ 1, 32 ], " - "rate = (int) [ 8000, 96000 ], " - "channels = (int) [ 1, 8 ]; " - "audio/x-raw-int, " - "signed = (boolean) false, " - "width = (int) 8, " - "depth = (int) [ 1, 8 ], " - "audio/x-raw-float, " - "width = (int) { 32, 64 }, " - "audio/ms-gsm; " - "audio/mpeg, " - "mpegversion = (int) 1, " - "layer = (int) [ 1, 3 ], " - "rate = (int) [ 8000, 48000 ], " - "channels = (int) [ 1, 2 ]; " - "mpegversion = (int) 4, " - "audio/x-alaw, " - "audio/x-mulaw, " - "channels = (int) [ 1, 2 ];" - "audio/x-adpcm, " - "layout = (string) microsoft, " - "block_align = (int) [ 1, 8192 ], " - "layout = (string) dvi, " - "audio/x-vnd.sony.atrac3;" - "audio/x-dts;" "audio/x-wma, " "wmaversion = (int) [ 1, 2 ]") - ); - #define DEBUG_INIT(bla) \ GST_DEBUG_CATEGORY_INIT (wavparse_debug, "wavparse", 0, "WAV parser"); @@ -172,12 +111,16 @@ gst_wavparse_base_init (gpointer g_class) { GstElementClass *element_class = GST_ELEMENT_CLASS (g_class); + GstPadTemplate *src_template; - /* register src pads */ + /* register 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)); + src_template = gst_pad_template_new ("wavparse_src", GST_PAD_SRC, + GST_PAD_SOMETIMES, gst_riff_create_audio_template_caps ()); + gst_element_class_add_pad_template (element_class, src_template); gst_element_class_set_details (element_class, &gst_wavparse_details); } @@ -274,12 +217,15 @@ static void gst_wavparse_create_sourcepad (GstWavParse * wavparse) + GstElementClass *klass = GST_ELEMENT_GET_CLASS (wavparse); /* destroy previous one */ gst_wavparse_destroy_sourcepad (wavparse); /* source */ - wavparse->srcpad = - gst_pad_new_from_static_template (&src_template_factory, "src"); + src_template = gst_element_class_get_pad_template (klass, "wavparse_src"); + wavparse->srcpad = gst_pad_new_from_template (src_template, "src"); gst_pad_use_fixed_caps (wavparse->srcpad); gst_pad_set_query_type_function (wavparse->srcpad, GST_DEBUG_FUNCPTR (gst_wavparse_get_query_types)); |
From: <sl...@ke...> - 2007-04-17 10:15:04
|
CVS Root: /cvs/gstreamer Module: gst-plugins-good Changes by: slomo Date: Tue Apr 17 2007 10:14:55 UTC Log message: Patch by: Vincent Torri <vtorri at univ-evry dot fr> * gst/wavparse/gstwavparse.c: (gst_wavparse_stream_headers): Use correct format strings for integer types. Modified files: . : ChangeLog gst/wavparse : gstwavparse.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-good/ChangeLog.diff?r1=1.2867&r2=1.2868 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-good/gst/wavparse/gstwavparse.c.diff?r1=1.146&r2=1.147 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gst-plugins-good/ChangeLog,v retrieving revision 1.2867 retrieving revision 1.2868 diff -u -d -r1.2867 -r1.2868 --- ChangeLog 17 Apr 2007 02:51:02 -0000 1.2867 +++ ChangeLog 17 Apr 2007 10:14:42 -0000 1.2868 @@ -1,5 +1,12 @@ 2007-04-17 Sebastian Dröge <sl...@ci...> + Patch by: Vincent Torri <vtorri at univ-evry dot fr> + + * gst/wavparse/gstwavparse.c: (gst_wavparse_stream_headers): + Use correct format strings for integer types. +2007-04-17 Sebastian Dröge <sl...@ci...> * gst/wavparse/gstwavparse.c: (gst_wavparse_base_init), (gst_wavparse_create_sourcepad): Use gst_riff_create_audio_template_caps () instead of the local caps. Index: gstwavparse.c RCS file: /cvs/gstreamer/gst-plugins-good/gst/wavparse/gstwavparse.c,v retrieving revision 1.146 retrieving revision 1.147 diff -u -d -r1.146 -r1.147 --- gstwavparse.c 17 Apr 2007 02:51:02 -0000 1.146 +++ gstwavparse.c 17 Apr 2007 10:14:43 -0000 1.147 @@ -1324,7 +1324,7 @@ invalid_bps: { GST_ELEMENT_ERROR (wav, STREAM, FAILED, (NULL), - ("Stream claims av_bsp = %lu, which is more than %lu - invalid data", + ("Stream claims av_bsp = %u, which is more than %u - invalid data", wav->av_bps, wav->blockalign * wav->rate)); g_free (codec_name); return GST_FLOW_ERROR; |
From: <sl...@ke...> - 2007-09-13 12:38:08
|
CVS Root: /cvs/gstreamer Module: gst-plugins-good Changes by: slomo Date: Thu Sep 13 2007 12:38:10 UTC Log message: * gst/wavparse/gstwavparse.c: (gst_wavparse_perform_eos), (gst_wavparse_loop), (gst_wavparse_chain): Add EOS logic for the push-based mode too. Fixes #476514. Modified files: . : ChangeLog gst/wavparse : gstwavparse.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-good/ChangeLog.diff?r1=1.3088&r2=1.3089 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-good/gst/wavparse/gstwavparse.c.diff?r1=1.154&r2=1.155 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gst-plugins-good/ChangeLog,v retrieving revision 1.3088 retrieving revision 1.3089 diff -u -d -r1.3088 -r1.3089 --- ChangeLog 12 Sep 2007 22:01:57 -0000 1.3088 +++ ChangeLog 13 Sep 2007 12:37:55 -0000 1.3089 @@ -1,3 +1,9 @@ +2007-09-13 Sebastian Dröge <sl...@ci...> + + * gst/wavparse/gstwavparse.c: (gst_wavparse_perform_eos), + (gst_wavparse_loop), (gst_wavparse_chain): + Add EOS logic for the push-based mode too. Fixes #476514. 2007-09-12 Wim Taymans <wim...@gm...> * gst/law/alaw-encode.c: (gst_alawenc_init), (gst_alawenc_chain): Index: gstwavparse.c RCS file: /cvs/gstreamer/gst-plugins-good/gst/wavparse/gstwavparse.c,v retrieving revision 1.154 retrieving revision 1.155 diff -u -d -r1.154 -r1.155 --- gstwavparse.c 4 Sep 2007 14:37:22 -0000 1.154 +++ gstwavparse.c 13 Sep 2007 12:37:56 -0000 1.155 @@ -1703,6 +1703,43 @@ } static void +gst_wavparse_perform_eos (GstWavParse * wav, GstFlowReturn ret) +{ + if (GST_FLOW_IS_FATAL (ret) || ret == GST_FLOW_NOT_LINKED) { + if (ret == GST_FLOW_UNEXPECTED) { + /* add pad before we perform EOS */ + if (G_UNLIKELY (wav->first)) { + wav->first = FALSE; + gst_wavparse_add_src_pad (wav, NULL); + } + /* perform EOS logic */ + if (wav->segment.flags & GST_SEEK_FLAG_SEGMENT) { + GstClockTime stop; + if ((stop = wav->segment.stop) == -1) + stop = wav->segment.duration; + gst_element_post_message (GST_ELEMENT_CAST (wav), + gst_message_new_segment_done (GST_OBJECT_CAST (wav), + wav->segment.format, stop)); + } else { + if (wav->srcpad != NULL) + gst_pad_push_event (wav->srcpad, gst_event_new_eos ()); + } else { + /* for fatal errors we post an error message, post the error + * first so the app knows about the error first. */ + GST_ELEMENT_ERROR (wav, STREAM, FAILED, + (_("Internal data flow error.")), + ("streaming task paused, reason %s (%d)", gst_flow_get_name (ret), + ret)); + if (wav->srcpad != NULL) + gst_pad_push_event (wav->srcpad, gst_event_new_eos ()); + } + } +} +static void gst_wavparse_loop (GstPad * pad) { GstFlowReturn ret; @@ -1746,37 +1783,7 @@ wav->segment_running = FALSE; gst_pad_pause_task (pad); - if (GST_FLOW_IS_FATAL (ret) || ret == GST_FLOW_NOT_LINKED) { - if (ret == GST_FLOW_UNEXPECTED) { - /* add pad before we perform EOS */ - if (G_UNLIKELY (wav->first)) { - wav->first = FALSE; - gst_wavparse_add_src_pad (wav, NULL); - } - /* perform EOS logic */ - if (wav->segment.flags & GST_SEEK_FLAG_SEGMENT) { - GstClockTime stop; - - if ((stop = wav->segment.stop) == -1) - stop = wav->segment.duration; - gst_element_post_message (GST_ELEMENT_CAST (wav), - gst_message_new_segment_done (GST_OBJECT_CAST (wav), - wav->segment.format, stop)); - } else { - if (wav->srcpad != NULL) - gst_pad_push_event (wav->srcpad, gst_event_new_eos ()); - } else { - /* for fatal errors we post an error message, post the error - * first so the app knows about the error first. */ - GST_ELEMENT_ERROR (wav, STREAM, FAILED, - (_("Internal data flow error.")), - ("streaming task paused, reason %s (%d)", reason, ret)); - if (wav->srcpad != NULL) - gst_pad_push_event (wav->srcpad, gst_event_new_eos ()); - } - } + gst_wavparse_perform_eos (wav, ret); return; } @@ -1815,11 +1822,14 @@ /* fall-through */ case GST_WAVPARSE_DATA: if ((ret = gst_wavparse_stream_data (wav)) != GST_FLOW_OK) - goto done; + goto eos; break; default: g_assert_not_reached (); +eos: + gst_wavparse_perform_eos (wav, ret); + /* fallthrough */ done: return ret; |
From: <sl...@ke...> - 2007-09-14 09:41:02
|
CVS Root: /cvs/gstreamer Module: gst-plugins-good Changes by: slomo Date: Fri Sep 14 2007 09:41:04 UTC Log message: * gst/wavparse/gstwavparse.c: (gst_wavparse_loop), (gst_wavparse_chain): Don't push EOS from the chain function, the element driving the pipeline is responsible for this. The bug this was meant to fix seems to be queue not forwarding EOS in all cases (see #476514). Modified files: . : ChangeLog gst/wavparse : gstwavparse.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-good/ChangeLog.diff?r1=1.3091&r2=1.3092 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-good/gst/wavparse/gstwavparse.c.diff?r1=1.155&r2=1.156 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gst-plugins-good/ChangeLog,v retrieving revision 1.3091 retrieving revision 1.3092 diff -u -d -r1.3091 -r1.3092 --- ChangeLog 13 Sep 2007 17:31:15 -0000 1.3091 +++ ChangeLog 14 Sep 2007 09:40:48 -0000 1.3092 @@ -1,3 +1,12 @@ +2007-09-14 Sebastian Dröge <sl...@ci...> + + * gst/wavparse/gstwavparse.c: (gst_wavparse_loop), + (gst_wavparse_chain): + Don't push EOS from the chain function, the element + driving the pipeline is responsible for this. The bug + this was meant to fix seems to be queue not forwarding + EOS in all cases (see #476514). 2007-09-13 Wim Taymans <wim...@gm...> * gst/level/gstlevel.c: (gst_level_class_init), (gst_level_start), Index: gstwavparse.c RCS file: /cvs/gstreamer/gst-plugins-good/gst/wavparse/gstwavparse.c,v retrieving revision 1.155 retrieving revision 1.156 diff -u -d -r1.155 -r1.156 --- gstwavparse.c 13 Sep 2007 12:37:56 -0000 1.155 +++ gstwavparse.c 14 Sep 2007 09:40:49 -0000 1.156 @@ -1703,43 +1703,6 @@ } static void -gst_wavparse_perform_eos (GstWavParse * wav, GstFlowReturn ret) -{ - if (GST_FLOW_IS_FATAL (ret) || ret == GST_FLOW_NOT_LINKED) { - if (ret == GST_FLOW_UNEXPECTED) { - /* add pad before we perform EOS */ - if (G_UNLIKELY (wav->first)) { - wav->first = FALSE; - gst_wavparse_add_src_pad (wav, NULL); - } - /* perform EOS logic */ - if (wav->segment.flags & GST_SEEK_FLAG_SEGMENT) { - GstClockTime stop; - - if ((stop = wav->segment.stop) == -1) - stop = wav->segment.duration; - gst_element_post_message (GST_ELEMENT_CAST (wav), - gst_message_new_segment_done (GST_OBJECT_CAST (wav), - wav->segment.format, stop)); - } else { - if (wav->srcpad != NULL) - gst_pad_push_event (wav->srcpad, gst_event_new_eos ()); - } else { - /* for fatal errors we post an error message, post the error - * first so the app knows about the error first. */ - GST_ELEMENT_ERROR (wav, STREAM, FAILED, - (_("Internal data flow error.")), - ("streaming task paused, reason %s (%d)", gst_flow_get_name (ret), - ret)); - if (wav->srcpad != NULL) - gst_pad_push_event (wav->srcpad, gst_event_new_eos ()); - } - } -} -static void gst_wavparse_loop (GstPad * pad) { GstFlowReturn ret; @@ -1783,7 +1746,37 @@ wav->segment_running = FALSE; gst_pad_pause_task (pad); - gst_wavparse_perform_eos (wav, ret); + if (GST_FLOW_IS_FATAL (ret) || ret == GST_FLOW_NOT_LINKED) { + if (ret == GST_FLOW_UNEXPECTED) { + /* add pad before we perform EOS */ + if (G_UNLIKELY (wav->first)) { + wav->first = FALSE; + gst_wavparse_add_src_pad (wav, NULL); + } + /* perform EOS logic */ + if (wav->segment.flags & GST_SEEK_FLAG_SEGMENT) { + GstClockTime stop; + if ((stop = wav->segment.stop) == -1) + stop = wav->segment.duration; + gst_element_post_message (GST_ELEMENT_CAST (wav), + gst_message_new_segment_done (GST_OBJECT_CAST (wav), + wav->segment.format, stop)); + } else { + if (wav->srcpad != NULL) + gst_pad_push_event (wav->srcpad, gst_event_new_eos ()); + } else { + /* for fatal errors we post an error message, post the error + * first so the app knows about the error first. */ + GST_ELEMENT_ERROR (wav, STREAM, FAILED, + (_("Internal data flow error.")), + ("streaming task paused, reason %s (%d)", reason, ret)); + if (wav->srcpad != NULL) + gst_pad_push_event (wav->srcpad, gst_event_new_eos ()); + } + } return; } @@ -1822,14 +1815,11 @@ /* fall-through */ case GST_WAVPARSE_DATA: if ((ret = gst_wavparse_stream_data (wav)) != GST_FLOW_OK) - goto eos; + goto done; break; default: g_assert_not_reached (); -eos: - gst_wavparse_perform_eos (wav, ret); - /* fallthrough */ done: return ret; |
From: <sl...@ke...> - 2008-01-19 14:54:08
|
CVS Root: /cvs/gstreamer Module: gst-plugins-good Changes by: slomo Date: Sat Jan 19 2008 14:54:12 UTC Log message: Based on a patch by: Victor STINNER <victor dot stinner at haypocalc dot com> * gst/wavparse/gstwavparse.c: (gst_wavparse_stream_headers): Set variable to NULL after freeing it to prevent double frees or make failures by another use of it afterwards more obvious and fix use of it after the freeing. Modified files: . : ChangeLog gst/wavparse : gstwavparse.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-good/ChangeLog.diff?r1=1.3263&r2=1.3264 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-good/gst/wavparse/gstwavparse.c.diff?r1=1.161&r2=1.162 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gst-plugins-good/ChangeLog,v retrieving revision 1.3263 retrieving revision 1.3264 diff -u -d -r1.3263 -r1.3264 --- ChangeLog 18 Jan 2008 13:40:37 -0000 1.3263 +++ ChangeLog 19 Jan 2008 14:53:57 -0000 1.3264 @@ -1,3 +1,13 @@ +2008-01-19 Sebastian Dröge <sl...@ci...> + + Based on a patch by: + Victor STINNER <victor dot stinner at haypocalc dot com> + * gst/wavparse/gstwavparse.c: (gst_wavparse_stream_headers): + Set variable to NULL after freeing it to prevent double frees + or make failures by another use of it afterwards more obvious + and fix use of it after the freeing. 2008-01-18 Thijs Vermeir <thi...@gm...> * gst/udp/gstmultiudpsink.c: Index: gstwavparse.c RCS file: /cvs/gstreamer/gst-plugins-good/gst/wavparse/gstwavparse.c,v retrieving revision 1.161 retrieving revision 1.162 diff -u -d -r1.161 -r1.162 --- gstwavparse.c 26 Dec 2007 16:03:57 -0000 1.161 +++ gstwavparse.c 19 Jan 2008 14:53:58 -0000 1.162 @@ -1140,6 +1140,7 @@ wav->vbr = FALSE; g_free (header); + header = NULL; /* do format specific handling */ switch (wav->format) { @@ -1381,8 +1382,7 @@ { GST_ELEMENT_ERROR (wav, STREAM, FAILED, (NULL), ("Stream claims blockalign = %u, which is more than %u - invalid data", - header->blockalign, - header->channels * (guint) ceil (header->size / 8.0))); + wav->blockalign, wav->channels * (guint) ceil (wav->depth / 8.0))); g_free (codec_name); return GST_FLOW_ERROR; } |