示例#1
0
        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;
 }
示例#3
0
文件: AVSync.cs 项目: henke37/BizHawk
		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);
		}
示例#4
0
        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);
        }
示例#5
0
 public void PullSamples(ISoundProvider source)
 {
     Array.Clear(pullBuffer, 0, 1470);
     source.GetSamples(pullBuffer);
     buffer.enqueue_samples(pullBuffer, 735);
 }
示例#6
0
		public void PullSamples(ISoundProvider source)
		{
			Array.Clear(pullBuffer, 0, 1470);
			source.GetSamples(pullBuffer);
			buffer.enqueue_samples(pullBuffer, 735);
		}
示例#7
0
 void ISoundProvider.GetSamples(short[] samples)
 {
     input.GetSamples(samples);
     PushThroughSamples(samples, samples.Length);
 }