コード例 #1
0
        private bool FillBuffer(int buffer)
        {
            int totalRead  = 0;
            int needToRead = BufferSize / decoder.GetBlockSize();

            while (true)
            {
                int actuallyRead = decoder.ReadBlocks(decodedData, totalRead, needToRead - totalRead);
                totalRead += actuallyRead;
                if (totalRead == needToRead || !looping)
                {
                    break;
                }
                decoder.Rewind();
            }
            if (totalRead > 0)
            {
                ALFormat format   = (decoder.GetFormat() == AudioFormat.Stereo16) ? ALFormat.Stereo16 : ALFormat.Mono16;
                int      dataSize = totalRead * decoder.GetBlockSize();
                AL.BufferData(buffer, format, decodedData, dataSize, decoder.GetFrequency());
                return(true);
            }
            return(false);
        }