diff --git a/src/app/routes/receiver.tsx b/src/app/routes/receiver.tsx index 47f50d7..a322ab2 100644 --- a/src/app/routes/receiver.tsx +++ b/src/app/routes/receiver.tsx @@ -1133,11 +1133,13 @@ function formatDecodePreset(value: DecodePresetId): string { function parseMaxSymbolsMode(value: string): MaxSymbolsMode { if (value === 'auto') return 'auto'; const parsed = Number(value); - return parsed === 1 || parsed === 2 || parsed === 4 ? parsed : DEFAULT_DECODE_SETTINGS.maxSymbols; + return parsed === 1 || parsed === 2 || parsed === 4 || parsed === 6 || parsed === 8 + ? parsed + : DEFAULT_DECODE_SETTINGS.maxSymbols; } function formatMaxSymbols(value: MaxSymbolsMode): string { - return value === 'auto' ? 'Auto' : String(value); + return value === 'auto' ? 'Auto (4)' : String(value); } function normalizeBinarizer(value: string): QrBinarizer { diff --git a/src/app/routes/sender.tsx b/src/app/routes/sender.tsx index f9c41d3..9e2bf7d 100644 --- a/src/app/routes/sender.tsx +++ b/src/app/routes/sender.tsx @@ -85,8 +85,8 @@ type CSSProps = Record; const MIN_FRAME_RATE_FPS = 2; const MAX_FRAME_RATE_FPS = 60; const DEFAULT_FRAME_RATE_FPS = 30; -const DEFAULT_PARALLEL_QR_COUNT: ParallelQRCount = 1; -const PARALLEL_QR_COUNTS: ParallelQRCount[] = [1, 2, 4]; +const DEFAULT_PARALLEL_QR_COUNT: ParallelQRCount = 4; +const PARALLEL_QR_COUNTS: ParallelQRCount[] = [1, 2, 4, 6, 8]; const FEC_CODEC_OPTIONS: FecCodec[] = ['wasm-raptorq', 'js-rlnc']; const LIVE_TARGET_PX = 360; const QR_QUIET_ZONE_MODULES = 4; @@ -258,6 +258,7 @@ export function SenderPage() { const [qrEncoder, setQrEncoder] = useState(DEFAULT_QR_ENCODER); const [fecCodec, setFecCodec] = useState(DEFAULT_FEC_CODEC); const [raptorqRepairPercent, setRaptorqRepairPercent] = useState(DEFAULT_RAPTORQ_REPAIR_PERCENT); + const [advancedGenerateOpen, setAdvancedGenerateOpen] = useState(false); const [frameRateFps, setFrameRateFps] = useState(DEFAULT_FRAME_RATE_FPS); const [actualLiveFps, setActualLiveFps] = useState(0); const [renderReadyPackets, setRenderReadyPackets] = useState(0); @@ -1023,63 +1024,76 @@ export function SenderPage() {
-
- QR encoder - {formatQREncoder(qrEncoder)} -
- -
-
-
- FEC codec - {formatFecCodec(fecCodec)} -
- -
- {fecCodec === 'wasm-raptorq' && ( -
-
- RaptorQ repair - {raptorqRepairPercent}% + {advancedGenerateOpen ? 'Hide advanced settings' : 'Advanced settings'} + + {advancedGenerateOpen && ( +
+ + + {fecCodec === 'wasm-raptorq' && ( + + )}
- handleRaptorQRepairPercentChange((e.target as HTMLInputElement).value)} - /> -
- Less QR - More repair -
-
- )} + )} +
QR speed @@ -1116,6 +1130,12 @@ export function SenderPage() { ))} + {parallelQRCount > 4 && ( +
+ Receiver Auto (4) scans up to 4 QR codes per frame. For {parallelQRCount} parallel QR, + set Receiver advanced settings - Max symbols to {parallelQRCount}. +
+ )}