//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));
        }
Example #2
0
        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
            });
        }