FittsLaw/Assets/Oculus/Platform/Scripts/VoipInput.cs
2018-10-14 23:33:23 -04:00

85 lines
2.2 KiB
C#

//This file is deprecated. Use the high level voip system instead:
// https://developer.oculus.com/documentation/platform/latest/concepts/dg-cc-voip/
#if false
namespace Oculus.Platform
{
using UnityEngine;
using System.Runtime.InteropServices;
using System.Collections;
public class VoipInput : MonoBehaviour
{
public delegate void OnCompressedData(byte[] compressedData);
public OnCompressedData onCompressedData;
protected IMicrophone micInput;
Encoder encoder;
public bool enableMicRecording;
protected void Start()
{
encoder = new Encoder();
if (UnityEngine.Application.platform == RuntimePlatform.WindowsEditor || UnityEngine.Application.platform == RuntimePlatform.WindowsPlayer)
{
micInput = new MicrophoneInputNative();
}
else
{
micInput = new MicrophoneInput();
}
enableMicRecording = true;
}
void OnApplicationQuit()
{
micInput.Stop();
}
void Update()
{
if (micInput == null || encoder == null)
{
throw new System.Exception("VoipInput failed to init");
}
if (micInput != null && enableMicRecording)
{
float[] rawMicSamples = micInput.Update();
if (rawMicSamples != null && rawMicSamples.Length > 5 * 1024)
{
Debug.Log(string.Format("Giant input mic data {0}", rawMicSamples.Length));
return;
}
if (rawMicSamples != null && rawMicSamples.Length > 0)
{
int startIdx = 0;
int remaining = rawMicSamples.Length;
int splitSize = 480;
do
{
int toCopy = System.Math.Min(splitSize, remaining);
float[] splitInput = new float[toCopy];
System.Array.Copy(rawMicSamples, startIdx, splitInput, 0, toCopy);
startIdx += toCopy;
remaining -= toCopy;
byte[] compressedMic = null;
compressedMic = encoder.Encode(splitInput);
if (compressedMic != null && compressedMic.Length > 0)
{
onCompressedData(compressedMic);
}
} while (remaining > 0);
}
}
}
}
}
#endif