public void GetSamples(short[] samples) { int samplesToGenerate = SamplesInOneFrame; if (buffer.Count > samples.Length + MaxExcessSamples) { samplesToGenerate = 0; } if (buffer.Count - samples.Length < TargetExtraSamples) { samplesToGenerate += SamplesInOneFrame; } if (samplesToGenerate + buffer.Count < samples.Length) { samplesToGenerate = samples.Length - buffer.Count; } var mySamples = new short[samplesToGenerate]; BaseSoundProvider.GetSamples(mySamples); foreach (short s in mySamples) { buffer.Enqueue(s); } for (int i = 0; i < samples.Length; i++) { samples[i] = buffer.Dequeue(); } }
public void GetSamples(out short[] samples, out int nsamp) { short[] ret = new short[spf * 2]; source.GetSamples(ret); samples = ret; nsamp = spf; }
private long _soundRemainder; // audio timekeeping for video dumping public void DumpAV(IVideoProvider v, ISoundProvider s, out short[] samples, out int samplesprovided) { if (!aset || !vset) throw new InvalidOperationException("Must set params first!"); long nsampnum = samplerate * (long)fpsden + _soundRemainder; long nsamp = nsampnum / fpsnum; // exactly remember fractional parts of an audio sample _soundRemainder = nsampnum % fpsnum; samples = new short[nsamp * channels]; s.GetSamples(samples); samplesprovided = (int)nsamp; w.AddFrame(v); w.AddSamples(samples); }
private long _soundRemainder; // audio timekeeping for video dumping public void DumpAV(IVideoProvider v, ISoundProvider s, out short[] samples, out int samplesprovided) { if (!aset || !vset) { throw new InvalidOperationException("Must set params first!"); } long nsampnum = samplerate * (long)fpsden + _soundRemainder; long nsamp = nsampnum / fpsnum; // exactly remember fractional parts of an audio sample _soundRemainder = nsampnum % fpsnum; samples = new short[nsamp * channels]; s.GetSamples(samples); samplesprovided = (int)nsamp; w.AddFrame(v); w.AddSamples(samples); }
public void PullSamples(ISoundProvider source) { Array.Clear(pullBuffer, 0, 1470); source.GetSamples(pullBuffer); buffer.enqueue_samples(pullBuffer, 735); }
void ISoundProvider.GetSamples(short[] samples) { input.GetSamples(samples); PushThroughSamples(samples, samples.Length); }