This repository has been archived on 2024-11-03. You can view files and clone it, but cannot push or open issues or pull requests.
snakeinabox/Assets/Oculus/Platform/Scripts/MicrophoneInput.cs
2020-07-09 11:41:01 -07:00

73 lines
1.8 KiB
C#

//This file is deprecated. Use the high level voip system instead:
// https://developer.oculus.com/documentation/platform/latest/concepts/dg-cc-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