]> git.alsa-project.org Git - alsa-utils.git/commitdiff
alsabat: add a single channel sine wave generator
authorLu, Han <han.lu@intel.com>
Wed, 8 Jun 2016 19:42:48 +0000 (03:42 +0800)
committerTakashi Iwai <tiwai@suse.de>
Wed, 8 Jun 2016 13:14:06 +0000 (15:14 +0200)
Add function generate_sine_wave_raw_mono(). It serves as a single
channel sine wave generator, to provide data for calculation (e.g.
for noise analysis).
The function is similar to generate_sine_wave(), but a lite revision.
It has no dependency on bat channels and target frequency, no malloc
inside, no data conversion from float to integer samples, and supports
one channel only.

Signed-off-by: Lu, Han <han.lu@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
bat/bat-signal.h
bat/signal.c

index a2955176e820b7628d2f20d463c321e1ff094415..3c314a5dd33a25bd4912ed736ce8f72ce7252004 100644 (file)
@@ -28,3 +28,4 @@ int sin_generator_init(struct sin_generator *, float, float, float);
 float sin_generator_next_sample(struct sin_generator *);
 void sin_generator_vfill(struct sin_generator *, float *, int);
 int generate_sine_wave(struct bat *, int, void *);
+int generate_sine_wave_raw_mono(struct bat *, float *, float, int);
index 2047f532818e0032f2903e8a2e6bb77546274037..c9b5c7beff033b4d0688c8b5e1cd4b17786d71f3 100644 (file)
@@ -183,3 +183,21 @@ exit:
 
        return err;
 }
+
+/* generate single channel sine waveform without sample conversion */
+int generate_sine_wave_raw_mono(struct bat *bat, float *buf,
+               float freq, int nsamples)
+{
+       int err = 0;
+       struct sin_generator sg;
+
+       err = sin_generator_init(&sg, 1.0, freq, bat->rate);
+       if (err < 0)
+               return err;
+       sin_generator_vfill(&sg, buf, nsamples);
+
+       /* adjust amplitude and offset of waveform */
+       err = adjust_waveform(bat, buf, nsamples, 1);
+
+       return err;
+}