Fix stereo capture paths

This commit is contained in:
2026-09-21 02:11:33 +02:00
parent 08e6c5930a
commit 9be33f357d
6 changed files with 100 additions and 27 deletions
@@ -14,8 +14,9 @@ public sealed partial class VoiceCatClient
StreamInfo? stream = null;
try
{
stream = core.StartStreamAsync((StreamKind)kind, label).GetAwaiter().GetResult();
local[stream.StreamId] = new(stream, external);
int captureChannels = kind == VcStreamKind.Mic ? 1 : 2;
stream = core.StartStreamAsync((StreamKind)kind, label, captureChannels).GetAwaiter().GetResult();
local[stream.StreamId] = new(stream, external, captureChannels);
if (!external && backend is not null) captures[stream.StreamId] = Capture(stream);
return (VcResult.Ok, stream.StreamId);
}
@@ -20,12 +20,12 @@ public sealed partial class VoiceCatClient : IDisposable
private readonly Dictionary<uint, string?> devices = [];
private readonly Dictionary<uint, StreamSummary[]> remoteStreams = [];
private readonly Dictionary<uint, bool> talkState = [];
private sealed class LocalStream(StreamInfo info, bool external)
private sealed class LocalStream(StreamInfo info, bool external, int captureChannels)
{
internal readonly uint Alias = info.StreamId;
internal StreamInfo Info = info;
internal readonly bool External = external;
internal int CaptureChannels = 1;
internal int CaptureChannels = captureChannels;
internal int Restarting;
}
private readonly ConcurrentDictionary<uint, LocalStream> local = new();