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); }
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)); } }
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(); }