82 lines
2.0 KiB
C#
82 lines
2.0 KiB
C#
using UnityEngine;
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Copyright 2012-2021 RenderHeads Ltd. All rights reserved.
|
|
//-----------------------------------------------------------------------------
|
|
|
|
namespace RenderHeads.Media.AVProMovieCapture
|
|
{
|
|
/// <summary>
|
|
/// Base class for capturing audio from Unity
|
|
/// Two classes derive from this:
|
|
/// 1) CaptureAudioFromAudioListener - used for real-time capture
|
|
/// 2) CaptureAudioFromAudioRenderer - used for offline rendering
|
|
/// </summary>
|
|
public abstract class UnityAudioCapture : MonoBehaviour
|
|
{
|
|
public virtual int OverflowCount
|
|
{
|
|
get { return 0; }
|
|
}
|
|
|
|
public abstract int ChannelCount
|
|
{
|
|
get;
|
|
}
|
|
|
|
public abstract void PrepareCapture();
|
|
public abstract void StartCapture();
|
|
public abstract void StopCapture();
|
|
public abstract void FlushBuffer();
|
|
|
|
public virtual System.IntPtr ReadData(out int length) { length = 0; return System.IntPtr.Zero; }
|
|
|
|
public static int GetUnityAudioChannelCount()
|
|
{
|
|
int result = GetChannelCount(AudioSettings.driverCapabilities);
|
|
if (
|
|
#if !UNITY_2019_2_OR_NEWER
|
|
AudioSettings.speakerMode != AudioSpeakerMode.Raw &&
|
|
#endif
|
|
AudioSettings.speakerMode < AudioSettings.driverCapabilities)
|
|
{
|
|
result = GetChannelCount(AudioSettings.speakerMode);
|
|
}
|
|
return result;
|
|
}
|
|
|
|
private static int GetChannelCount(AudioSpeakerMode mode)
|
|
{
|
|
int result = 0;
|
|
switch (mode)
|
|
{
|
|
#if !UNITY_2019_2_OR_NEWER
|
|
case AudioSpeakerMode.Raw:
|
|
break;
|
|
#endif
|
|
case AudioSpeakerMode.Mono:
|
|
result = 1;
|
|
break;
|
|
case AudioSpeakerMode.Stereo:
|
|
result = 2;
|
|
break;
|
|
case AudioSpeakerMode.Quad:
|
|
result = 4;
|
|
break;
|
|
case AudioSpeakerMode.Surround:
|
|
result = 5;
|
|
break;
|
|
case AudioSpeakerMode.Mode5point1:
|
|
result = 6;
|
|
break;
|
|
case AudioSpeakerMode.Mode7point1:
|
|
result = 8;
|
|
break;
|
|
case AudioSpeakerMode.Prologic:
|
|
result = 2;
|
|
break;
|
|
}
|
|
return result;
|
|
}
|
|
}
|
|
} |