64 lines
1.6 KiB
C#
Raw Normal View History

2025-06-07 17:43:34 +08:00
/* Copyright (C) 2014 DaikonForge */
namespace DaikonForge.VoIP
{
using UnityEngine;
/// <summary>
/// Event handler for when new audio data becomes available
/// </summary>
public delegate void AudioBufferReadyHandler( BigArray<float> newData, int frequency );
public delegate void AudioIntHandler(int length);
public delegate void AudioStateHandler();
/// <summary>
/// Base class for audio input devices
/// </summary>
public abstract class AudioInputDeviceBase : MonoBehaviour
{
/// <summary>
/// Called when new audio data becomes available
/// </summary>
public event AudioBufferReadyHandler OnAudioBufferReady;
public event AudioIntHandler OnRecordingEnd;
public event AudioStateHandler OnRecordingStart;
public event AudioStateHandler OnNoRecordingPerimission;
/// <summary>
/// Start recording audio data
/// </summary>
public abstract void StartRecording();
/// <summary>
/// Stop recording audio data
/// </summary>
public abstract void StopRecording();
protected void bufferReady( BigArray<float> newData, int frequency )
{
if( OnAudioBufferReady != null )
OnAudioBufferReady( newData, frequency );
}
protected void RecordingFinish(int length)
{
if (OnRecordingEnd != null)
OnRecordingEnd(length);
}
protected void RecordingStart()
{
OnRecordingStart?.Invoke();
}
protected void NoRecordingPerimissions()
{
if (OnNoRecordingPerimission != null)
OnNoRecordingPerimission();
}
}
}