GAudio.GATAsyncWavWriter.AsyncWriteLoop C# (CSharp) Method

AsyncWriteLoop() private method

private AsyncWriteLoop ( ) : void
return void
        void AsyncWriteLoop()
        {
            _fs.Seek( GATWavHelper.headerSize, SeekOrigin.Begin );

            int sleepMS;
            int receivedFrames = 0;

            sleepMS = ( int )( GATInfo.AudioBufferDuration * 2000 / 3 );

            while( _vDoWrite )
            {
                receivedFrames = _vReceivedFrames; // cache volatile locally
                if( receivedFrames >= _writtenFrames + WriteChunkFrames )
                {
                    ConvertAndWriteChunk( WriteChunkFrames );
                }
                else
                {
                    Thread.Sleep( sleepMS );
                }
            }

            while( receivedFrames > _writtenFrames )
            {
                if( receivedFrames < WriteChunkFrames )
                {
                    ConvertAndWriteChunk( receivedFrames - _writtenFrames );
                }
                else
                {
                    ConvertAndWriteChunk( WriteChunkFrames );
                }
            }

            byte[] header = null;

            header = GATWavHelper.GetHeader( _numChannels, GATInfo.OutputSampleRate, ( int )_fs.Length );

            _fs.Seek( 0, SeekOrigin.Begin );

            _fs.Write( header, 0, header.Length );

            _fs.Close();
        }