Skip to main content
Version: 2.x

Class OdinEncoder

Freestanding encoder component that captures audio from an OdinNative.Unity.OdinEncoder.AudioProvider and sends it to an OdinNative.Unity.OdinRoom.

Place this anywhere in the scene. Assign OdinNative.Unity.OdinEncoder.Room and optionally an OdinNative.Unity.OdinEncoder.AudioProvider (OdinNative.Unity.Audio.OdinMicrophoneReader or OdinNative.Unity.Audio.OdinAudioReader). Audio can also be pushed manually via OdinNative.Unity.OdinEncoder.PushAudio(System.Single[],System.Int32,System.Boolean) wired through an Inspector UnityEvent or called directly.

Default behaviour:

Declaration
[HelpURL("https://docs.4players.io/voice/unity/next/api/OdinNative.Unity/OdinEncoder/")]
[AddComponentMenu("Odin/Instance/OdinEncoder")]
public class OdinEncoder : MonoBehaviour, IMedia

Inheritance: System.Object -> UnityEngine.Object -> UnityEngine.Component -> UnityEngine.Behaviour -> UnityEngine.MonoBehaviour

Implements:
OdinNative.Wrapper.Media.IMedia

Properties

Id

Odin media id

Declaration
public ulong Id { get; }

Encoder

The owned OdinNative.Wrapper.MediaEncoder

Declaration
public MediaEncoder Encoder { get; }

ChannelMask

Declaration
public Utility.ChannelMask ChannelMask { get; }

Position

Declaration
public NativeBindings.OdinPosition Position { get; }

Parent

The local peer this encoder sends audio as. Set when the encoder is linked to a room.

Declaration
public IPeer Parent { get; }

Fields

Room

The OdinNative.Unity.OdinRoom this encoder sends audio to

Declaration
public OdinRoom Room

AudioProvider

Optional audio source: OdinNative.Unity.Audio.OdinMicrophoneReader or OdinNative.Unity.Audio.OdinAudioReader. When set, OdinNative.Unity.OdinEncoder.PushAudio(System.Single[],System.Int32,System.Boolean) is subscribed to its OnAudioData event automatically in OdinNative.Unity.OdinEncoder.OnEnable .

Declaration
public MonoBehaviour AudioProvider

Samplerate

Encoder samplerate. Auto-set from OdinNative.Unity.OdinEncoder.AudioProvider samplerate if it is an OdinNative.Unity.Audio.OdinMicrophoneReader.

Declaration
public uint Samplerate

Stereo

Encoder stereo flag

Declaration
public bool Stereo

AutoDestroyMediaStream

Flag to dispose of OdinNative.Unity.OdinEncoder.Encoder on destroy

Declaration
public bool AutoDestroyMediaStream

Methods

GetPipeline()

Get native effect pipeline

Declaration
public MediaPipeline GetPipeline()
Returns

OdinNative.Wrapper.MediaPipeline: managed effect pipeline

CreateEncoder()

Create and start the OdinNative.Wrapper.MediaEncoder in the linked room. Called automatically when the room joins; safe to call manually after join.

Declaration
public void CreateEncoder()

PushAudio(float[], int, bool)

Push audio samples into the encoder pipeline and send to the server. Wire this to an OdinNative.Unity.OdinEncoder.AudioProvider's OnAudioData event or call it directly.

Declaration
public virtual void PushAudio(float[] buffer, int position, bool isSilent)
Parameters
TypeNameDescription
System.Single[]bufferaudio samples
System.Int32positionread position in the source buffer
System.BooleanisSilentsilence flag

AddEffect<T>()

Declaration
public T AddEffect<T>() where T : MonoBehaviour, IOdinEffect
Returns

<T>

Type Parameters
  • T

GetMedia<T>()

Declaration
public T GetMedia<T>() where T : IMedia
Returns

<T>

Type Parameters
  • T

GetEffect()

Declaration
public PipelineEffect GetEffect()
Returns

OdinNative.Wrapper.Media.PipelineEffect

Implements