21 #ifdef SIMAGE_LIBSNDFILE_SUPPORT
41 libsndfile_init_context(libsndfile_context *context)
44 context->tempbuffer = NULL;
45 context->tempbuffersize = 0;
49 libsndfile_cleanup_context(libsndfile_context *context)
51 if (context->tempbuffer)
52 free(context->tempbuffer);
53 context->tempbuffer = NULL;
54 context->tempbuffersize = 0;
61 libsndfile_context *context;
64 dummyfile = fopen(filename,
"rb");
70 context = (libsndfile_context *) malloc(
sizeof(libsndfile_context));
71 libsndfile_init_context(context);
73 context->file = sf_open (filename, SFM_READ, &context->sfinfo) ;
75 libsndfile_cleanup_context(context);
79 sf_command (context->file, SFC_SET_NORM_DOUBLE, NULL, SF_TRUE) ;
103 libsndfile_context *context;
107 short int *intbuffer;
111 if (context != NULL) {
120 if ( (*size) % (2 * context->sfinfo.channels) ) {
126 itemssize = items*
sizeof(double);
128 if (context->tempbuffersize < itemssize) {
129 if (context->tempbuffer)
130 free(context->tempbuffer);
131 context->tempbuffer = (
double *)malloc(itemssize);
134 intbuffer = (
short int*)buffer;
135 itemsread = sf_read_double(context->file, context->tempbuffer, items);
136 for (i=0; i<itemsread; i++) {
137 intbuffer[i] = context->tempbuffer[i] * (double)32767.0;
141 *size = itemsread * 2;
155 libsndfile_context *context;
157 if (context != NULL) {
158 sf_close(context->file);
159 context->file = NULL;
161 libsndfile_cleanup_context(context);
169 libsndfile_context *context;
171 if (context != NULL) {
172 return sf_seek(context->file, offset, whence);
181 libsndfile_context *context;
183 if (context != NULL) {
184 return sf_seek(context->file, 0, SEEK_CUR);
void s_params_set(s_params *params,...)
void s_stream_context_set(s_stream *stream, void *context)
int libsndfile_stream_tell(s_stream *stream, s_params *params)
void * libsndfile_stream_get(s_stream *stream, void *buffer, int *size, s_params *params)
Windows specific information.
int libsndfile_stream_open(const char *filename, s_stream *stream, s_params *params)
void * s_stream_context_get(s_stream *stream)
s_params * s_stream_params(s_stream *stream)
void libsndfile_stream_close(s_stream *stream)
int libsndfile_stream_seek(s_stream *stream, int offset, int whence, s_params *params)