[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [11672] branches/soc-2007-hcube/intern/ tinySND/sndfile: sndfileProvider is renamed to sndfileReader, it is more informative.
Csaba Hruska
csaba.hruska at gmail.com
Sun Aug 19 12:26:17 CEST 2007
Revision: 11672
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=11672
Author: hcube
Date: 2007-08-19 12:26:16 +0200 (Sun, 19 Aug 2007)
Log Message:
-----------
sndfileProvider is renamed to sndfileReader, it is more informative. added sndfileWriter class's skeleton.
Added Paths:
-----------
branches/soc-2007-hcube/intern/tinySND/sndfile/sndfileReader.cpp
branches/soc-2007-hcube/intern/tinySND/sndfile/sndfileReader.h
branches/soc-2007-hcube/intern/tinySND/sndfile/sndfileWriter.cpp
branches/soc-2007-hcube/intern/tinySND/sndfile/sndfileWriter.h
Removed Paths:
-------------
branches/soc-2007-hcube/intern/tinySND/sndfile/sndfileProvider.cpp
branches/soc-2007-hcube/intern/tinySND/sndfile/sndfileProvider.h
Deleted: branches/soc-2007-hcube/intern/tinySND/sndfile/sndfileProvider.cpp
===================================================================
--- branches/soc-2007-hcube/intern/tinySND/sndfile/sndfileProvider.cpp 2007-08-19 06:13:19 UTC (rev 11671)
+++ branches/soc-2007-hcube/intern/tinySND/sndfile/sndfileProvider.cpp 2007-08-19 10:26:16 UTC (rev 11672)
@@ -1,69 +0,0 @@
-#include <assert.h>
-#include "sndfileProvider.h"
-
-sndfileProvider::sndfileProvider( char *filename )
-{
- mSF_Info.format = 0;
- mSndFile = sf_open( filename, SFM_READ, &mSF_Info );
- mNumFrames = mSF_Info.frames;
- mSampleRate = mSF_Info.samplerate;
-
- switch( mSF_Info.format & 0x0000ffff )
- {
- case SF_FORMAT_PCM_U8:
- case SF_FORMAT_PCM_S8:
- mBitRate = 8;
- break;
- case SF_FORMAT_PCM_16:
- case SF_FORMAT_FLOAT:
- mBitRate = 16;
- break;
- case SF_FORMAT_PCM_24:
- mBitRate = 24;
- break;
- case SF_FORMAT_PCM_32:
- case SF_FORMAT_DOUBLE:
- mBitRate = 32;
- break;
- default:
- mBitRate = 8;
- break;
- }
-
- mNumChannels = mSF_Info.channels;
- mIsSeekable = mSF_Info.seekable;
- mDuration = ((float)mNumFrames)/((float)mSampleRate);
-}
-
-sndfileProvider::~sndfileProvider()
-{
- if( mSndFile != 0 )
- {
- sf_close( mSndFile );
- }
-}
-
-bool sndfileProvider::isFormatSupported(void)
-{
- return mSndFile != 0;
-}
-
-void sndfileProvider::seek( int frameNum )
-{
- assert( mSndFile != 0 );
-
- if( mIsSeekable )
- {
- sf_seek( mSndFile, frameNum, SEEK_SET );
- }
-}
-
-int sndfileProvider::fillBuffer( float *buffer, int framesNum )
-{
- assert( mSndFile != 0 );
- assert( buffer != 0 );
-
- return sf_read_float( mSndFile, buffer, framesNum );
-}
-
-
Deleted: branches/soc-2007-hcube/intern/tinySND/sndfile/sndfileProvider.h
===================================================================
--- branches/soc-2007-hcube/intern/tinySND/sndfile/sndfileProvider.h 2007-08-19 06:13:19 UTC (rev 11671)
+++ branches/soc-2007-hcube/intern/tinySND/sndfile/sndfileProvider.h 2007-08-19 10:26:16 UTC (rev 11672)
@@ -1,24 +0,0 @@
-#ifndef __SNDFILEPROVIDER_H__
-#define __SNDFILEPROVIDER_H__
-
-#include "SND_DataProvider.h"
-#include <sndfile.h>
-
-class sndfileProvider: public SND_DataProvider
-{
-public:
- sndfileProvider( char *filename );
- ~sndfileProvider();
-
- bool isFormatSupported();
-
- void seek( int frameNum );
- int fillBuffer( float *buffer, int framesNum );
-
-private:
- SNDFILE *mSndFile;
- SF_INFO mSF_Info;
-};
-
-#endif // __SNDFILEPROVIDER_H__
-
Added: branches/soc-2007-hcube/intern/tinySND/sndfile/sndfileReader.cpp
===================================================================
--- branches/soc-2007-hcube/intern/tinySND/sndfile/sndfileReader.cpp (rev 0)
+++ branches/soc-2007-hcube/intern/tinySND/sndfile/sndfileReader.cpp 2007-08-19 10:26:16 UTC (rev 11672)
@@ -0,0 +1,69 @@
+#include <assert.h>
+#include "sndfileReader.h"
+
+sndfileReader::sndfileReader( char *filename )
+{
+ mSF_Info.format = 0;
+ mSndFile = sf_open( filename, SFM_READ, &mSF_Info );
+ mNumFrames = mSF_Info.frames;
+ mSampleRate = mSF_Info.samplerate;
+
+ switch( mSF_Info.format & 0x0000ffff )
+ {
+ case SF_FORMAT_PCM_U8:
+ case SF_FORMAT_PCM_S8:
+ mBitRate = 8;
+ break;
+ case SF_FORMAT_PCM_16:
+ case SF_FORMAT_FLOAT:
+ mBitRate = 16;
+ break;
+ case SF_FORMAT_PCM_24:
+ mBitRate = 24;
+ break;
+ case SF_FORMAT_PCM_32:
+ case SF_FORMAT_DOUBLE:
+ mBitRate = 32;
+ break;
+ default:
+ mBitRate = 8;
+ break;
+ }
+
+ mNumChannels = mSF_Info.channels;
+ mIsSeekable = mSF_Info.seekable;
+ mDuration = ((float)mNumFrames)/((float)mSampleRate);
+}
+
+sndfileReader::~sndfileReader()
+{
+ if( mSndFile != 0 )
+ {
+ sf_close( mSndFile );
+ }
+}
+
+bool sndfileReader::isFormatSupported(void)
+{
+ return mSndFile != 0;
+}
+
+void sndfileReader::seek( int frameNum )
+{
+ assert( mSndFile != 0 );
+
+ if( mIsSeekable )
+ {
+ sf_seek( mSndFile, frameNum, SEEK_SET );
+ }
+}
+
+int sndfileReader::fillBuffer( float *buffer, int framesNum )
+{
+ assert( mSndFile != 0 );
+ assert( buffer != 0 );
+
+ return sf_read_float( mSndFile, buffer, framesNum );
+}
+
+
Added: branches/soc-2007-hcube/intern/tinySND/sndfile/sndfileReader.h
===================================================================
--- branches/soc-2007-hcube/intern/tinySND/sndfile/sndfileReader.h (rev 0)
+++ branches/soc-2007-hcube/intern/tinySND/sndfile/sndfileReader.h 2007-08-19 10:26:16 UTC (rev 11672)
@@ -0,0 +1,24 @@
+#ifndef __SNDFILEREADER_H__
+#define __SNDFILEREADER_H__
+
+#include "SND_DataProvider.h"
+#include <sndfile.h>
+
+class sndfileReader: public SND_DataProvider
+{
+public:
+ sndfileReader( char *filename );
+ ~sndfileReader();
+
+ bool isFormatSupported();
+
+ void seek( int frameNum );
+ int fillBuffer( float *buffer, int framesNum );
+
+private:
+ SNDFILE *mSndFile;
+ SF_INFO mSF_Info;
+};
+
+#endif // __SNDFILEREADER_H__
+
Added: branches/soc-2007-hcube/intern/tinySND/sndfile/sndfileWriter.cpp
===================================================================
--- branches/soc-2007-hcube/intern/tinySND/sndfile/sndfileWriter.cpp (rev 0)
+++ branches/soc-2007-hcube/intern/tinySND/sndfile/sndfileWriter.cpp 2007-08-19 10:26:16 UTC (rev 11672)
@@ -0,0 +1,85 @@
+#include <assert.h>
+#include "sndfileWriter.h"
+
+sndfileWriter::sndfileWriter( char *filename )
+{
+ mInput = 0;
+ // clear callback
+ mCallback = 0;
+ mUserData1 = 0;
+ mUserData2 = 0;
+
+ mBuffer = new float[ SND_MIX_BUFFER_FRAMES ];
+ mBufferSize = SND_MIX_BUFFER_FRAMES;
+}
+
+sndfileWriter::~sndfileWriter()
+{
+ delete mBuffer;
+}
+
+bool sndfileWriter::initialize()
+{
+ assert( mInput != 0 );
+
+ // !!!! NOT IMPLEMENTED YET !!!!
+ // sndlife can convert audio data, so we let it to do it, we use floats
+ return false;
+}
+
+bool sndfileWriter::finalize()
+{
+ // !!!! NOT IMPLEMENTED YET !!!!
+ return false;
+}
+
+float sndfileWriter::getSampleRate()
+{
+ return mSampleRate;
+}
+
+void sndfileWriter::setSampleRate( float sampleRate )
+{
+ mSampleRate = sampleRate;
+}
+
+int sndfileWriter::getSampleFormat()
+{
+ return mSampleFormat;
+}
+
+void sndfileWriter::setSampleFormat( int sampleFormat )
+{
+ mSampleFormat = sampleFormat;
+}
+
+int sndfileWriter::getNumChannels()
+{
+ return mNumChannels;
+}
+
+void sndfileWriter::setNumChannels( int channelsNum )
+{
+ mNumChannels = channelsNum;
+}
+
+void sndfileWriter::consumeData( int framesNum )
+{
+ assert( mInput != 0 );
+ assert( mBuffer != 0 );
+
+ // resize buffer is necessary
+ if( mBufferSize < framesNum )
+ {
+ delete mBuffer;
+ mBufferSize = (framesNum / SND_MIX_BUFFER_FRAMES + 1) * SND_MIX_BUFFER_FRAMES;
+ mBuffer = new float[ mBufferSize ];
+ }
+
+ mInput->fillBuffer( (char*)mBuffer, framesNum );
+
+ int count = sf_write_float( mSndFile, mBuffer, framesNum * mNumChannels ) ;
+
+ assert( count == framesNum * mNumChannels );
+}
+
Added: branches/soc-2007-hcube/intern/tinySND/sndfile/sndfileWriter.h
===================================================================
--- branches/soc-2007-hcube/intern/tinySND/sndfile/sndfileWriter.h (rev 0)
+++ branches/soc-2007-hcube/intern/tinySND/sndfile/sndfileWriter.h 2007-08-19 10:26:16 UTC (rev 11672)
@@ -0,0 +1,40 @@
+#ifndef __SNDFILEWRITER_H__
+#define __SNDFILEWRITER_H__
+
+#include "SND_DataConsumer.h"
+#include <sndfile.h>
+
+class sndfileWriter: public SND_DataConsumer
+{
+public:
+ sndfileWriter( char *filename );
+ ~sndfileWriter();
+
+ bool initialize();
+ bool finalize();
+
+ float getSampleRate();
+ void setSampleRate( float sampleRate );
+
+ int getSampleFormat();
+ void setSampleFormat( int sampleFormat );
+
+ int getNumChannels();
+ void setNumChannels( int channelsNum );
+
+ void consumeData( int framesNum );
+
+private:
+ float *mBuffer;
+ int mBufferSize;
+
+ float mSampleRate;
+ int mNumChannels;
+ int mSampleFormat;
+
+ SNDFILE *mSndFile;
+ SF_INFO mSF_Info;
+};
+
+#endif // __SNDFILEWRITER_H__
+
More information about the Bf-blender-cvs
mailing list