forked from Manuel/meeting-assistant
31 lines
1.2 KiB
C#
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>>()));
|
|
}
|
|
}
|