forked from enlightenment/efl
ecore_audio: Move sndfile VIO into a file to access from in- and output
The VIO wrapper functions are needed from the sndfile inputs and outputs so move them to a separate file and access from both. Signed-off-by: Daniel Willmann <d.willmann@samsung.com>
This commit is contained in:
parent
3b70c0bc83
commit
3fdc608da1
|
@ -43,7 +43,8 @@ lib/ecore_audio/ecore_audio_obj_out_sndfile.h
|
|||
|
||||
lib_ecore_audio_libecore_audio_la_SOURCES += \
|
||||
lib/ecore_audio/ecore_audio_obj_in_sndfile.c \
|
||||
lib/ecore_audio/ecore_audio_obj_out_sndfile.c
|
||||
lib/ecore_audio/ecore_audio_obj_out_sndfile.c \
|
||||
lib/ecore_audio/ecore_audio_sndfile_vio.c
|
||||
endif
|
||||
|
||||
endif
|
||||
|
|
|
@ -19,6 +19,8 @@ EAPI Eo_Op ECORE_AUDIO_OBJ_IN_SNDFILE_BASE_ID = EO_NOOP;
|
|||
#define MY_CLASS ECORE_AUDIO_OBJ_IN_SNDFILE_CLASS
|
||||
#define MY_CLASS_NAME "ecore_audio_obj_in_sndfile"
|
||||
|
||||
extern SF_VIRTUAL_IO vio_wrapper;
|
||||
|
||||
struct _Ecore_Audio_Sndfile
|
||||
{
|
||||
SNDFILE *handle;
|
||||
|
@ -27,78 +29,6 @@ struct _Ecore_Audio_Sndfile
|
|||
|
||||
typedef struct _Ecore_Audio_Sndfile Ecore_Audio_Sndfile;
|
||||
|
||||
/* Virtual IO wrapper functions */
|
||||
|
||||
static sf_count_t _wrap_get_filelen(void *data)
|
||||
{
|
||||
Eo *eo_obj = data;
|
||||
Ecore_Audio_Object *ea_obj = eo_data_get(eo_obj, ECORE_AUDIO_OBJ_CLASS);
|
||||
|
||||
if (!ea_obj->vio->vio)
|
||||
goto error;
|
||||
|
||||
if (ea_obj->vio->vio->get_length)
|
||||
return ea_obj->vio->vio->get_length(ea_obj->vio->data, eo_obj);
|
||||
|
||||
error:
|
||||
return -1;
|
||||
}
|
||||
|
||||
static sf_count_t _wrap_seek(sf_count_t offset, int whence, void *data)
|
||||
{
|
||||
Eo *eo_obj = data;
|
||||
Ecore_Audio_Object *ea_obj = eo_data_get(eo_obj, ECORE_AUDIO_OBJ_CLASS);
|
||||
|
||||
if (!ea_obj->vio->vio)
|
||||
goto error;
|
||||
|
||||
if (ea_obj->vio->vio->seek)
|
||||
return ea_obj->vio->vio->seek(ea_obj->vio->data, eo_obj, offset, whence);
|
||||
|
||||
error:
|
||||
return -1;
|
||||
}
|
||||
|
||||
static sf_count_t _wrap_read(void *buffer, sf_count_t count, void *data)
|
||||
{
|
||||
Eo *eo_obj = data;
|
||||
Ecore_Audio_Object *ea_obj = eo_data_get(eo_obj, ECORE_AUDIO_OBJ_CLASS);
|
||||
|
||||
if (!ea_obj->vio->vio)
|
||||
goto error;
|
||||
|
||||
if (ea_obj->vio->vio->read)
|
||||
return ea_obj->vio->vio->read(ea_obj->vio->data, eo_obj, buffer, count);
|
||||
|
||||
error:
|
||||
return 0;
|
||||
}
|
||||
|
||||
static sf_count_t _wrap_tell(void *data)
|
||||
{
|
||||
Eo *eo_obj = data;
|
||||
Ecore_Audio_Object *ea_obj = eo_data_get(eo_obj, ECORE_AUDIO_OBJ_CLASS);
|
||||
|
||||
if (!ea_obj->vio->vio)
|
||||
goto error;
|
||||
|
||||
if (ea_obj->vio->vio->tell)
|
||||
return ea_obj->vio->vio->tell(ea_obj->vio->data, eo_obj);
|
||||
|
||||
error:
|
||||
return -1;
|
||||
}
|
||||
|
||||
static SF_VIRTUAL_IO vio_wrapper = {
|
||||
.get_filelen = _wrap_get_filelen,
|
||||
.seek = _wrap_seek,
|
||||
.read = _wrap_read,
|
||||
.write = NULL,
|
||||
.tell = _wrap_tell,
|
||||
};
|
||||
|
||||
/* End virtual IO wrapper functions */
|
||||
|
||||
static void _read(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list)
|
||||
{
|
||||
Ecore_Audio_Sndfile *obj = _pd;
|
||||
|
|
|
@ -19,6 +19,8 @@ EAPI Eo_Op ECORE_AUDIO_OBJ_OUT_SNDFILE_BASE_ID = EO_NOOP;
|
|||
#define MY_CLASS ECORE_AUDIO_OBJ_OUT_SNDFILE_CLASS
|
||||
#define MY_CLASS_NAME "ecore_audio_obj_out_sndfile"
|
||||
|
||||
extern SF_VIRTUAL_IO vio_wrapper;
|
||||
|
||||
struct _Ecore_Audio_Sndfile
|
||||
{
|
||||
SNDFILE *handle;
|
||||
|
|
|
@ -0,0 +1,100 @@
|
|||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_FEATURES_H
|
||||
#include <features.h>
|
||||
#endif
|
||||
|
||||
#include <Eo.h>
|
||||
|
||||
#include "ecore_audio_private.h"
|
||||
#include <sndfile.h>
|
||||
|
||||
/* Virtual IO wrapper functions */
|
||||
|
||||
static sf_count_t _wrap_get_filelen(void *data)
|
||||
{
|
||||
Eo *eo_obj = data;
|
||||
Ecore_Audio_Object *ea_obj = eo_data_get(eo_obj, ECORE_AUDIO_OBJ_CLASS);
|
||||
|
||||
if (!ea_obj->vio->vio)
|
||||
goto error;
|
||||
|
||||
if (ea_obj->vio->vio->get_length)
|
||||
return ea_obj->vio->vio->get_length(ea_obj->vio->data, eo_obj);
|
||||
|
||||
error:
|
||||
return -1;
|
||||
}
|
||||
|
||||
static sf_count_t _wrap_seek(sf_count_t offset, int whence, void *data)
|
||||
{
|
||||
Eo *eo_obj = data;
|
||||
Ecore_Audio_Object *ea_obj = eo_data_get(eo_obj, ECORE_AUDIO_OBJ_CLASS);
|
||||
|
||||
if (!ea_obj->vio->vio)
|
||||
goto error;
|
||||
|
||||
if (ea_obj->vio->vio->seek)
|
||||
return ea_obj->vio->vio->seek(ea_obj->vio->data, eo_obj, offset, whence);
|
||||
|
||||
error:
|
||||
return -1;
|
||||
}
|
||||
|
||||
static sf_count_t _wrap_read(void *buffer, sf_count_t count, void *data)
|
||||
{
|
||||
Eo *eo_obj = data;
|
||||
Ecore_Audio_Object *ea_obj = eo_data_get(eo_obj, ECORE_AUDIO_OBJ_CLASS);
|
||||
|
||||
if (!ea_obj->vio->vio)
|
||||
goto error;
|
||||
|
||||
if (ea_obj->vio->vio->read)
|
||||
return ea_obj->vio->vio->read(ea_obj->vio->data, eo_obj, buffer, count);
|
||||
|
||||
error:
|
||||
return 0;
|
||||
}
|
||||
|
||||
static sf_count_t _wrap_write(const void *buffer, sf_count_t count, void *data)
|
||||
{
|
||||
Eo *eo_obj = data;
|
||||
Ecore_Audio_Object *ea_obj = eo_data_get(eo_obj, ECORE_AUDIO_OBJ_CLASS);
|
||||
|
||||
if (!ea_obj->vio->vio)
|
||||
goto error;
|
||||
|
||||
if (ea_obj->vio->vio->write)
|
||||
return ea_obj->vio->vio->write(ea_obj->vio->data, eo_obj, buffer, count);
|
||||
|
||||
error:
|
||||
return 0;
|
||||
}
|
||||
|
||||
static sf_count_t _wrap_tell(void *data)
|
||||
{
|
||||
Eo *eo_obj = data;
|
||||
Ecore_Audio_Object *ea_obj = eo_data_get(eo_obj, ECORE_AUDIO_OBJ_CLASS);
|
||||
|
||||
if (!ea_obj->vio->vio)
|
||||
goto error;
|
||||
|
||||
if (ea_obj->vio->vio->tell)
|
||||
return ea_obj->vio->vio->tell(ea_obj->vio->data, eo_obj);
|
||||
|
||||
error:
|
||||
return -1;
|
||||
}
|
||||
|
||||
SF_VIRTUAL_IO vio_wrapper = {
|
||||
.get_filelen = _wrap_get_filelen,
|
||||
.seek = _wrap_seek,
|
||||
.read = _wrap_read,
|
||||
.write = _wrap_write,
|
||||
.tell = _wrap_tell,
|
||||
};
|
||||
|
||||
/* End virtual IO wrapper functions */
|
||||
|
Loading…
Reference in New Issue