Lab050: model fresh-frame SDR video stream

This commit is contained in:
LittleSam129
2026-09-08 14:15:36 +03:00
parent cdf5396e80
commit 60691a09f1
9 changed files with 1769 additions and 12 deletions

View File

@@ -639,10 +639,13 @@ def decode_candidate_from_memmap(
sample_count: int,
candidate: CoarseCandidate,
detection_number: int,
*,
read_iq_window: Callable | None = None,
) -> CandidateOutcome:
"""Строго проверить один candidate локальными IQ-окнами."""
started = time.perf_counter()
window_reader = lab046c._cs8_window if read_iq_window is None else read_iq_window
reference = lab046c.lab044._preamble_reference_samples()
probe_symbols = lab046c.lab045.PREAMBLE_BIT_COUNT + lab046c.lab045.PHY_HEADER_BIT_COUNT
probe_waveform = (
@@ -655,7 +658,7 @@ def decode_candidate_from_memmap(
sample_count,
candidate.sample_offset + probe_waveform + REFINEMENT_MARGIN_SAMPLES,
)
probe_iq = lab046c._cs8_window(raw, probe_start, probe_end)
probe_iq = window_reader(raw, probe_start, probe_end)
maximum_window = int(probe_iq.size)
local_coarse = candidate.sample_offset - probe_start
try:
@@ -740,7 +743,7 @@ def decode_candidate_from_memmap(
maximum_window=maximum_window,
started=started,
)
full_iq = lab046c._cs8_window(raw, refined_global, full_end)
full_iq = window_reader(raw, refined_global, full_end)
maximum_window = max(maximum_window, int(full_iq.size))
full = lab046b._extract_soft_window(full_iq, 0, frame_symbols)
if not full.passed: