forked from enlightenment/efl
ecore-audio: remove src files that are never compiled
This commit is contained in:
parent
b6f4af28b2
commit
0df9bd2cdb
|
@ -1,489 +0,0 @@
|
|||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_SNDFILE
|
||||
#include "Ecore.h"
|
||||
#include "ecore_private.h"
|
||||
#include "Ecore_Audio.h"
|
||||
#include "ecore_audio_private.h"
|
||||
|
||||
#include <sndfile.h>
|
||||
|
||||
static Ecore_Audio_Module *module = NULL;
|
||||
|
||||
/* Virtual IO wrapper functions */
|
||||
|
||||
static sf_count_t _sndfile_wrap_get_filelen(void *data)
|
||||
{
|
||||
Ecore_Audio_Object *obj = data;
|
||||
struct _Ecore_Audio_Sndfile *sndfile = obj->module_data;
|
||||
|
||||
if (!sndfile->vio)
|
||||
goto error;
|
||||
|
||||
if (sndfile->vio->get_length)
|
||||
return sndfile->vio->get_length(obj);
|
||||
|
||||
error:
|
||||
return -1;
|
||||
}
|
||||
|
||||
static sf_count_t _sndfile_wrap_seek(sf_count_t offset, int whence, void *data)
|
||||
{
|
||||
Ecore_Audio_Object *obj = data;
|
||||
struct _Ecore_Audio_Sndfile *sndfile = obj->module_data;
|
||||
|
||||
if (!sndfile->vio)
|
||||
goto error;
|
||||
|
||||
if (sndfile->vio->seek)
|
||||
return sndfile->vio->seek(obj, offset, whence);
|
||||
|
||||
error:
|
||||
return -1;
|
||||
}
|
||||
|
||||
static sf_count_t _sndfile_wrap_read(void *buffer, sf_count_t count, void *data)
|
||||
{
|
||||
Ecore_Audio_Object *obj = data;
|
||||
struct _Ecore_Audio_Sndfile *sndfile = obj->module_data;
|
||||
|
||||
if (!sndfile->vio)
|
||||
goto error;
|
||||
|
||||
if (sndfile->vio->read)
|
||||
return sndfile->vio->read(obj, buffer, count);
|
||||
|
||||
error:
|
||||
return 0;
|
||||
}
|
||||
|
||||
static sf_count_t _sndfile_wrap_write(const void *buffer, sf_count_t count, void *data)
|
||||
{
|
||||
Ecore_Audio_Object *obj = data;
|
||||
struct _Ecore_Audio_Sndfile *sndfile = obj->module_data;
|
||||
|
||||
if (!sndfile->vio)
|
||||
goto error;
|
||||
|
||||
if (sndfile->vio->write)
|
||||
return sndfile->vio->write(obj, buffer, count);
|
||||
|
||||
error:
|
||||
return 0;
|
||||
}
|
||||
|
||||
static sf_count_t _sndfile_wrap_tell(void *data)
|
||||
{
|
||||
Ecore_Audio_Object *obj = data;
|
||||
struct _Ecore_Audio_Sndfile *sndfile = obj->module_data;
|
||||
|
||||
if (!sndfile->vio)
|
||||
goto error;
|
||||
|
||||
if (sndfile->vio->tell)
|
||||
return sndfile->vio->tell(obj);
|
||||
|
||||
error:
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* End virtual IO wrapper functions */
|
||||
|
||||
static Ecore_Audio_Object *
|
||||
_sndfile_input_new(Ecore_Audio_Object *input)
|
||||
{
|
||||
Ecore_Audio_Input *in = (Ecore_Audio_Input *)input;
|
||||
struct _Ecore_Audio_Sndfile *sndfile;
|
||||
|
||||
sndfile = calloc(1, sizeof(struct _Ecore_Audio_Sndfile));
|
||||
if (!sndfile)
|
||||
{
|
||||
ERR("Could not allocate memory for private structure.");
|
||||
free(in);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
in->module_data = sndfile;
|
||||
|
||||
sndfile->sfinfo.format = 0;
|
||||
sndfile->volume = 1.0;
|
||||
|
||||
return (Ecore_Audio_Object *)in;
|
||||
}
|
||||
|
||||
static void
|
||||
_sndfile_input_del(Ecore_Audio_Object *input)
|
||||
{
|
||||
Ecore_Audio_Input *in = (Ecore_Audio_Input *)input;
|
||||
struct _Ecore_Audio_Sndfile *sndfile = in->module_data;
|
||||
|
||||
eina_stringshare_del(sndfile->filename);
|
||||
|
||||
sf_close(sndfile->handle);
|
||||
free(sndfile);
|
||||
}
|
||||
|
||||
static int
|
||||
_sndfile_input_read(Ecore_Audio_Object *input, void *data, int len)
|
||||
{
|
||||
Ecore_Audio_Input *in = (Ecore_Audio_Input *)input;
|
||||
struct _Ecore_Audio_Sndfile *sndfile = in->module_data;
|
||||
int read;
|
||||
|
||||
/* FIXME: Nicer way to return bytes read instead of items */
|
||||
read = sf_read_float(sndfile->handle, data, len / 4) * 4;
|
||||
|
||||
return read;
|
||||
}
|
||||
|
||||
static double
|
||||
_sndfile_input_seek(Ecore_Audio_Object *input, double offs, int mode)
|
||||
{
|
||||
Ecore_Audio_Input *in = (Ecore_Audio_Input *)input;
|
||||
struct _Ecore_Audio_Sndfile *sndfile = in->module_data;
|
||||
sf_count_t count, pos;
|
||||
|
||||
count = offs * sndfile->sfinfo.samplerate;
|
||||
pos = sf_seek(sndfile->handle, count, mode);
|
||||
return (double)pos / sndfile->sfinfo.samplerate;
|
||||
}
|
||||
|
||||
static struct input_api inops = {
|
||||
.input_new = _sndfile_input_new,
|
||||
.input_del = _sndfile_input_del,
|
||||
.input_read = _sndfile_input_read,
|
||||
.input_seek = _sndfile_input_seek,
|
||||
};
|
||||
|
||||
EAPI void ecore_audio_input_sndfile_format_set(Ecore_Audio_Object *input, int format)
|
||||
{
|
||||
Ecore_Audio_Output *in = (Ecore_Audio_Output *)input;
|
||||
struct _Ecore_Audio_Sndfile *sndfile = in->module_data;
|
||||
|
||||
sndfile->sfinfo.format = format;
|
||||
}
|
||||
|
||||
void ecore_audio_input_sndfile_filename_set(Ecore_Audio_Object *input, const char *filename)
|
||||
{
|
||||
Ecore_Audio_Input *in = (Ecore_Audio_Input *)input;
|
||||
struct _Ecore_Audio_Sndfile *sndfile = in->module_data;
|
||||
|
||||
if (sndfile->handle)
|
||||
sf_close(sndfile->handle);
|
||||
|
||||
if (sndfile->filename)
|
||||
eina_stringshare_del(sndfile->filename);
|
||||
|
||||
if (sndfile->vio)
|
||||
{
|
||||
free(sndfile->vio);
|
||||
sndfile->vio = NULL;
|
||||
}
|
||||
|
||||
sndfile->filename = eina_stringshare_add(filename);
|
||||
|
||||
sndfile->handle = sf_open(sndfile->filename, SFM_READ, &sndfile->sfinfo);
|
||||
|
||||
in->length = (double)sndfile->sfinfo.frames / sndfile->sfinfo.samplerate;
|
||||
|
||||
// XXX: Propagate samplerate/channel update to output
|
||||
in->samplerate = sndfile->sfinfo.samplerate;
|
||||
in->channels = sndfile->sfinfo.channels;
|
||||
}
|
||||
|
||||
void ecore_audio_input_sndfile_vio_set(Ecore_Audio_Object *input, Ecore_Audio_Vio *vio)
|
||||
{
|
||||
Ecore_Audio_Input *in = (Ecore_Audio_Input *)input;
|
||||
struct _Ecore_Audio_Sndfile *sndfile = in->module_data;
|
||||
struct _Ecore_Audio_Sndfile_Private *priv = in->module->priv;
|
||||
|
||||
if (sndfile->handle)
|
||||
sf_close(sndfile->handle);
|
||||
|
||||
if (sndfile->filename)
|
||||
{
|
||||
eina_stringshare_del(sndfile->filename);
|
||||
sndfile->filename = NULL;
|
||||
}
|
||||
|
||||
if (sndfile->vio)
|
||||
free(sndfile->vio);
|
||||
|
||||
sndfile->vio = calloc(1, sizeof(Ecore_Audio_Vio));
|
||||
sndfile->vio->get_length = vio->get_length;
|
||||
sndfile->vio->seek = vio->seek;
|
||||
sndfile->vio->read = vio->read;
|
||||
sndfile->vio->tell = vio->tell;
|
||||
|
||||
if (sndfile->sfinfo.format != 0) {
|
||||
sndfile->sfinfo.samplerate = in->samplerate;
|
||||
sndfile->sfinfo.channels = in->channels;
|
||||
}
|
||||
|
||||
sndfile->handle = sf_open_virtual(&priv->vio_wrapper, SFM_READ, &sndfile->sfinfo, in);
|
||||
|
||||
in->length = (double)sndfile->sfinfo.frames / sndfile->sfinfo.samplerate;
|
||||
|
||||
// XXX: Propagate samplerate/channel update to output
|
||||
in->samplerate = sndfile->sfinfo.samplerate;
|
||||
in->channels = sndfile->sfinfo.channels;
|
||||
}
|
||||
|
||||
static Ecore_Audio_Object *
|
||||
_sndfile_output_new(Ecore_Audio_Object *output)
|
||||
{
|
||||
Ecore_Audio_Output *out = (Ecore_Audio_Output *)output;
|
||||
struct _Ecore_Audio_Sndfile *sndfile;
|
||||
|
||||
sndfile = calloc(1, sizeof(struct _Ecore_Audio_Sndfile));
|
||||
if (!sndfile)
|
||||
{
|
||||
ERR("Could not allocate memory for private structure.");
|
||||
free(out);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
out->module_data = sndfile;
|
||||
|
||||
sndfile->sfinfo.format = SF_FORMAT_OGG | SF_FORMAT_VORBIS;
|
||||
|
||||
return (Ecore_Audio_Object *)out;
|
||||
}
|
||||
|
||||
static void
|
||||
_sndfile_output_del(Ecore_Audio_Object *output)
|
||||
{
|
||||
Ecore_Audio_Output *out = (Ecore_Audio_Output *)output;
|
||||
struct _Ecore_Audio_Sndfile *sndfile = out->module_data;
|
||||
|
||||
eina_stringshare_del(sndfile->filename);
|
||||
free(sndfile->vio);
|
||||
|
||||
sf_close(sndfile->handle);
|
||||
free(sndfile);
|
||||
}
|
||||
|
||||
static void
|
||||
_sndfile_output_volume_set(Ecore_Audio_Object *output, double volume)
|
||||
{
|
||||
Ecore_Audio_Output *out = (Ecore_Audio_Output *)output;
|
||||
struct _Ecore_Audio_Sndfile *sndfile = out->module_data;
|
||||
|
||||
if ((volume < 0) || (volume > 1.0))
|
||||
return;
|
||||
|
||||
sndfile->volume = volume;
|
||||
}
|
||||
|
||||
static double
|
||||
_sndfile_output_volume_get(Ecore_Audio_Object *output)
|
||||
{
|
||||
Ecore_Audio_Output *out = (Ecore_Audio_Output *)output;
|
||||
struct _Ecore_Audio_Sndfile *sndfile = out->module_data;
|
||||
|
||||
return sndfile->volume;
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
_sndfile_output_write_cb(void *data)
|
||||
{
|
||||
Ecore_Audio_Output *out = (Ecore_Audio_Output *)data;
|
||||
struct _Ecore_Audio_Sndfile *sndfile = out->module_data;
|
||||
Ecore_Audio_Input *in;
|
||||
int written, bread;
|
||||
void *buf;
|
||||
|
||||
buf = malloc(1024);
|
||||
|
||||
in = eina_list_data_get(out->inputs);
|
||||
|
||||
bread = ecore_audio_input_read((Ecore_Audio_Object *)in, buf, 1024);
|
||||
DBG("read: %i", bread);
|
||||
if (bread == 0)
|
||||
{
|
||||
DBG("read done");
|
||||
out->paused = EINA_TRUE;
|
||||
return EINA_FALSE;
|
||||
}
|
||||
|
||||
// XXX: Check for errors
|
||||
written = sf_write_float(sndfile->handle, buf, bread/4)*4;
|
||||
DBG("written: %i", written);
|
||||
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
_sndfile_output_paused_set(Ecore_Audio_Object *output, Eina_Bool paused)
|
||||
{
|
||||
struct _Ecore_Audio_Sndfile *sndfile = output->module_data;
|
||||
Ecore_Audio_Output *out = (Ecore_Audio_Output *)output;
|
||||
|
||||
if (paused && sndfile->timer)
|
||||
ecore_timer_del(sndfile->timer);
|
||||
else if (out->inputs)
|
||||
sndfile->timer = ecore_timer_add(0.01, _sndfile_output_write_cb, output);
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
_sndfile_output_add_input(Ecore_Audio_Object *output, Ecore_Audio_Object *input)
|
||||
{
|
||||
struct _Ecore_Audio_Sndfile *sndfile = output->module_data;
|
||||
struct _Ecore_Audio_Sndfile_Private *priv = output->module->priv;
|
||||
|
||||
Ecore_Audio_Output *out = (Ecore_Audio_Output *)output;
|
||||
Ecore_Audio_Input *in = (Ecore_Audio_Input *)input;
|
||||
|
||||
sndfile->sfinfo.samplerate = in->samplerate;
|
||||
sndfile->sfinfo.channels = in->channels;
|
||||
|
||||
if (sndfile->vio)
|
||||
sndfile->handle = sf_open_virtual(&priv->vio_wrapper, SFM_WRITE, &sndfile->sfinfo, out);
|
||||
else if (sndfile->filename)
|
||||
sndfile->handle = sf_open(sndfile->filename, SFM_WRITE, &sndfile->sfinfo);
|
||||
|
||||
if (output->paused)
|
||||
return EINA_TRUE;
|
||||
|
||||
if (!out->inputs)
|
||||
sndfile->timer = ecore_timer_add(0.01, _sndfile_output_write_cb, output);
|
||||
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
_sndfile_output_del_input(Ecore_Audio_Object *out EINA_UNUSED, Ecore_Audio_Object *in EINA_UNUSED)
|
||||
{
|
||||
//XXX: Check if it's the last one and pause the timer
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
_sndfile_output_update_input_format(Ecore_Audio_Object *out EINA_UNUSED, Ecore_Audio_Object *in EINA_UNUSED)
|
||||
{
|
||||
}
|
||||
|
||||
static struct output_api outops = {
|
||||
.output_new = _sndfile_output_new,
|
||||
.output_del = _sndfile_output_del,
|
||||
.output_volume_set = _sndfile_output_volume_set,
|
||||
.output_volume_get = _sndfile_output_volume_get,
|
||||
.output_paused_set = _sndfile_output_paused_set,
|
||||
.output_add_input = _sndfile_output_add_input,
|
||||
.output_del_input = _sndfile_output_del_input,
|
||||
.output_update_input_format = _sndfile_output_update_input_format,
|
||||
};
|
||||
|
||||
EAPI void ecore_audio_output_sndfile_filename_set(Ecore_Audio_Object *output, const char *filename)
|
||||
{
|
||||
Ecore_Audio_Output *out = (Ecore_Audio_Output *)output;
|
||||
struct _Ecore_Audio_Sndfile *sndfile = out->module_data;
|
||||
|
||||
if (sndfile->handle)
|
||||
sf_close(sndfile->handle);
|
||||
|
||||
if (sndfile->filename)
|
||||
eina_stringshare_del(sndfile->filename);
|
||||
|
||||
if (sndfile->vio)
|
||||
{
|
||||
free(sndfile->vio);
|
||||
sndfile->vio = NULL;
|
||||
}
|
||||
|
||||
sndfile->filename = eina_stringshare_add(filename);
|
||||
}
|
||||
|
||||
EAPI void ecore_audio_output_sndfile_format_set(Ecore_Audio_Object *output, int format)
|
||||
{
|
||||
Ecore_Audio_Output *out = (Ecore_Audio_Output *)output;
|
||||
struct _Ecore_Audio_Sndfile *sndfile = out->module_data;
|
||||
|
||||
sndfile->sfinfo.format = format;
|
||||
}
|
||||
|
||||
EAPI void ecore_audio_output_sndfile_vio_set(Ecore_Audio_Object *output, Ecore_Audio_Vio *vio)
|
||||
{
|
||||
struct _Ecore_Audio_Sndfile *sndfile = output->module_data;
|
||||
|
||||
if (sndfile->handle)
|
||||
sf_close(sndfile->handle);
|
||||
|
||||
if (sndfile->filename)
|
||||
{
|
||||
eina_stringshare_del(sndfile->filename);
|
||||
sndfile->filename = NULL;
|
||||
}
|
||||
|
||||
if (sndfile->vio)
|
||||
free(sndfile->vio);
|
||||
|
||||
sndfile->vio = calloc(1, sizeof(Ecore_Audio_Vio));
|
||||
sndfile->vio->get_length = vio->get_length;
|
||||
sndfile->vio->seek = vio->seek;
|
||||
sndfile->vio->write = vio->write;
|
||||
sndfile->vio->tell = vio->tell;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Initialize the Ecore_Audio sndfile module
|
||||
*
|
||||
* @return the initialized module on success, NULL on error
|
||||
*/
|
||||
Ecore_Audio_Module *
|
||||
ecore_audio_sndfile_init(void)
|
||||
{
|
||||
struct _Ecore_Audio_Sndfile_Private *priv;
|
||||
|
||||
module = calloc(1, sizeof(Ecore_Audio_Module));
|
||||
if (!module)
|
||||
{
|
||||
ERR("Could not allocate memory for module.");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
priv = calloc(1, sizeof(struct _Ecore_Audio_Sndfile_Private));
|
||||
if (!priv)
|
||||
{
|
||||
ERR("Could not allocate memory for private module region.");
|
||||
free(module);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
priv->vio_wrapper.get_filelen = _sndfile_wrap_get_filelen;
|
||||
priv->vio_wrapper.seek = _sndfile_wrap_seek;
|
||||
priv->vio_wrapper.read = _sndfile_wrap_read;
|
||||
priv->vio_wrapper.write = _sndfile_wrap_write;
|
||||
priv->vio_wrapper.tell = _sndfile_wrap_tell;
|
||||
|
||||
ECORE_MAGIC_SET(module, ECORE_MAGIC_AUDIO_MODULE);
|
||||
module->type = ECORE_AUDIO_TYPE_SNDFILE;
|
||||
module->name = "sndfile";
|
||||
module->priv = priv;
|
||||
module->inputs = NULL;
|
||||
module->outputs = NULL;
|
||||
module->in_ops = &inops;
|
||||
module->out_ops = &outops;
|
||||
|
||||
DBG("Initialized");
|
||||
return module;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Shut down the Ecore_Audio sndfile module
|
||||
*/
|
||||
void
|
||||
ecore_audio_sndfile_shutdown(void)
|
||||
{
|
||||
struct _Ecore_Audio_Sndfile_Private *priv = (struct _Ecore_Audio_Sndfile_Private *)module->priv;
|
||||
|
||||
free(priv);
|
||||
free(module);
|
||||
module = NULL;
|
||||
|
||||
DBG("Shutting down");
|
||||
}
|
||||
|
||||
#endif /* HAVE_SNDFILE */
|
|
@ -1,158 +0,0 @@
|
|||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
#include "Ecore.h"
|
||||
#include "ecore_private.h"
|
||||
#include "Ecore_Audio.h"
|
||||
#include "ecore_audio_private.h"
|
||||
|
||||
#include <math.h>
|
||||
|
||||
static Ecore_Audio_Module *module = NULL;
|
||||
|
||||
static Ecore_Audio_Object *
|
||||
_tone_input_new(Ecore_Audio_Object *input)
|
||||
{
|
||||
Ecore_Audio_Input *in = (Ecore_Audio_Input *)input;
|
||||
struct _Ecore_Audio_Tone *tone;
|
||||
|
||||
tone = calloc(1, sizeof(struct _Ecore_Audio_Tone));
|
||||
if (!tone)
|
||||
{
|
||||
ERR("Could not allocate memory for private structure.");
|
||||
free(in);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
in->samplerate = 44100;
|
||||
in->channels = 1;
|
||||
|
||||
in->module_data = tone;
|
||||
|
||||
in->length = 1;
|
||||
tone->freq = 1000;
|
||||
tone->phase = 0;
|
||||
|
||||
return (Ecore_Audio_Object *)in;
|
||||
}
|
||||
|
||||
static void
|
||||
_tone_input_del(Ecore_Audio_Object *input)
|
||||
{
|
||||
Ecore_Audio_Input *in = (Ecore_Audio_Input *)input;
|
||||
free(in->module_data);
|
||||
}
|
||||
|
||||
static int
|
||||
_tone_input_read(Ecore_Audio_Object *input, void *data, int len)
|
||||
{
|
||||
Ecore_Audio_Input *in = (Ecore_Audio_Input *)input;
|
||||
struct _Ecore_Audio_Tone *tone = in->module_data;
|
||||
float *val = data;
|
||||
int i, remain;
|
||||
|
||||
remain = in->length * in->samplerate * 4 - tone->phase * 4;
|
||||
if (remain > len)
|
||||
remain = len;
|
||||
|
||||
for (i = 0; i < remain / 4; i++)
|
||||
{
|
||||
val[i] = sin(2 * M_PI * tone->freq * (tone->phase + i) / in->samplerate);
|
||||
}
|
||||
tone->phase += i;
|
||||
|
||||
return remain;
|
||||
}
|
||||
|
||||
static double
|
||||
_tone_input_seek(Ecore_Audio_Object *input, double offs, int mode)
|
||||
{
|
||||
Ecore_Audio_Input *in = (Ecore_Audio_Input *)input;
|
||||
struct _Ecore_Audio_Tone *tone = in->module_data;
|
||||
int tmp;
|
||||
|
||||
switch (mode) {
|
||||
case SEEK_SET:
|
||||
tmp = offs * in->samplerate;
|
||||
break;
|
||||
case SEEK_CUR:
|
||||
tmp = tone->phase + offs * in->samplerate;
|
||||
break;
|
||||
case SEEK_END:
|
||||
tmp = (in->length + offs) * in->samplerate;
|
||||
break;
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
|
||||
if ((tmp < 0) || (tmp > in->length * in->samplerate))
|
||||
return -1;
|
||||
|
||||
tone->phase = tmp;
|
||||
return (double)tone->phase / in->samplerate;
|
||||
}
|
||||
|
||||
static struct input_api inops = {
|
||||
.input_new = _tone_input_new,
|
||||
.input_del = _tone_input_del,
|
||||
.input_read = _tone_input_read,
|
||||
.input_seek = _tone_input_seek,
|
||||
};
|
||||
|
||||
EAPI void ecore_audio_input_tone_frequency_set(Ecore_Audio_Object *input, int freq)
|
||||
{
|
||||
Ecore_Audio_Input *in = (Ecore_Audio_Input *)input;
|
||||
struct _Ecore_Audio_Tone *tone = in->module_data;
|
||||
|
||||
tone->freq = freq;
|
||||
}
|
||||
|
||||
EAPI void ecore_audio_input_tone_duration_set(Ecore_Audio_Object *input, double duration)
|
||||
{
|
||||
Ecore_Audio_Input *in = (Ecore_Audio_Input *)input;
|
||||
|
||||
in->length = duration;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Initialize the Ecore_Audio sndfile module
|
||||
*
|
||||
* @return the initialized module on success, NULL on error
|
||||
*/
|
||||
Ecore_Audio_Module *
|
||||
ecore_audio_tone_init(void)
|
||||
{
|
||||
module = calloc(1, sizeof(Ecore_Audio_Module));
|
||||
if (!module)
|
||||
{
|
||||
ERR("Could not allocate memory for module.");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
ECORE_MAGIC_SET(module, ECORE_MAGIC_AUDIO_MODULE);
|
||||
module->type = ECORE_AUDIO_TYPE_TONE;
|
||||
module->name = "tone";
|
||||
module->priv = NULL;
|
||||
module->inputs = NULL;
|
||||
module->outputs = NULL;
|
||||
module->in_ops = &inops;
|
||||
module->out_ops = NULL;
|
||||
|
||||
DBG("Initialized");
|
||||
return module;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Shut down the Ecore_Audio sndfile module
|
||||
*/
|
||||
void
|
||||
ecore_audio_tone_shutdown(void)
|
||||
{
|
||||
free(module);
|
||||
module = NULL;
|
||||
|
||||
DBG("Shutting down");
|
||||
}
|
||||
|
Loading…
Reference in New Issue