Browse Source

Document call bitrate range settings and validation

master
evgeny 5 days ago
parent
commit
a6b8594219
  1. 26
      doc/call_video.txt
  2. 4
      doc/tasks.md

26
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 остаётся отдельным этапом.

4
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:

Loading…
Cancel
Save