//public override AudioBuffer CreateBuffer(IAudioStream source) //{ // WaveFormatEx fmt = new WaveFormatEx(source.Format, source.Channels, source.Frequency, source.BitsPerSample); // DS.DSBufferCapsFlags flags = DS.DSBufferCapsFlags.CtrlVolume | DS.DSBufferCapsFlags.LocDefer |DS.DSBufferCapsFlags.GlobalFocus | DS.DSBufferCapsFlags.GetCurrentPosition2; // DS.DSBufferDesc desc = new DS.DSBufferDesc(AudioBuffer.DefaultBufferSpan * fmt.nAvgBytesPerSec, flags, &fmt, Guid.Empty); // AudioBuffer buf = CreateBuffer(ref desc); // buf._source = source; // return buf; //} public override AudioBuffer CreateBuffer(WaveFormatTag format, int channels, int bps, int frequency, int size) { WaveFormatEx fmt = new WaveFormatEx(format, channels, frequency, bps); DS.DSBufferCapsFlags flags = DS.DSBufferCapsFlags.CtrlVolume | DS.DSBufferCapsFlags.LocDefer | DS.DSBufferCapsFlags.GlobalFocus | DS.DSBufferCapsFlags.GetCurrentPosition2; DS.DSBufferDesc desc = new DS.DSBufferDesc((uint)size, flags, &fmt, Guid.Empty); return(new wAudioBuffer(this, ref desc)); }
public override AudioBuffer CreateBuffer(IAudioStream target) { int size = AudioBuffer.DefaultBufferSpan * target.Frequency * target.Channels * target.BitsPerSample / 8; WaveFormatEx fmt = new WaveFormatEx(target.Format, target.Channels, target.Frequency, target.BitsPerSample); DS.DSBufferCapsFlags flags = DS.DSBufferCapsFlags.CtrlVolume | DS.DSBufferCapsFlags.LocDefer | DS.DSBufferCapsFlags.GlobalFocus | DS.DSBufferCapsFlags.GetCurrentPosition2; DS.DSBufferDesc desc = new DS.DSBufferDesc((uint)size, flags, &fmt, Guid.Empty); return new wAudioBuffer(this, ref desc) { _source = target, _owner = this }; }
//internal wAudioBuffer(wAudioProvider parent, DS.IDirectSoundBuffer8 buffer) { _dsb8 = buffer; } internal wAudioBuffer(wAudioProvider parent, ref DS.DSBufferDesc desc) { _parent = parent; _parent._ds8.CreateSoundBuffer(ref desc, out _dsb8, IntPtr.Zero); _format = desc.lpwfxFormat->wFormatTag; _frequency = (int)desc.lpwfxFormat->nSamplesPerSec; _channels = desc.lpwfxFormat->nChannels; _bitsPerSample = desc.lpwfxFormat->wBitsPerSample; _dataLength = (int)desc.dwBufferBytes; _blockAlign = _bitsPerSample * _channels / 8; _sampleLength = _dataLength / _blockAlign; }
public override AudioBuffer CreateBuffer(IAudioStream target) { int size = AudioBuffer.DefaultBufferSpan * target.Frequency * target.Channels * target.BitsPerSample / 8; WaveFormatEx fmt = new WaveFormatEx(target.Format, target.Channels, target.Frequency, target.BitsPerSample); DS.DSBufferCapsFlags flags = DS.DSBufferCapsFlags.CtrlVolume | DS.DSBufferCapsFlags.LocDefer | DS.DSBufferCapsFlags.GlobalFocus | DS.DSBufferCapsFlags.GetCurrentPosition2; DS.DSBufferDesc desc = new DS.DSBufferDesc((uint)size, flags, &fmt, Guid.Empty); return(new wAudioBuffer(this, ref desc) { _source = target, _owner = this }); }