public GATDataAllocator( InitializationSettings initSettings )
{
int i;
_totalSize = ( int )( initSettings.preAllocatedAudioDuration * GATInfo.OutputSampleRate );
_mainBuffer = new float[ _totalSize ];
_pool = new Stack< GATManagedData >( initSettings.maxConcurrentSamples );
_binWidth = initSettings.binWidth;
_nbOfBins = initSettings.nbOfBins;
for( i = 0; i < initSettings.maxConcurrentSamples; i++ )
{
GATManagedData data = new GATManagedData( this );
_pool.Push( data );
}
_freeChunksBins = new Stack< GATManagedData >[ _nbOfBins ];
for( i = 0; i < _nbOfBins; i++ )
{
_freeChunksBins[i] = new Stack< GATManagedData >(20);
}
InitCursors();
_maxBinSize = _nbOfBins * _binWidth;
#if !UNITY_WEBPLAYER
_mainBufferHandle = GCHandle.Alloc( _mainBuffer, GCHandleType.Pinned );
_mainBufferPointer = _mainBufferHandle.AddrOfPinnedObject();
#endif
#if GAT_DEBUG
Debug.Log( "GATDataAllocator initialized, total size: " + _totalSize + " largest allocatable chunk: " + _maxBinSize );
#endif
}