mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 19:45:09 +00:00
Паритет с уже существующим выбором вывода: на каждом слайсе своё устройство входа (микрофон/виртуальный кабель). - RadioController: TCtrlSlice += InDeviceIndex/InDevName/AudioIn (ссылка, не владение); mic-пул FMicPool с refcount (Acquire/ReleaseMicInput) — один открытый TAudioInput на уникальное PA-устройство, смена TX-слайса не переоткрывает поток; ActiveMicInput/ActiveMicInDevName для PullSoundCardMic, Flush и DefaultMicSource; SetMainMicDevice перепривязывает ссылки слайсов. - VfoOverlay: во fly-out AUD ряд вкладок OUT | IN, событие OnAudioInDevice. - PanafallPanel: проброс списка входных устройств во флаги слайсов и главный. - Settings: персист in_dev_name. НЕ ГОТОВО: зависание GUI при выборе на слайсе того же входа, что в настройках (пул открывает поток вместо шортката на общий FAudioIn). В коде оставлена временная диагностика [MIC] в stderr. Также подозрение на замедление потока данных от радио — проверяем сравнением с main. Со мной в коммите временные тестовые программы PortAudio (other/pa*.lpr). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
26 lines
813 B
ObjectPascal
26 lines
813 B
ObjectPascal
program padump;
|
|
{$MODE Delphi}
|
|
uses SysUtils, Classes, AudioInput, AudioOutput;
|
|
var
|
|
AI: TAudioInput;
|
|
AO: TAudioOutput;
|
|
Names: TStringList;
|
|
Idx: array[0..63] of Integer;
|
|
Cnt, i: Integer;
|
|
begin
|
|
AI := TAudioInput.Create(48000);
|
|
AO := TAudioOutput.Create(48000);
|
|
Names := TStringList.Create;
|
|
Cnt := 0;
|
|
AI.EnumInputDevices(Names, Idx, Cnt);
|
|
WriteLn('--- INPUT devices (', Cnt, ') ---');
|
|
for i := 0 to Cnt - 1 do WriteLn(Format('%3d %s', [Idx[i], Names[i]]));
|
|
WriteLn('FindDeviceByName(Direwolf_TX_Output) = ',
|
|
AI.FindDeviceByName('Direwolf_TX_Output'));
|
|
Names.Clear; Cnt := 0;
|
|
AO.EnumOutputDevices(Names, Idx, Cnt);
|
|
WriteLn('--- OUTPUT devices (', Cnt, ') ---');
|
|
for i := 0 to Cnt - 1 do WriteLn(Format('%3d %s', [Idx[i], Names[i]]));
|
|
Names.Free; AI.Free; AO.Free;
|
|
end.
|