forked from cgvr/DeltaVR
		
	
		
			
				
	
	
		
			85 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
//This file is deprecated.  Use the high level voip system instead:
 | 
						|
// https://developer.oculus.com/documentation/unity/ps-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
 |