示例#1
0
        public static StreamingSound GetSound(Stream stream, RiffLoader ParsedHeader)
        {
            bool IsMono = false;

            if (ParsedHeader != null)
            {
                if (ParsedHeader.Channels == 1)
                {
                    IsMono = true;
                }
            }
            var mp3 = new MP3Sharp.MP3Stream(stream, IsMono);
            var snd = new StreamingSound();

            snd.Data = mp3;
            if (mp3.Format == MP3Sharp.SoundFormat.Pcm16BitMono)
            {
                snd.Format = Al.AL_FORMAT_MONO16;
            }
            else
            {
                snd.Format = Al.AL_FORMAT_STEREO16;
            }
            snd.Frequency = mp3.Frequency;
            return(snd);
        }
示例#2
0
        const uint MAGIC_OGG  = 0x5367674F;        //Future reference

        public static StreamingSound Open(Stream stream)
        {
            var  reader = new BinaryReader(stream);
            uint magic  = reader.ReadUInt32();

            reader.BaseStream.Seek(-4, SeekOrigin.Current);
            switch (magic)
            {
            case MAGIC_RIFF:
                return(RiffLoader.GetSound(stream));

            case MAGIC_OGG:
                //TODO: Opus
                return(VorbisLoader.GetSound(stream));

            default:
                return(Mp3Utils.GetSound(stream, null));
            }
        }
示例#3
0
        public static StreamingSound GetSound(Stream stream)
        {
            RiffLoader file = new RiffLoader(stream);

            if (file.Format == WaveFormat.PCM)
            {
                var snd = new StreamingSound();
                snd.Format    = ALUtils.GetFormat(file.m_Channels, file.Bits);
                snd.Frequency = file.Frequency;
                snd.Size      = file.dataLength;
                snd.Data      = file.GetDataStream();
                return(snd);
            }
            else if (file.Format == WaveFormat.MP3)
            {
                return(Mp3Utils.GetSound(file.GetDataStream(), file));
            }
            throw new NotSupportedException();
        }