public static SDL_AudioFormat FirstAudioFormat(this SDL_AudioFormat format) { for (_formatIdx = 0; _formatIdx < _formatList.Length; ++_formatIdx) { if (_formatList[_formatIdx][0] == format) { break; } } _formatIdxSub = 0; return(NextAudioFormat()); }
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 SDL_AudioFormat NextAudioFormat(this SDL_AudioFormat useless) => NextAudioFormat();
public static bool AUDIO_ISUNSIGNED(this SDL_AudioFormat x) => !x.AUDIO_ISSIGNED();
public static bool AUDIO_ISLITTLEENDIAN(this SDL_AudioFormat x) => !x.AUDIO_ISBIGENDIAN();
public static bool AUDIO_ISINT(this SDL_AudioFormat x) => !x.AUDIO_ISFLOAT();
public static bool AUDIO_ISSIGNED(this SDL_AudioFormat x) => x.AND(AUDIO_MASK_SIGNED) != 0;
public static bool AUDIO_ISBIGENDIAN(this SDL_AudioFormat x) => x.AND(AUDIO_MASK_ENDIAN) != 0;
public static bool AUDIO_ISFLOAT(this SDL_AudioFormat x) => x.AND(AUDIO_MASK_DATATYPE) != 0;
public static int AUDIO_BITSIZE(this SDL_AudioFormat x) => x.AND(AUDIO_MASK_BITSIZE);
static int AND(this SDL_AudioFormat x, int y) => (int)x & y;