diff options
author | Lu, Han <han.lu@intel.com> | 2016-06-09 03:42:48 +0800 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2016-06-08 15:14:06 +0200 |
commit | e1b7a5f3769803759c50d1b189160b9f9f03b36e (patch) | |
tree | 80b412cb66786387d60756c5480392e07a75b660 /bat | |
parent | e0c1c86a90ebefb681c01f5c9571f3157cab5c34 (diff) | |
download | alsa-utils-e1b7a5f3769803759c50d1b189160b9f9f03b36e.tar.gz |
alsabat: add a single channel sine wave generator
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>
Diffstat (limited to 'bat')
-rw-r--r-- | bat/bat-signal.h | 1 | ||||
-rw-r--r-- | bat/signal.c | 18 |
2 files changed, 19 insertions, 0 deletions
diff --git a/bat/bat-signal.h b/bat/bat-signal.h index a295517..3c314a5 100644 --- a/bat/bat-signal.h +++ b/bat/bat-signal.h @@ -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); diff --git a/bat/signal.c b/bat/signal.c index 2047f53..c9b5c7b 100644 --- a/bat/signal.c +++ b/bat/signal.c @@ -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; +} |