mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 17:27:32 +00:00
feat(waterfall): палитры Inferno/Turbo + gamma, разрешение до 4096, HiDPI
- SPECTRUM_PIXELS 1024→4096 + настройка display_pixels (лимит точек анализатора, SetDisplayResLimit); web-зеркало остаётся 1024 — max-децимация в SnapshotPixels - палитры водопада Classic/Inferno/Turbo + регулятор gamma (в LUT), настройки wf_palette/wf_gamma, страница Waterfall → группа Rendering - GL-водопад переведён на общий LUT/AGC-уровни базового класса (убраны дубли ColorForDB/UpdateLevels) - явные glViewport в GL-вьюхах умножаются на PixelScale (HiDPI), текстура водопада — в физической ширине Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
+17
-3
@@ -103,7 +103,7 @@ const
|
||||
RX_DISP_ID = 0; // analyzer для RX-спектра/водопада
|
||||
TX_DISP_ID = 1; // analyzer для TX-спектра/водопада
|
||||
DSP_BUFSIZE = 1024;
|
||||
SPECTRUM_PIXELS = 1024;
|
||||
SPECTRUM_PIXELS = 4096; // потолок точек дисплея; синхронно с WaterfallView.WF_MAX_PIXELS
|
||||
DISPLAY_BLOCK_SIZE = 64;
|
||||
|
||||
// Очередь IQ пакетов между сетевым и DSP потоком
|
||||
@@ -338,6 +338,7 @@ type
|
||||
FAGCHangLevel: Double; // читается из WDSP (GetRXAAGCHangLevel)
|
||||
FAGCThresh: Double; // читается из WDSP (GetRXAAGCThresh)
|
||||
FLastSpectrumW: Integer; // последняя известная ширина спектра (пикс)
|
||||
FDisplayResLimit: Integer; // потолок точек анализатора (настройка display_pixels)
|
||||
FShiftHz: Double; // NCO shift для CTUN
|
||||
FNRMode: Integer;
|
||||
FNBMode: Integer;
|
||||
@@ -442,6 +443,7 @@ type
|
||||
procedure SetAGCHangThreshold(Threshold: Integer);
|
||||
procedure UpdateAGCLines(SpectrumW: Integer); // читает hang/thresh из WDSP для линии на спектре
|
||||
procedure SetSpectrumWidth(W: Integer); // обновляет FLastSpectrumW для корректных AGC линий
|
||||
procedure SetDisplayResLimit(V: Integer); // потолок точек анализатора (1024/2048/4096)
|
||||
procedure SetShift(ShiftHz: Double); // CTUN NCO сдвиг
|
||||
procedure SetNRMode(Mode: Integer);
|
||||
procedure SetNR(Enable: Boolean);
|
||||
@@ -851,6 +853,7 @@ begin
|
||||
FDisplayFPS := 60;
|
||||
FEffectiveDisplayFPS := 60.0;
|
||||
FDisplayPixelCount := SPECTRUM_PIXELS;
|
||||
FDisplayResLimit := SPECTRUM_PIXELS;
|
||||
FSpecDetector := 0; // Peak
|
||||
FSpecAvgMode := 3; // Log Recursive
|
||||
FSpecAvgTimeMS := 30.0;
|
||||
@@ -1017,7 +1020,8 @@ begin
|
||||
MaxW := AnalyzerFFT + Round(Min(KEEP_TIME_SEC * FSampleRate,
|
||||
KEEP_TIME_SEC * AnalyzerFFT * EnsureRange(FDisplayFPS, 5, 100)));
|
||||
CalcAnalyzerTiming(AnalyzerFFT, Overlap, FEffectiveDisplayFPS);
|
||||
DisplayPixels := EnsureRange(FLastSpectrumW, 64, SPECTRUM_PIXELS);
|
||||
DisplayPixels := EnsureRange(FLastSpectrumW, 64,
|
||||
EnsureRange(FDisplayResLimit, 64, SPECTRUM_PIXELS));
|
||||
FDisplayPixelCount := DisplayPixels;
|
||||
|
||||
AverageTimeToParams(FSpecAvgMode, FSpecAvgTimeMS, AvgCount, Backmult);
|
||||
@@ -1071,7 +1075,8 @@ begin
|
||||
MaxW := AnalyzerFFT + Round(Min(KEEP_TIME_SEC * FTXSampleRate,
|
||||
KEEP_TIME_SEC * AnalyzerFFT * EnsureRange(FDisplayFPS, 5, 100)));
|
||||
CalcAnalyzerTiming(AnalyzerFFT, Overlap, EffectiveFPS);
|
||||
DisplayPixels := EnsureRange(FLastSpectrumW, 64, SPECTRUM_PIXELS);
|
||||
DisplayPixels := EnsureRange(FLastSpectrumW, 64,
|
||||
EnsureRange(FDisplayResLimit, 64, SPECTRUM_PIXELS));
|
||||
|
||||
AverageTimeToParams(FTXSpecAvgMode, FTXSpecAvgTimeMS, AvgCount, Backmult);
|
||||
AverageTimeToParams(FTXWfAvgMode, FTXWfAvgTimeMS, WfAvgCount, WfBackmult);
|
||||
@@ -1909,6 +1914,15 @@ begin
|
||||
ApplyAnalyzerSettings;
|
||||
end;
|
||||
|
||||
procedure TWDSPEngine.SetDisplayResLimit(V: Integer);
|
||||
begin
|
||||
V := EnsureRange(V, 64, SPECTRUM_PIXELS);
|
||||
if FDisplayResLimit = V then Exit;
|
||||
FDisplayResLimit := V;
|
||||
if FAnalyzerOpen then
|
||||
ApplyAnalyzerSettings;
|
||||
end;
|
||||
|
||||
procedure TWDSPEngine.UpdateAGCLines(SpectrumW: Integer);
|
||||
begin
|
||||
if not FInitialized then Exit;
|
||||
|
||||
Reference in New Issue
Block a user