From: Sebastian Dröge Date: Tue, 8 Jan 2008 14:58:18 +0000 (+0000) Subject: Make elements GST_BUFFER_FLAG_GAP aware and call gst_base_transform_set_gap_aware... X-Git-Tag: RELEASE-0_10_7~112 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b76819bbd28ffd2ba208d0a2fc55cbbeb928f503;p=platform%2Fupstream%2Fgst-plugins-good.git Make elements GST_BUFFER_FLAG_GAP aware and call gst_base_transform_set_gap_aware for this. Original commit message from CVS: * configure.ac: * gst/audiofx/audioamplify.c: (gst_audio_amplify_clipping_method_get_type), (gst_audio_amplify_init), (gst_audio_amplify_transform_ip): * gst/audiofx/audiodynamic.c: (gst_audio_dynamic_init), (gst_audio_dynamic_transform_ip): * gst/audiofx/audioinvert.c: (gst_audio_invert_init), (gst_audio_invert_transform_ip): * gst/audiofx/audiopanorama.c: (gst_audio_panorama_init), (gst_audio_panorama_transform): * gst/level/gstlevel.c: (gst_level_init): Make elements GST_BUFFER_FLAG_GAP aware and call gst_base_transform_set_gap_aware for this. Bump core requirement to CVS. * gst/audiofx/audiochebyshevfreqband.c: (gst_audio_chebyshev_freq_band_transform_ip): * gst/audiofx/audiochebyshevfreqlimit.c: (gst_audio_chebyshev_freq_limit_transform_ip): Also sync GObject properties to the controller if operating in passthrough mode. --- diff --git a/ChangeLog b/ChangeLog index ae6c7a6..9117855 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,27 @@ +2008-01-08 Sebastian Dröge + + * configure.ac: + * gst/audiofx/audioamplify.c: + (gst_audio_amplify_clipping_method_get_type), + (gst_audio_amplify_init), (gst_audio_amplify_transform_ip): + * gst/audiofx/audiodynamic.c: (gst_audio_dynamic_init), + (gst_audio_dynamic_transform_ip): + * gst/audiofx/audioinvert.c: (gst_audio_invert_init), + (gst_audio_invert_transform_ip): + * gst/audiofx/audiopanorama.c: (gst_audio_panorama_init), + (gst_audio_panorama_transform): + * gst/level/gstlevel.c: (gst_level_init): + Make elements GST_BUFFER_FLAG_GAP aware and call + gst_base_transform_set_gap_aware for this. + Bump core requirement to CVS. + + * gst/audiofx/audiochebyshevfreqband.c: + (gst_audio_chebyshev_freq_band_transform_ip): + * gst/audiofx/audiochebyshevfreqlimit.c: + (gst_audio_chebyshev_freq_limit_transform_ip): + Also sync GObject properties to the controller if operating + in passthrough mode. + 2008-01-07 Tim-Philipp Müller * sys/directdraw/gstdirectdrawsink.c: diff --git a/configure.ac b/configure.ac index 1712de9..5d233bf 100644 --- a/configure.ac +++ b/configure.ac @@ -46,7 +46,7 @@ dnl AS_LIBTOOL_TAGS AM_PROG_LIBTOOL dnl *** required versions of GStreamer stuff *** -GST_REQ=0.10.15 +GST_REQ=0.10.15.1 GSTPB_REQ=0.10.15 dnl *** autotools stuff **** diff --git a/gst/audiofx/audioamplify.c b/gst/audiofx/audioamplify.c index 9292e4e..948c187 100644 --- a/gst/audiofx/audioamplify.c +++ b/gst/audiofx/audioamplify.c @@ -97,6 +97,7 @@ gst_audio_amplify_clipping_method_get_type (void) {0, NULL, NULL} }; + /* FIXME 0.11: rename to GstAudioAmplifyClippingMethod */ gtype = g_enum_register_static ("GstAudioPanoramaClippingMethod", values); } return gtype; @@ -218,6 +219,7 @@ gst_audio_amplify_init (GstAudioAmplify * filter, GstAudioAmplifyClass * klass) filter->clipping_method = METHOD_CLIP; filter->format_index = 0; gst_base_transform_set_in_place (GST_BASE_TRANSFORM (filter), TRUE); + gst_base_transform_set_gap_aware (GST_BASE_TRANSFORM (filter), TRUE); } static gboolean @@ -414,12 +416,13 @@ gst_audio_amplify_transform_ip (GstBaseTransform * base, GstBuffer * buf) guint num_samples = GST_BUFFER_SIZE (buf) / (GST_AUDIO_FILTER (filter)->format.width / 8); - if (gst_base_transform_is_passthrough (base)) - return GST_FLOW_OK; - if (GST_CLOCK_TIME_IS_VALID (GST_BUFFER_TIMESTAMP (buf))) gst_object_sync_values (G_OBJECT (filter), GST_BUFFER_TIMESTAMP (buf)); + if (gst_base_transform_is_passthrough (base) || + G_UNLIKELY (GST_BUFFER_FLAG_IS_SET (buf, GST_BUFFER_FLAG_GAP))) + return GST_FLOW_OK; + filter->process (filter, GST_BUFFER_DATA (buf), num_samples); return GST_FLOW_OK; diff --git a/gst/audiofx/audiochebband.c b/gst/audiofx/audiochebband.c index 04fd5dc..03978a7 100644 --- a/gst/audiofx/audiochebband.c +++ b/gst/audiofx/audiochebband.c @@ -885,12 +885,12 @@ gst_audio_chebyshev_freq_band_transform_ip (GstBaseTransform * base, guint num_samples = GST_BUFFER_SIZE (buf) / (GST_AUDIO_FILTER (filter)->format.width / 8); - if (gst_base_transform_is_passthrough (base)) - return GST_FLOW_OK; - if (GST_CLOCK_TIME_IS_VALID (GST_BUFFER_TIMESTAMP (buf))) gst_object_sync_values (G_OBJECT (filter), GST_BUFFER_TIMESTAMP (buf)); + if (gst_base_transform_is_passthrough (base)) + return GST_FLOW_OK; + if (!filter->have_coeffs) generate_coefficients (filter); diff --git a/gst/audiofx/audiocheblimit.c b/gst/audiofx/audiocheblimit.c index da403b7..344db9f 100644 --- a/gst/audiofx/audiocheblimit.c +++ b/gst/audiofx/audiocheblimit.c @@ -785,12 +785,12 @@ gst_audio_chebyshev_freq_limit_transform_ip (GstBaseTransform * base, guint num_samples = GST_BUFFER_SIZE (buf) / (GST_AUDIO_FILTER (filter)->format.width / 8); - if (gst_base_transform_is_passthrough (base)) - return GST_FLOW_OK; - if (GST_CLOCK_TIME_IS_VALID (GST_BUFFER_TIMESTAMP (buf))) gst_object_sync_values (G_OBJECT (filter), GST_BUFFER_TIMESTAMP (buf)); + if (gst_base_transform_is_passthrough (base)) + return GST_FLOW_OK; + if (!filter->have_coeffs) generate_coefficients (filter); diff --git a/gst/audiofx/audiochebyshevfreqband.c b/gst/audiofx/audiochebyshevfreqband.c index 04fd5dc..03978a7 100644 --- a/gst/audiofx/audiochebyshevfreqband.c +++ b/gst/audiofx/audiochebyshevfreqband.c @@ -885,12 +885,12 @@ gst_audio_chebyshev_freq_band_transform_ip (GstBaseTransform * base, guint num_samples = GST_BUFFER_SIZE (buf) / (GST_AUDIO_FILTER (filter)->format.width / 8); - if (gst_base_transform_is_passthrough (base)) - return GST_FLOW_OK; - if (GST_CLOCK_TIME_IS_VALID (GST_BUFFER_TIMESTAMP (buf))) gst_object_sync_values (G_OBJECT (filter), GST_BUFFER_TIMESTAMP (buf)); + if (gst_base_transform_is_passthrough (base)) + return GST_FLOW_OK; + if (!filter->have_coeffs) generate_coefficients (filter); diff --git a/gst/audiofx/audiochebyshevfreqlimit.c b/gst/audiofx/audiochebyshevfreqlimit.c index da403b7..344db9f 100644 --- a/gst/audiofx/audiochebyshevfreqlimit.c +++ b/gst/audiofx/audiochebyshevfreqlimit.c @@ -785,12 +785,12 @@ gst_audio_chebyshev_freq_limit_transform_ip (GstBaseTransform * base, guint num_samples = GST_BUFFER_SIZE (buf) / (GST_AUDIO_FILTER (filter)->format.width / 8); - if (gst_base_transform_is_passthrough (base)) - return GST_FLOW_OK; - if (GST_CLOCK_TIME_IS_VALID (GST_BUFFER_TIMESTAMP (buf))) gst_object_sync_values (G_OBJECT (filter), GST_BUFFER_TIMESTAMP (buf)); + if (gst_base_transform_is_passthrough (base)) + return GST_FLOW_OK; + if (!filter->have_coeffs) generate_coefficients (filter); diff --git a/gst/audiofx/audiodynamic.c b/gst/audiofx/audiodynamic.c index 883fc93..b680e5f 100644 --- a/gst/audiofx/audiodynamic.c +++ b/gst/audiofx/audiodynamic.c @@ -280,6 +280,7 @@ gst_audio_dynamic_init (GstAudioDynamic * filter, GstAudioDynamicClass * klass) filter->characteristics = CHARACTERISTICS_HARD_KNEE; filter->mode = MODE_COMPRESSOR; gst_base_transform_set_in_place (GST_BASE_TRANSFORM (filter), TRUE); + gst_base_transform_set_gap_aware (GST_BASE_TRANSFORM (filter), TRUE); } static void @@ -699,12 +700,13 @@ gst_audio_dynamic_transform_ip (GstBaseTransform * base, GstBuffer * buf) guint num_samples = GST_BUFFER_SIZE (buf) / (GST_AUDIO_FILTER (filter)->format.width / 8); - if (gst_base_transform_is_passthrough (base)) - return GST_FLOW_OK; - if (GST_CLOCK_TIME_IS_VALID (GST_BUFFER_TIMESTAMP (buf))) gst_object_sync_values (G_OBJECT (filter), GST_BUFFER_TIMESTAMP (buf)); + if (gst_base_transform_is_passthrough (base) || + G_UNLIKELY (GST_BUFFER_FLAG_IS_SET (buf, GST_BUFFER_FLAG_GAP))) + return GST_FLOW_OK; + filter->process (filter, GST_BUFFER_DATA (buf), num_samples); return GST_FLOW_OK; diff --git a/gst/audiofx/audioinvert.c b/gst/audiofx/audioinvert.c index 013d201..35ff11e 100644 --- a/gst/audiofx/audioinvert.c +++ b/gst/audiofx/audioinvert.c @@ -148,6 +148,7 @@ gst_audio_invert_init (GstAudioInvert * filter, GstAudioInvertClass * klass) { filter->degree = 0.0; gst_base_transform_set_in_place (GST_BASE_TRANSFORM (filter), TRUE); + gst_base_transform_set_gap_aware (GST_BASE_TRANSFORM (filter), TRUE); } static void @@ -240,12 +241,13 @@ gst_audio_invert_transform_ip (GstBaseTransform * base, GstBuffer * buf) guint num_samples = GST_BUFFER_SIZE (buf) / (GST_AUDIO_FILTER (filter)->format.width / 8); - if (gst_base_transform_is_passthrough (base)) - return GST_FLOW_OK; - if (GST_CLOCK_TIME_IS_VALID (GST_BUFFER_TIMESTAMP (buf))) gst_object_sync_values (G_OBJECT (filter), GST_BUFFER_TIMESTAMP (buf)); + if (gst_base_transform_is_passthrough (base) || + G_UNLIKELY (GST_BUFFER_FLAG_IS_SET (buf, GST_BUFFER_FLAG_GAP))) + return GST_FLOW_OK; + filter->process (filter, GST_BUFFER_DATA (buf), num_samples); return GST_FLOW_OK; diff --git a/gst/audiofx/audiopanorama.c b/gst/audiofx/audiopanorama.c index 3c7542b..3fc01fe 100644 --- a/gst/audiofx/audiopanorama.c +++ b/gst/audiofx/audiopanorama.c @@ -242,12 +242,15 @@ static void gst_audio_panorama_init (GstAudioPanorama * filter, GstAudioPanoramaClass * klass) { + filter->panorama = 0; filter->method = METHOD_PSYCHOACOUSTIC; filter->width = 0; filter->channels = 0; filter->format_float = FALSE; filter->process = NULL; + + gst_base_transform_set_gap_aware (GST_BASE_TRANSFORM (filter), TRUE); } static gboolean @@ -634,6 +637,12 @@ gst_audio_panorama_transform (GstBaseTransform * base, GstBuffer * inbuf, if (GST_CLOCK_TIME_IS_VALID (GST_BUFFER_TIMESTAMP (outbuf))) gst_object_sync_values (G_OBJECT (filter), GST_BUFFER_TIMESTAMP (outbuf)); + if (G_UNLIKELY (GST_BUFFER_FLAG_IS_SET (inbuf, GST_BUFFER_FLAG_GAP))) { + GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_GAP); + memset (GST_BUFFER_DATA (outbuf), 0, GST_BUFFER_SIZE (outbuf)); + return GST_FLOW_OK; + } + filter->process (filter, GST_BUFFER_DATA (inbuf), GST_BUFFER_DATA (outbuf), num_samples); diff --git a/gst/level/gstlevel.c b/gst/level/gstlevel.c index f3e1cb6..e75cfb1 100644 --- a/gst/level/gstlevel.c +++ b/gst/level/gstlevel.c @@ -215,6 +215,8 @@ gst_level_init (GstLevel * filter, GstLevelClass * g_class) filter->message = TRUE; filter->process = NULL; + + gst_base_transform_set_gap_aware (GST_BASE_TRANSFORM (filter), TRUE); } static void