summaryrefslogtreecommitdiffstats
path: root/gst/audiofx
diff options
context:
space:
mode:
authorSebastian Dröge <slomo@circular-chaos.org>2008-01-08 14:58:18 +0000
committerSebastian Dröge <slomo@circular-chaos.org>2008-01-08 14:58:18 +0000
commitb76819bbd28ffd2ba208d0a2fc55cbbeb928f503 (patch)
tree90a76878827c8b95131b9a42101350ed89de6965 /gst/audiofx
parent9a1a9abb9e85e5ac05b5d8314e18114f5857e3f5 (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.
Diffstat (limited to 'gst/audiofx')
-rw-r--r--gst/audiofx/audioamplify.c9
-rw-r--r--gst/audiofx/audiochebband.c6
-rw-r--r--gst/audiofx/audiocheblimit.c6
-rw-r--r--gst/audiofx/audiochebyshevfreqband.c6
-rw-r--r--gst/audiofx/audiochebyshevfreqlimit.c6
-rw-r--r--gst/audiofx/audiodynamic.c8
-rw-r--r--gst/audiofx/audioinvert.c8
-rw-r--r--gst/audiofx/audiopanorama.c9
8 files changed, 37 insertions, 21 deletions
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);