Files
meeting-assistant/MeetingAssistant/Recording/PortableMeetingAudioRegistration.cs
T

31 lines
1.2 KiB
C#

using Microsoft.Extensions.DependencyInjection;
namespace MeetingAssistant.Recording;
internal static class PortableMeetingAudioRegistration
{
public static void Add(IServiceCollection services)
{
Add(services, OperatingSystem.IsMacOS());
}
internal static void Add(IServiceCollection services, bool isMacOs)
{
if (!isMacOs)
{
services.AddSingleton<IMeetingAudioSource, UnavailableMeetingAudioSource>();
return;
}
services.AddSingleton<IMacOsAudioCaptureProcessFactory, MacOsAudioCaptureProcessFactory>();
services.AddSingleton<MacOsMicrophoneAudioSource>();
services.AddSingleton<MacOsSystemAudioSource>();
services.AddSingleton<IAcousticEchoCancellerFactory, AdaptiveFilterAcousticEchoCancellerFactory>();
services.AddSingleton<IMeetingAudioSource>(serviceProvider => new CompositeMeetingAudioSource(
serviceProvider.GetRequiredService<MacOsMicrophoneAudioSource>(),
serviceProvider.GetRequiredService<MacOsSystemAudioSource>(),
serviceProvider.GetRequiredService<IAcousticEchoCancellerFactory>(),
serviceProvider.GetRequiredService<ILogger<CompositeMeetingAudioSource>>()));
}
}