From a6b859421952f7ea9fe867516d8ce59bba704159 Mon Sep 17 00:00:00 2001 From: evgeny Date: Wed, 14 Oct 2026 21:19:11 +0200 Subject: [PATCH] Document call bitrate range settings and validation --- doc/call_video.txt | 26 +++++++++++++++++++++++++- doc/tasks.md | 4 ++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/doc/call_video.txt b/doc/call_video.txt index 66184ef8..8a5a39ba 100644 --- a/doc/call_video.txt +++ b/doc/call_video.txt @@ -3,7 +3,8 @@ Контракт Каждая сторона независимо включает видео. Автовыбор H.265 Main 8-bit, затем H.264 Constrained Baseline: пересечение encoder отправителя и decoder получателя. -Камера, разрешение, кодек и верхняя граница битрейта меняются во время звонка. +Камера, разрешение, кодек и диапазон битрейта меняются во время звонка. +Автоматический диапазон по умолчанию 300–4000 кбит/с (десятичные единицы). Время Общая монотонная шкала захвата аудио и видео на каждом отправителе. PTS первого @@ -198,3 +199,26 @@ rate-control, но эта ветка не меняет ret=0. Успешный r понижением/повышением битрейта и отказом настройки. Непригодный H.265 backend не объявляется доступным; в auto используется H.264. Подключение платформенных codecs остановлено на этой границе согласно AGENTS.md. + +Настройка диапазона, 14.10.2026 +ChatGUI: Настройки -> аудио, поля минимального/максимального битрейта видеозвонка. +Android: Настройки -> аудио, ползунок диапазона. По умолчанию 300–4000 кбит/с; +пользователь может сузить диапазон внутри этих границ, включая фиксированный bitrate. +Одна атомарная настройка call_video_bitrate_range_kbps=300:4000 хранится в конфиге +desktop / DataStore Android и передаётся в общий chat_setting. min > max отвергается +без частичного изменения. Android включает настройку в конфиг при каждом запуске. +Во время звонка transport читает диапазон каждые 50мс, не сбрасывая pending-команду. +Верхняя граница ограничена проверенным codec cap текущего generation. Если новый +минимум выше codec cap, admission приостановлен до совместимой настройки/режима; +это событие логируется. Смена диапазона сама по себе не расширяет возможности codec. +При сети слабее 300 кбит/с target не уходит ниже нижней границы; bounded admission +не позволяет очереди бесконечно расти. Аудиоканал продолжает работать отдельно. +Порог 5% при снижении не мешает достигнуть точной нижней границы диапазона. + +Проверено: модель полосы 150 кбит/с -> 6 Мбит/с достигает target 300 кбит/с, +затем 4 Мбит/с, очередь остаётся ограниченной. Сетевой test_call меняет диапазон +при pending-команде, принимает прежний ACK и затем получает target нового диапазона; +также проверяет отказ несовместимого codec cap. Логи /tmp/call-range-rate-test.log +и /tmp/call-range-integration-test.log. ChatGUI собран; Android assembleDebug и +81 unit-тест прошли, /tmp/call-range-android-ui-final.log. +Настройки и регулятор готовы; подключение камеры/codec/render остаётся отдельным этапом. diff --git a/doc/tasks.md b/doc/tasks.md index 084e2b92..c7e8a617 100644 --- a/doc/tasks.md +++ b/doc/tasks.md @@ -16,6 +16,10 @@ Выявлена нестыковка capabilities: нужны profile/level/tier и предел bitrate/VBV. x265 может отменить reconfigure при смене level и вернуть 0; ACK требует проверки применения. По правилу AGENTS.md подключение codecs остановлено; решение и оставшиеся этапы описаны в плане. + Добавлен атомарный диапазон битрейта в настройках аудио ChatGUI/Android: по умолчанию 300–4000 кбит/с. + Применяется во время звонка, учитывает codec cap и незавершённую команду. Модель плохой/хорошей связи + достигает обеих границ без неограниченного роста очереди; сетевой тест смены диапазона проходит. + ChatGUI собран, Android assembleDebug + 81 unit-тест прошли. Камера/codec/render ещё не подключены. Контракты, этапы и проверки: `doc/call_video.txt`. [+] **Android live: увеличение и перемещение видео как в просмотрщике файлов** — 14.10.2026: