//This file is deprecated. Use the high level voip system instead:
|
|
// https://developer.oculus.com/documentation/platform/latest/concepts/dg-cc-voip/
|
|
|
|
#if OVR_PLATFORM_USE_MICROPHONE
|
|
using UnityEngine;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace Oculus.Platform
|
|
{
|
|
public class MicrophoneInputNative : IMicrophone
|
|
{
|
|
IntPtr mic;
|
|
|
|
int tempBufferSize = 960 * 10;
|
|
float[] tempBuffer;
|
|
|
|
private Dictionary<int, float[]> micSampleBuffers;
|
|
|
|
public MicrophoneInputNative()
|
|
{
|
|
mic = CAPI.ovr_Microphone_Create();
|
|
CAPI.ovr_Microphone_Start(mic);
|
|
tempBuffer = new float[tempBufferSize];
|
|
|
|
micSampleBuffers = new Dictionary<int, float[]>();
|
|
}
|
|
|
|
public float[] Update()
|
|
{
|
|
ulong readSize = (ulong)CAPI.ovr_Microphone_ReadData(mic, tempBuffer, (UIntPtr)tempBufferSize);
|
|
if (readSize > 0)
|
|
{
|
|
float[] samples;
|
|
if (!micSampleBuffers.TryGetValue((int)readSize, out samples))
|
|
{
|
|
samples = new float[readSize];
|
|
micSampleBuffers[(int)readSize] = samples;
|
|
}
|
|
Array.Copy(tempBuffer, samples, (int)readSize);
|
|
return samples;
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public void Start()
|
|
{
|
|
|
|
}
|
|
|
|
public void Stop()
|
|
{
|
|
CAPI.ovr_Microphone_Stop(mic);
|
|
CAPI.ovr_Microphone_Destroy(mic);
|
|
}
|
|
}
|
|
}
|
|
#endif
|