Newer
Older
CGTrack / Assets / Oculus / Platform / Scripts / Encoder.cs
//This file is deprecated.  Use the high level voip system instead:
// https://developer3.oculus.com/documentation/platform/latest/concepts/dg-core-content/#dg-cc-voip
#if false
using UnityEngine;
using System.Collections;
using System;


namespace Oculus.Platform {

public class Encoder : IDisposable {
    IntPtr enc;

    public Encoder() {
      enc = CAPI.ovr_Voip_CreateEncoder();
    }

    public void Dispose()
    {
      if (enc != IntPtr.Zero)
      {
        CAPI.ovr_Voip_DestroyEncoder(enc);
        enc = IntPtr.Zero;
      }
    }

    public byte[] Encode(float[] samples) {
      CAPI.ovr_VoipEncoder_AddPCM(enc, samples, (uint)samples.Length);

      ulong size = (ulong)CAPI.ovr_VoipEncoder_GetCompressedDataSize(enc);
      if(size > 0) {
        byte[] compressedData = new byte[size]; //TODO 10376403 - pool this
        ulong sizeRead = (ulong)CAPI.ovr_VoipEncoder_GetCompressedData(enc, compressedData, (UIntPtr)size);

        if (sizeRead != size)
        {
          throw new Exception("Read size differed from reported size");
        }
        return compressedData;
      }
      return null;
    }
  }
}
#endif