From 84246bea892ed8e06fda967f7978e1e4d348d416 Mon Sep 17 00:00:00 2001 From: evgeny Date: Wed, 14 Oct 2026 00:13:08 +0200 Subject: [PATCH] Record adaptive playback validation and ring reader lifecycle --- doc/service_lifecycle.md | 9 +++++++++ doc/tasks.md | 20 ++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/doc/service_lifecycle.md b/doc/service_lifecycle.md index 619a3d8f..b1139da3 100644 --- a/doc/service_lifecycle.md +++ b/doc/service_lifecycle.md @@ -95,6 +95,15 @@ Worker резервирует completion до запуска и передаёт транскодирование или распознавание речи может задержать stop; принудительного прерывания этих библиотек нет. +Live media хранится в RS-кольце с общим индексом PTS; каждый локальный handle владеет +отдельным cursor. Пауза player не останавливает сетевой ingest и не закрепляет старые +части против вытеснения. После FIN publisher может снять своё владение, сохранив +завершённый источник для оставшихся локальных readers. Последний close освобождает +источник, индекс и кольцо. Новая публикация отсоединяет readers прежней эпохи. +При stop/destroy отменяются delivery и media-index callbacks до освобождения store; +destroy отсоединённого cursor не обращается к store. Frontend прекращает audio callback +и worker до освобождения своего DSP; borrowed handle/RS pointers между потоками не передаются. + Статус транспорта UP подтверждает восстановление физического пути. READY сессии группы означает согласованный JOIN/ACCEPT и завершённый обмен её таблицей; именно его ждёт recovery. REINIT меняет эпохи обмена, сохраняя рабочие маршруты. Эпохи diff --git a/doc/tasks.md b/doc/tasks.md index 517f5755..a8947637 100644 --- a/doc/tasks.md +++ b/doc/tasks.md @@ -4,6 +4,26 @@ ## Текущие задачи +[+] **Live: воспроизведение из RS-кольца и минутная адаптация задержки** — 14.10.2026: + Android и desktop используют общее кольцо кодированных данных, метаданные PTS/KEY и отдельные + cursor каждого reader. Пауза player не останавливает live ingest/selector; длинные кадры собираются + ограниченными проходами с отложенным продолжением без ожидания новых пакетов. + Убрана фиксированная стартовая буферизация 150ms; вне кольца остаются ближайшие кадры и рабочая порция PCM. + Общий контроллер хранит 60 секундных минимумов запаса. История корректируется по фактическому + простою/услышанному материалу, включая аппаратную очередь и расход ранее поставленного ускоренного PCM. + После полной здоровой минуты плавный темп до x1.1 уменьшает задержку до безопасного остатка; + SoundTouch сохраняет высоту звука и стереобаланс. Обычная нехватка сохраняет decoder references; + GAP, вытеснение и разрыв медиапоследовательности начинают новый KEY и новую историю. + FIN дочитывается каждым reader; close завершённого publisher сохраняет кольцо для локальных owners. + Проверены шестисекундная пауза сетевого reader без restart, точные remote/local FIN drain, + независимые cursors, поздняя повреждённая RS-часть, большой кадр, разрывы, конфигурация и границы PTS. + Реальные H.264/Opus: 30fps при audio latency 200ms, preroll, revision/rotation, stereo x1.1 без изменения тона, + физические аудиочасы, громкость и баланс памяти. Диагностика показывает запас/минимум, коррекцию, темп и wait/resume. + 150 тестов ядра прошли без ошибок/пропусков; полный check.sh с proxy/burst/load — 129s. + Три Qt stream/audio timing теста прошли; vibechat и APK arm64-v8a/x86_64 собраны. + Устройства/colo2 в этой задаче не обновлялись. Архитектура: `doc/stream.txt`, lifecycle: `doc/service_lifecycle.md`. + Логи: `/tmp/stream-playback-{clock-test,full-check}.log`, `/tmp/stream-final-{gui-tests,desktop-build,android-build}.log`. + [+] **Live: переменный размер RS и одна подпись внутри пачки** — 13.10.2026: RS принимает фактическую длину, уменьшает все части одной пачки до одинакового минимального размера и дополняет максимум k-1 нулями; один контекст/матрица используются повторно, без аллокаций RS на encode/decode.