public WaveFormatEx(SDL_AudioFormat format, int channels, int sampleRate) : base(sampleRate, format.AUDIO_BITSIZE(), channels) { SDL_AudioFormat test_format = format.FirstAudioFormat(); bool valid_format = false; while (!valid_format && test_format != 0) { switch (test_format) { case SDL_AudioFormat.U8: case SDL_AudioFormat.S16: case SDL_AudioFormat.S32: case SDL_AudioFormat.F32: format = test_format; valid_format = true; break; } test_format = format.NextAudioFormat(); } if (!valid_format) { throw new NotSupportedException("XAudio2: Unsupported audio format"); } switch (format) { case SDL_AudioFormat.U8: Silence = 0x80; break; default: Silence = 0x00; break; } waveFormatTag = format.AUDIO_ISFLOAT() ? WaveFormatEncoding.IeeeFloat : WaveFormatEncoding.Pcm; //bitsPerSample = (short)format.AUDIO_BITSIZE(); //this.channels = (short)channels; //this.sampleRate = sampleRate; //blockAlign = (short)(channels * (bitsPerSample / 8)); //averageBytesPerSecond = sampleRate * blockAlign; extraSize = (short)Marshal.SizeOf <WAVEFORMATEX>(); }
public static bool AUDIO_ISINT(this SDL_AudioFormat x) => !x.AUDIO_ISFLOAT();