Add audio buffer setting and optimize overlays

This commit is contained in:
2026-05-22 18:07:05 +03:00
parent 26aa55ddde
commit c5f225332b
6 changed files with 327 additions and 38 deletions
+48 -1
View File
@@ -46,6 +46,7 @@ type
TOnGridParamChange = procedure(RefLevel, Range, GridStep: Double) of object;
TOnAudioDevChange = procedure(DevIndex: Integer; const DevName: string) of object;
TOnAudioInDevChange = procedure(DevIndex: Integer; const DevName: string) of object;
TOnAudioBufferChange = procedure(BufferSize: Integer) of object;
TOnVisibilityChange = procedure(ShowSpectrum, ShowWaterfall: Boolean) of object;
TOnFPSChange = procedure(FPS: Integer) of object;
TOnThemeChange = procedure(LightTheme: Boolean) of object;
@@ -94,6 +95,7 @@ type
FCmbTXDev: TComboBox;
FTXDevIndices: array[0..63] of Integer;
FTXDevCount: Integer;
FCmbAudioBuffer: TComboBox;
// ---- RX1 sub-tab controls ----
FCmbFFTSize: TComboBox;
@@ -263,6 +265,7 @@ type
FOnGridChange: TOnGridParamChange;
FOnAudioDevChange: TOnAudioDevChange;
FOnAudioInDevChange: TOnAudioInDevChange;
FOnAudioBufferChange: TOnAudioBufferChange;
FOnVisibilityChange: TOnVisibilityChange;
FOnFPSChange: TOnFPSChange;
FOnThemeChange: TOnThemeChange;
@@ -325,6 +328,7 @@ type
procedure OnGridStepChange(Sender: TObject);
procedure OnRXDevChange(Sender: TObject);
procedure OnTXDevChange(Sender: TObject);
procedure OnAudioBufferCmbChange(Sender: TObject);
procedure OnVisibilityChkChange(Sender: TObject);
procedure OnFPSCmbChange(Sender: TObject);
procedure OnLightThemeChkChange(Sender: TObject);
@@ -364,6 +368,7 @@ type
const AudioInDevName: string);
procedure RefreshAudioDevices(AudioOut: TAudioOutput; AudioIn: TAudioInput);
procedure LoadAudioBufferSize(BufferSize: Integer);
procedure LoadVisibility(ShowSpectrum, ShowWaterfall: Boolean);
procedure LoadFPS(FPS: Integer);
procedure LoadLightTheme(ALight: Boolean);
@@ -393,6 +398,7 @@ type
property OnGridChange: TOnGridParamChange read FOnGridChange write FOnGridChange;
property OnAudioDevChange: TOnAudioDevChange read FOnAudioDevChange write FOnAudioDevChange;
property OnAudioInDevChange: TOnAudioInDevChange read FOnAudioInDevChange write FOnAudioInDevChange;
property OnAudioBufferChange: TOnAudioBufferChange read FOnAudioBufferChange write FOnAudioBufferChange;
property OnVisibilityChange: TOnVisibilityChange read FOnVisibilityChange write FOnVisibilityChange;
property OnFPSChange: TOnFPSChange read FOnFPSChange write FOnFPSChange;
property OnThemeChange: TOnThemeChange read FOnThemeChange write FOnThemeChange;
@@ -737,7 +743,7 @@ begin
Font.Color := CLR_TEXTDIM;
end;
Grp := MakeGroupPanel(FPageAudio, 'Audio Devices', MARGIN, 86, 650, 142);
Grp := MakeGroupPanel(FPageAudio, 'Audio Devices', MARGIN, 86, 650, 184);
MakeLbl(Grp, 'TX input device', PAD, R1 + 5, LW);
FCmbTXDev := MakeCombo(Grp, CX, R1, CMB_W, OnTXDevChange);
@@ -746,6 +752,13 @@ begin
MakeLbl(Grp, 'RX output device', PAD, R1 + STEP + 5, LW);
FCmbRXDev := MakeCombo(Grp, CX, R1 + STEP, CMB_W, OnRXDevChange);
FCmbRXDev.Items.Add('Default');
MakeLbl(Grp, 'Output buffer', PAD, R1 + STEP * 2 + 5, LW);
FCmbAudioBuffer := MakeCombo(Grp, CX, R1 + STEP * 2, 160, OnAudioBufferCmbChange);
FCmbAudioBuffer.Items.Add('128 frames');
FCmbAudioBuffer.Items.Add('256 frames');
FCmbAudioBuffer.Items.Add('512 frames');
FCmbAudioBuffer.ItemIndex := 0;
end;
// ---------------------------------------------------------------------------
@@ -1972,6 +1985,25 @@ begin
end;
end;
// ---------------------------------------------------------------------------
// LoadAudioBufferSize
// ---------------------------------------------------------------------------
procedure TSettingsForm.LoadAudioBufferSize(BufferSize: Integer);
begin
FLoading := True;
try
case BufferSize of
256: FCmbAudioBuffer.ItemIndex := 1;
512: FCmbAudioBuffer.ItemIndex := 2;
else
FCmbAudioBuffer.ItemIndex := 0;
end;
finally
FLoading := False;
end;
end;
// ---------------------------------------------------------------------------
// RefreshAudioDevices
// ---------------------------------------------------------------------------
@@ -2243,6 +2275,21 @@ begin
end;
end;
procedure TSettingsForm.OnAudioBufferCmbChange(Sender: TObject);
var
BufferSize: Integer;
begin
if FLoading then Exit;
if not Assigned(FOnAudioBufferChange) then Exit;
case FCmbAudioBuffer.ItemIndex of
1: BufferSize := 256;
2: BufferSize := 512;
else
BufferSize := 128;
end;
FOnAudioBufferChange(BufferSize);
end;
procedure TSettingsForm.LoadVisibility(ShowSpectrum, ShowWaterfall: Boolean);
begin
FLoading := True;