2 changed files with 58 additions and 0 deletions
@ -0,0 +1,53 @@
|
||||
Видеозвонки Android и ChatGUI |
||||
|
||||
Контракт |
||||
Каждая сторона независимо включает видео. Автовыбор H.265 Main 8-bit, затем |
||||
H.264 Constrained Baseline: пересечение encoder отправителя и decoder получателя. |
||||
Камера, разрешение, кодек и верхняя граница битрейта меняются во время звонка. |
||||
|
||||
Время |
||||
Общая монотонная шкала захвата аудио и видео на каждом отправителе. PTS первого |
||||
аудиосэмпла/кадра сохраняется до вывода; время сетевой отправки учитывается отдельно. |
||||
Приёмное видео следует исходной позиции реально воспроизводимого аудио, включая |
||||
SoundTouch и очередь устройства. Алгоритм регулирования аудиобуфера сохраняется. |
||||
Искусственная тишина/тоны не продвигают исходную позицию. Формат видео меняется по PTS; |
||||
новое поколение не уничтожает старые кадры, соответствующие ещё не прозвучавшей речи. |
||||
|
||||
Передача и регулирование |
||||
Один A/V-планировщик, независимые логические каналы управления/аудио/видео. |
||||
Звук продолжает работу при отказе камеры. Ограничены ожидание encode, очереди, |
||||
размер сборки кадра и память получателя; ACK не равен успешному decode/render. |
||||
Роутер считает исходный payload и пакеты, видеомодуль вычитает фиксированный |
||||
заголовок фрагмента. Физические очереди повторно не суммируются с router inflight. |
||||
Окно ACK: 10 завершённых интервалов по 50мс, текущая ячейка отдельно. |
||||
Регулятор общий C, решения проверяются управляемым временем. Снижение учитывает |
||||
подтверждённую скорость и разгрузку задолженности; повышение — малыми пробами. |
||||
Нет отдельного неограниченного интегратора: задолженность уже интегрирует дефицит. |
||||
Учитываются прогрев, RTT, minrtt_probe, отсутствие маршрута, локальное удержание |
||||
планировщиком, применение encoder-команды и смена эпохи. |
||||
|
||||
Владение |
||||
Состояние звонка/регулятора/роутера — uasync. Камера и encoder/decoder — платформенные |
||||
workers. Ограниченный mailbox, одно ожидающее уведомление. Команды bitrate имеют |
||||
call_id, video_generation и request_id; одно исполнение и последнее желаемое значение. |
||||
Принятая настройка не заменяет измерение фактического выхода. Shutdown отменяет |
||||
уведомления/таймеры, останавливает producers, затем освобождает очереди и codecs. |
||||
|
||||
Порядок реализации |
||||
[+] История первых ACK 500мс/50мс и снимок payload send_q/inflight отдельного сервиса. |
||||
[ ] Проверки интеграции счётчиков: retransmit, duplicate ACK, reset, UDP/STCP. |
||||
[ ] Проверка переноса аудиопозиции через SoundTouch при темпе 1.0..1.6. |
||||
[ ] H.265 runtime bitrate: поддерживаемый backend без циклического пересоздания. |
||||
[ ] Общий регулятор с детерминированными сценариями. |
||||
[ ] Протокол возможностей/формата, видеофрагменты, сборка, A/V scheduler. |
||||
[ ] Общие capture PTS и отображение позиции аудиоустройства в исходное время. |
||||
[ ] ChatGUI: движок, окно и настройки; Android: движок, JNI, сервис и экран. |
||||
[ ] Интеграционные проверки всех пар, перегрузки, смены формата и lifecycle. |
||||
|
||||
Приёмка |
||||
Нет двойного учёта байтов: принято = подтверждено + отменено + задолженность. |
||||
Повторные ACK/передачи не увеличивают delivered. Reset не считается доставкой. |
||||
Свободный канал не вызывает снижение на статичной сцене; рост полосы обнаруживается |
||||
пробами. Очереди остаются ограниченными при отсутствии ACK и остановке decoder. |
||||
Видео следует аудио при догоне, underrun, смене устройства и формате видеотрека. |
||||
Завершение звонка безопасно во время переключения камеры, bitrate и decoder. |
||||
Loading…
Reference in new issue