diff options
Diffstat (limited to 'gst/audiofx')
-rw-r--r-- | gst/audiofx/Makefile.am | 4 | ||||
-rw-r--r-- | gst/audiofx/audioecho.c (renamed from gst/audiofx/audioreverb.c) | 110 | ||||
-rw-r--r-- | gst/audiofx/audioecho.h (renamed from gst/audiofx/audioreverb.h) | 32 | ||||
-rw-r--r-- | gst/audiofx/audiofx.c | 6 |
4 files changed, 76 insertions, 76 deletions
diff --git a/gst/audiofx/Makefile.am b/gst/audiofx/Makefile.am index f4f02be2..22f5fd02 100644 --- a/gst/audiofx/Makefile.am +++ b/gst/audiofx/Makefile.am @@ -17,7 +17,7 @@ libgstaudiofx_la_SOURCES = audiofx.c\ audiowsincband.c \ audiowsinclimit.c \ audiofirfilter.c \ - audioreverb.c + audioecho.c # flags used to compile this plugin libgstaudiofx_la_CFLAGS = $(GST_CFLAGS) \ @@ -47,6 +47,6 @@ noinst_HEADERS = audiopanorama.h \ audiowsincband.h \ audiowsinclimit.h \ audiofirfilter.h \ - audioreverb.h \ + audioecho.h \ math_compat.h diff --git a/gst/audiofx/audioreverb.c b/gst/audiofx/audioecho.c index 2d661b16..04d51240 100644 --- a/gst/audiofx/audioreverb.c +++ b/gst/audiofx/audioecho.c @@ -19,15 +19,15 @@ */ /** - * SECTION:element-audioreverb + * SECTION:element-audioecho * * <refsect2> - * audioreverb adds an echo or revert effect to an audio stream. The echo - * reverb, intensity and the percentage of feedback can be configured. + * audioecho adds an echo or reverb effect to an audio stream. The echo + * delay, intensity and the percentage of feedback can be configured. * <para> * <programlisting> - * gst-launch filesrc location="melo1.ogg" ! audioconvert ! audioreverb reverb=500000000 intensity=0.6 feedback=0.4 ! audioconvert ! autoaudiosink - * gst-launch filesrc location="melo1.ogg" ! decodebin ! audioconvert ! audioreverb reverb=50000000 intensity=0.6 feedback=0.4 ! audioconvert ! autoaudiosink + * gst-launch filesrc location="melo1.ogg" ! audioconvert ! audioecho delay=500000000 intensity=0.6 feedback=0.4 ! audioconvert ! autoaudiosink + * gst-launch filesrc location="melo1.ogg" ! decodebin ! audioconvert ! audioecho delay=50000000 intensity=0.6 feedback=0.4 ! audioconvert ! autoaudiosink * </programlisting> * </para> * </refsect2> @@ -45,9 +45,9 @@ #include <gst/audio/gstaudiofilter.h> #include <gst/controller/gstcontroller.h> -#include "audioreverb.h" +#include "audioecho.h" -#define GST_CAT_DEFAULT gst_audio_reverb_debug +#define GST_CAT_DEFAULT gst_audio_echo_debug GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT); enum @@ -66,37 +66,37 @@ enum " channels=(int)[1,MAX]" #define DEBUG_INIT(bla) \ - GST_DEBUG_CATEGORY_INIT (gst_audio_reverb_debug, "audioreverb", 0, "audioreverb element"); + GST_DEBUG_CATEGORY_INIT (gst_audio_echo_debug, "audioecho", 0, "audioecho element"); -GST_BOILERPLATE_FULL (GstAudioReverb, gst_audio_reverb, GstAudioFilter, +GST_BOILERPLATE_FULL (GstAudioEcho, gst_audio_echo, GstAudioFilter, GST_TYPE_AUDIO_FILTER, DEBUG_INIT); -static void gst_audio_reverb_set_property (GObject * object, guint prop_id, +static void gst_audio_echo_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec); -static void gst_audio_reverb_get_property (GObject * object, guint prop_id, +static void gst_audio_echo_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec); -static void gst_audio_reverb_finalize (GObject * object); +static void gst_audio_echo_finalize (GObject * object); -static gboolean gst_audio_reverb_setup (GstAudioFilter * self, +static gboolean gst_audio_echo_setup (GstAudioFilter * self, GstRingBufferSpec * format); -static gboolean gst_audio_reverb_stop (GstBaseTransform * base); -static GstFlowReturn gst_audio_reverb_transform_ip (GstBaseTransform * base, +static gboolean gst_audio_echo_stop (GstBaseTransform * base); +static GstFlowReturn gst_audio_echo_transform_ip (GstBaseTransform * base, GstBuffer * buf); -static void gst_audio_reverb_transform_float (GstAudioReverb * self, +static void gst_audio_echo_transform_float (GstAudioEcho * self, gfloat * data, guint num_samples); -static void gst_audio_reverb_transform_double (GstAudioReverb * self, +static void gst_audio_echo_transform_double (GstAudioEcho * self, gdouble * data, guint num_samples); /* GObject vmethod implementations */ static void -gst_audio_reverb_base_init (gpointer klass) +gst_audio_echo_base_init (gpointer klass) { GstElementClass *element_class = GST_ELEMENT_CLASS (klass); GstCaps *caps; - gst_element_class_set_details_simple (element_class, "Audio reverb", + gst_element_class_set_details_simple (element_class, "Audio echo", "Filter/Effect/Audio", "Adds an echo or reverb effect to an audio stream", "Sebastian Dröge <sebastian.droege@collabora.co.uk>"); @@ -108,19 +108,19 @@ gst_audio_reverb_base_init (gpointer klass) } static void -gst_audio_reverb_class_init (GstAudioReverbClass * klass) +gst_audio_echo_class_init (GstAudioEchoClass * klass) { GObjectClass *gobject_class = (GObjectClass *) klass; GstBaseTransformClass *basetransform_class = (GstBaseTransformClass *) klass; GstAudioFilterClass *audioself_class = (GstAudioFilterClass *) klass; - gobject_class->set_property = gst_audio_reverb_set_property; - gobject_class->get_property = gst_audio_reverb_get_property; - gobject_class->finalize = gst_audio_reverb_finalize; + gobject_class->set_property = gst_audio_echo_set_property; + gobject_class->get_property = gst_audio_echo_get_property; + gobject_class->finalize = gst_audio_echo_finalize; g_object_class_install_property (gobject_class, PROP_DELAY, g_param_spec_uint64 ("delay", "Delay", - "Delay of the echo in nanoseconds", 1, G_MAXUINT64, + "Delay of the echo in nanosecondsecho", 1, G_MAXUINT64, 1, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | GST_PARAM_CONTROLLABLE)); @@ -136,14 +136,14 @@ gst_audio_reverb_class_init (GstAudioReverbClass * klass) 0.0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | GST_PARAM_CONTROLLABLE)); - audioself_class->setup = GST_DEBUG_FUNCPTR (gst_audio_reverb_setup); + audioself_class->setup = GST_DEBUG_FUNCPTR (gst_audio_echo_setup); basetransform_class->transform_ip = - GST_DEBUG_FUNCPTR (gst_audio_reverb_transform_ip); - basetransform_class->stop = GST_DEBUG_FUNCPTR (gst_audio_reverb_stop); + GST_DEBUG_FUNCPTR (gst_audio_echo_transform_ip); + basetransform_class->stop = GST_DEBUG_FUNCPTR (gst_audio_echo_stop); } static void -gst_audio_reverb_init (GstAudioReverb * self, GstAudioReverbClass * klass) +gst_audio_echo_init (GstAudioEcho * self, GstAudioEchoClass * klass) { self->delay = 1; self->intensity = 0.0; @@ -153,9 +153,9 @@ gst_audio_reverb_init (GstAudioReverb * self, GstAudioReverbClass * klass) } static void -gst_audio_reverb_finalize (GObject * object) +gst_audio_echo_finalize (GObject * object) { - GstAudioReverb *self = GST_AUDIO_REVERB (object); + GstAudioEcho *self = GST_AUDIO_ECHO (object); g_free (self->buffer); self->buffer = NULL; @@ -164,10 +164,10 @@ gst_audio_reverb_finalize (GObject * object) } static void -gst_audio_reverb_set_property (GObject * object, guint prop_id, +gst_audio_echo_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec) { - GstAudioReverb *self = GST_AUDIO_REVERB (object); + GstAudioEcho *self = GST_AUDIO_ECHO (object); switch (prop_id) { case PROP_DELAY:{ @@ -181,9 +181,9 @@ gst_audio_reverb_set_property (GObject * object, guint prop_id, channels = GST_AUDIO_FILTER (self)->format.channels; if (self->buffer && rate > 0) { - guint new_reverb = + guint new_echo = MAX (gst_util_uint64_scale (self->delay, rate, GST_SECOND), 1); - guint new_size = new_reverb * width * channels; + guint new_size = new_echo * width * channels; if (new_size > self->buffer_size) { guint i; @@ -198,7 +198,7 @@ gst_audio_reverb_set_property (GObject * object, guint prop_id, self->buffer_pos) % self->buffer_size_frames) * width * channels], channels * width); } - self->buffer_size_frames = self->delay_frames = new_reverb; + self->buffer_size_frames = self->delay_frames = new_echo; self->buffer_pos = 0; } } else if (self->buffer) { @@ -228,10 +228,10 @@ gst_audio_reverb_set_property (GObject * object, guint prop_id, } static void -gst_audio_reverb_get_property (GObject * object, guint prop_id, +gst_audio_echo_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec) { - GstAudioReverb *self = GST_AUDIO_REVERB (object); + GstAudioEcho *self = GST_AUDIO_ECHO (object); switch (prop_id) { case PROP_DELAY: @@ -258,17 +258,17 @@ gst_audio_reverb_get_property (GObject * object, guint prop_id, /* GstAudioFilter vmethod implementations */ static gboolean -gst_audio_reverb_setup (GstAudioFilter * base, GstRingBufferSpec * format) +gst_audio_echo_setup (GstAudioFilter * base, GstRingBufferSpec * format) { - GstAudioReverb *self = GST_AUDIO_REVERB (base); + GstAudioEcho *self = GST_AUDIO_ECHO (base); gboolean ret = TRUE; if (format->type == GST_BUFTYPE_FLOAT && format->width == 32) - self->process = (GstAudioReverbProcessFunc) - gst_audio_reverb_transform_float; + self->process = (GstAudioEchoProcessFunc) + gst_audio_echo_transform_float; else if (format->type == GST_BUFTYPE_FLOAT && format->width == 64) - self->process = (GstAudioReverbProcessFunc) - gst_audio_reverb_transform_double; + self->process = (GstAudioEchoProcessFunc) + gst_audio_echo_transform_double; else ret = FALSE; @@ -282,9 +282,9 @@ gst_audio_reverb_setup (GstAudioFilter * base, GstRingBufferSpec * format) } static gboolean -gst_audio_reverb_stop (GstBaseTransform * base) +gst_audio_echo_stop (GstBaseTransform * base) { - GstAudioReverb *self = GST_AUDIO_REVERB (base); + GstAudioEcho *self = GST_AUDIO_ECHO (base); g_free (self->buffer); self->buffer = NULL; @@ -297,30 +297,30 @@ gst_audio_reverb_stop (GstBaseTransform * base) #define TRANSFORM_FUNC(name, type) \ static void \ -gst_audio_reverb_transform_##name (GstAudioReverb * self, \ +gst_audio_echo_transform_##name (GstAudioEcho * self, \ type * data, guint num_samples) \ { \ type *buffer = (type *) self->buffer; \ guint channels = GST_AUDIO_FILTER (self)->format.channels; \ guint rate = GST_AUDIO_FILTER (self)->format.rate; \ guint i, j; \ - guint reverb_index = self->buffer_size_frames - self->delay_frames; \ - gdouble reverb_off = ((((gdouble) self->delay) * rate) / GST_SECOND) - self->delay_frames; \ + guint echo_index = self->buffer_size_frames - self->delay_frames; \ + gdouble echo_off = ((((gdouble) self->delay) * rate) / GST_SECOND) - self->delay_frames; \ \ - if (reverb_off < 0.0) \ - reverb_off = 0.0; \ + if (echo_off < 0.0) \ + echo_off = 0.0; \ \ num_samples /= channels; \ \ for (i = 0; i < num_samples; i++) { \ - guint echo0_index = ((reverb_index + self->buffer_pos) % self->buffer_size_frames) * channels; \ - guint echo1_index = ((reverb_index + self->buffer_pos +1) % self->buffer_size_frames) * channels; \ + guint echo0_index = ((echo_index + self->buffer_pos) % self->buffer_size_frames) * channels; \ + guint echo1_index = ((echo_index + self->buffer_pos +1) % self->buffer_size_frames) * channels; \ guint rbout_index = (self->buffer_pos % self->buffer_size_frames) * channels; \ for (j = 0; j < channels; j++) { \ gdouble in = data[i*channels + j]; \ gdouble echo0 = buffer[echo0_index + j]; \ gdouble echo1 = buffer[echo1_index + j]; \ - gdouble echo = echo0 + (echo1-echo0)*reverb_off; \ + gdouble echo = echo0 + (echo1-echo0)*echo_off; \ type out = in + self->intensity * echo; \ \ data[i*channels + j] = out; \ @@ -336,9 +336,9 @@ TRANSFORM_FUNC (double, gdouble); /* GstBaseTransform vmethod implementations */ static GstFlowReturn -gst_audio_reverb_transform_ip (GstBaseTransform * base, GstBuffer * buf) +gst_audio_echo_transform_ip (GstBaseTransform * base, GstBuffer * buf) { - GstAudioReverb *self = GST_AUDIO_REVERB (base); + GstAudioEcho *self = GST_AUDIO_ECHO (base); guint num_samples = GST_BUFFER_SIZE (buf) / (GST_AUDIO_FILTER (self)->format.width / 8); diff --git a/gst/audiofx/audioreverb.h b/gst/audiofx/audioecho.h index 3ef5682e..9513bb8e 100644 --- a/gst/audiofx/audioreverb.h +++ b/gst/audiofx/audioecho.h @@ -18,8 +18,8 @@ * Boston, MA 02111-1307, USA. */ -#ifndef __GST_AUDIO_REVERB_H__ -#define __GST_AUDIO_REVERB_H__ +#ifndef __GST_AUDIO_ECHO_H__ +#define __GST_AUDIO_ECHO_H__ #include <gst/gst.h> #include <gst/base/gstbasetransform.h> @@ -28,18 +28,18 @@ G_BEGIN_DECLS -#define GST_TYPE_AUDIO_REVERB (gst_audio_reverb_get_type()) -#define GST_AUDIO_REVERB(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_AUDIO_REVERB,GstAudioReverb)) -#define GST_IS_AUDIO_REVERB(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_AUDIO_REVERB)) -#define GST_AUDIO_REVERB_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass) ,GST_TYPE_AUDIO_REVERB,GstAudioReverbClass)) -#define GST_IS_AUDIO_REVERB_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass) ,GST_TYPE_AUDIO_REVERB)) -#define GST_AUDIO_REVERB_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj) ,GST_TYPE_AUDIO_REVERB,GstAudioReverbClass)) -typedef struct _GstAudioReverb GstAudioReverb; -typedef struct _GstAudioReverbClass GstAudioReverbClass; +#define GST_TYPE_AUDIO_ECHO (gst_audio_echo_get_type()) +#define GST_AUDIO_ECHO(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_AUDIO_ECHO,GstAudioEcho)) +#define GST_IS_AUDIO_ECHO(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_AUDIO_ECHO)) +#define GST_AUDIO_ECHO_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass) ,GST_TYPE_AUDIO_ECHO,GstAudioEchoClass)) +#define GST_IS_AUDIO_ECHO_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass) ,GST_TYPE_AUDIO_ECHO)) +#define GST_AUDIO_ECHO_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj) ,GST_TYPE_AUDIO_ECHO,GstAudioEchoClass)) +typedef struct _GstAudioEcho GstAudioEcho; +typedef struct _GstAudioEchoClass GstAudioEchoClass; -typedef void (*GstAudioReverbProcessFunc) (GstAudioReverb *, guint8 *, guint); +typedef void (*GstAudioEchoProcessFunc) (GstAudioEcho *, guint8 *, guint); -struct _GstAudioReverb +struct _GstAudioEcho { GstAudioFilter audiofilter; @@ -48,7 +48,7 @@ struct _GstAudioReverb gfloat feedback; /* < private > */ - GstAudioReverbProcessFunc process; + GstAudioEchoProcessFunc process; guint delay_frames; guint8 *buffer; guint buffer_pos; @@ -56,13 +56,13 @@ struct _GstAudioReverb guint buffer_size_frames; }; -struct _GstAudioReverbClass +struct _GstAudioEchoClass { GstAudioFilterClass parent; }; -GType gst_audio_reverb_get_type (void); +GType gst_audio_echo_get_type (void); G_END_DECLS -#endif /* __GST_AUDIO_REVERB_H__ */ +#endif /* __GST_AUDIO_ECHO_H__ */ diff --git a/gst/audiofx/audiofx.c b/gst/audiofx/audiofx.c index e23a638f..a268724d 100644 --- a/gst/audiofx/audiofx.c +++ b/gst/audiofx/audiofx.c @@ -36,7 +36,7 @@ #include "audiowsincband.h" #include "audiowsinclimit.h" #include "audiofirfilter.h" -#include "audioreverb.h" +#include "audioecho.h" /* entry point to initialize the plug-in * initialize the plug-in itself @@ -71,8 +71,8 @@ plugin_init (GstPlugin * plugin) GST_TYPE_AUDIO_WSINC_BAND) && gst_element_register (plugin, "audiofirfilter", GST_RANK_NONE, GST_TYPE_AUDIO_FIR_FILTER) && - gst_element_register (plugin, "audioreverb", GST_RANK_NONE, - GST_TYPE_AUDIO_REVERB)); + gst_element_register (plugin, "audioecho", GST_RANK_NONE, + GST_TYPE_AUDIO_ECHO)); } GST_PLUGIN_DEFINE (GST_VERSION_MAJOR, |