src/sndfile.hh : Added a constructor to allow the use of SF_VIRTUAL_IO.

This commit is contained in:
Erik de Castro Lopo 2012-09-25 21:16:34 +10:00
parent dca9fcde82
commit 0f67af1a23
2 changed files with 31 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2012-09-25 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
* src/sndfile.hh
Added a constructor to allow the use of SF_VIRTUAL_IO. Patch from
DannyDaemonic : https://github.com/erikd/libsndfile/pull/20
2012-08-23 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
* doc/octave.html

View File

@ -1,5 +1,5 @@
/*
** Copyright (C) 2005-2011 Erik de Castro Lopo <erikd@mega-nerd.com>
** Copyright (C) 2005-2012 Erik de Castro Lopo <erikd@mega-nerd.com>
**
** All rights reserved.
**
@ -79,6 +79,8 @@ class SndfileHandle
int format = 0, int channels = 0, int samplerate = 0) ;
SndfileHandle (int fd, bool close_desc, int mode = SFM_READ,
int format = 0, int channels = 0, int samplerate = 0) ;
SndfileHandle (SF_VIRTUAL_IO &sfvirtual, void *user_data, int mode = SFM_READ,
int format = 0, int channels = 0, int samplerate = 0) ;
#ifdef ENABLE_SNDFILE_WINDOWS_PROTOTYPES
SndfileHandle (LPCWSTR wpath, int mode = SFM_READ,
@ -229,6 +231,28 @@ SndfileHandle::SndfileHandle (int fd, bool close_desc, int mode, int fmt, int ch
return ;
} /* SndfileHandle fd constructor */
inline
SndfileHandle::SndfileHandle (SF_VIRTUAL_IO &sfvirtual, void *user_data, int mode, int fmt, int chans, int srate)
: p (NULL)
{
p = new (std::nothrow) SNDFILE_ref () ;
if (p != NULL)
{ p->ref = 1 ;
p->sfinfo.frames = 0 ;
p->sfinfo.channels = chans ;
p->sfinfo.format = fmt ;
p->sfinfo.samplerate = srate ;
p->sfinfo.sections = 0 ;
p->sfinfo.seekable = 0 ;
p->sf = sf_open_virtual (&sfvirtual, mode, &p->sfinfo, user_data) ;
} ;
return ;
} /* SndfileHandle std::string constructor */
inline
SndfileHandle::~SndfileHandle (void)
{ if (p != NULL && --p->ref == 0)