diff options
author | Sebastian Dröge <slomo@circular-chaos.org> | 2008-01-08 14:58:18 +0000 |
---|---|---|
committer | Sebastian Dröge <slomo@circular-chaos.org> | 2008-01-08 14:58:18 +0000 |
commit | b76819bbd28ffd2ba208d0a2fc55cbbeb928f503 (patch) | |
tree | 90a76878827c8b95131b9a42101350ed89de6965 | |
parent | 9a1a9abb9e85e5ac05b5d8314e18114f5857e3f5 (diff) |
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.
-rw-r--r-- | ChangeLog | 24 | ||||
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | gst/audiofx/audioamplify.c | 9 | ||||
-rw-r--r-- | gst/audiofx/audiochebband.c | 6 | ||||
-rw-r--r-- | gst/audiofx/audiocheblimit.c | 6 | ||||
-rw-r--r-- | gst/audiofx/audiochebyshevfreqband.c | 6 | ||||
-rw-r--r-- | gst/audiofx/audiochebyshevfreqlimit.c | 6 | ||||
-rw-r--r-- | gst/audiofx/audiodynamic.c | 8 | ||||
-rw-r--r-- | gst/audiofx/audioinvert.c | 8 | ||||
-rw-r--r-- | gst/audiofx/audiopanorama.c | 9 | ||||
-rw-r--r-- | gst/level/gstlevel.c | 2 |
11 files changed, 64 insertions, 22 deletions
@@ -1,3 +1,27 @@ +2008-01-08 Sebastian Dröge <slomo@circular-chaos.org> + + * 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 <tim at centricular dot net> * sys/directdraw/gstdirectdrawsink.c: diff --git a/configure.ac b/configure.ac index 1712de9a..5d233bfb 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 9292e4ec..948c187c 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 04fd5dc7..03978a79 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 da403b7a..344db9f1 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 04fd5dc7..03978a79 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 da403b7a..344db9f1 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 883fc93e..b680e5fe 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 013d2011..35ff11e1 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 3c7542b1..3fc01fe4 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 f3e1cb62..e75cfb19 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 |