forked from cgvr/DeltaVR
		
	
		
			
				
	
	
		
			74 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
//This file is deprecated.  Use the high level voip system instead:
 | 
						|
// https://developer.oculus.com/documentation/unity/ps-voip/ 
 | 
						|
//
 | 
						|
// NOTE for android developers: The existence of UnityEngine.Microphone causes Unity to insert the 
 | 
						|
// android.permission.RECORD_AUDIO permission into the AndroidManifest.xml generated at build time
 | 
						|
 | 
						|
#if OVR_PLATFORM_USE_MICROPHONE
 | 
						|
using UnityEngine;
 | 
						|
using System.Collections.Generic;
 | 
						|
 | 
						|
namespace Oculus.Platform
 | 
						|
{
 | 
						|
 | 
						|
  public class MicrophoneInput : IMicrophone
 | 
						|
  {
 | 
						|
    AudioClip microphoneClip;
 | 
						|
    int lastMicrophoneSample;
 | 
						|
    int micBufferSizeSamples;
 | 
						|
 | 
						|
    private Dictionary<int, float[]> micSampleBuffers;
 | 
						|
 | 
						|
    public MicrophoneInput()
 | 
						|
    {
 | 
						|
      int bufferLenSeconds = 1; //minimum size unity allows
 | 
						|
      int inputFreq = 48000; //this frequency is fixed throughout the voip system atm
 | 
						|
      microphoneClip = Microphone.Start(null, true, bufferLenSeconds, inputFreq);
 | 
						|
      micBufferSizeSamples = bufferLenSeconds * inputFreq;
 | 
						|
 | 
						|
      micSampleBuffers = new Dictionary<int, float[]>();
 | 
						|
    }
 | 
						|
 | 
						|
    public void Start()
 | 
						|
    {
 | 
						|
 | 
						|
    }
 | 
						|
 | 
						|
    public void Stop()
 | 
						|
    {
 | 
						|
    }
 | 
						|
 | 
						|
    public float[] Update()
 | 
						|
    {
 | 
						|
      int pos = Microphone.GetPosition(null);
 | 
						|
      int copySize = 0;
 | 
						|
      if (pos < lastMicrophoneSample)
 | 
						|
      {
 | 
						|
        int endOfBufferSize = micBufferSizeSamples - lastMicrophoneSample;
 | 
						|
        copySize = endOfBufferSize + pos;
 | 
						|
      }
 | 
						|
      else
 | 
						|
      {
 | 
						|
        copySize = pos - lastMicrophoneSample;
 | 
						|
      }
 | 
						|
 | 
						|
      if (copySize == 0) {
 | 
						|
        return null;
 | 
						|
      }
 | 
						|
 | 
						|
      float[] samples;
 | 
						|
      if (!micSampleBuffers.TryGetValue(copySize, out samples))
 | 
						|
      {
 | 
						|
        samples = new float[copySize];
 | 
						|
        micSampleBuffers[copySize] = samples;
 | 
						|
      }
 | 
						|
 | 
						|
      microphoneClip.GetData(samples, lastMicrophoneSample);
 | 
						|
      lastMicrophoneSample = pos;
 | 
						|
      return samples;
 | 
						|
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
#endif
 |