private OpusEncoder(IntPtr encoder, int inputSamplingRate, int inputChannels, OpusAPI.Application application) { _encoder = encoder; InputSamplingRate = inputSamplingRate; InputChannels = inputChannels; Application = application; MaxDataBytes = 4000; }
/// <summary> /// Creates a new Opus encoder. /// </summary> /// <param name="inputSamplingRate">Sampling rate of the input signal (Hz). This must be one of 8000, 12000, 16000, 24000, or 48000.</param> /// <param name="inputChannels">Number of channels (1 or 2) in input signal.</param> /// <param name="application">Coding mode.</param> /// <returns>A new <c>OpusEncoder</c></returns> public static OpusEncoder Create(int inputSamplingRate, int inputChannels, OpusAPI.Application application) { if (inputSamplingRate != 8000 && inputSamplingRate != 12000 && inputSamplingRate != 16000 && inputSamplingRate != 24000 && inputSamplingRate != 48000) throw new ArgumentOutOfRangeException("inputSamplingRate"); if (inputChannels != 1 && inputChannels != 2) throw new ArgumentOutOfRangeException("inputChannels"); IntPtr error; IntPtr encoder = OpusAPI.opus_encoder_create(inputSamplingRate, inputChannels, (int)application, out error); if ((OpusAPI.Errors)error != OpusAPI.Errors.OK) { throw new Exception("Exception occured while creating encoder"); } return new OpusEncoder(encoder, inputSamplingRate, inputChannels, application); }