|
|
|
@ -187,7 +187,7 @@ KEY содержит config_length:4BE + AnnexB config + access unit. Ядро |
|
|
|
границы envelope; содержимое NAL обязан проверять платформенный decoder. |
|
|
|
границы envelope; содержимое NAL обязан проверять платформенный decoder. |
|
|
|
frame_id и capture PTS возрастают на всём протяжении звонка, включая смену generation. |
|
|
|
frame_id и capture PTS возрастают на всём протяжении звонка, включая смену generation. |
|
|
|
Новый формат требует нового generation и KEY. После пропуска кадра нужен KEY. |
|
|
|
Новый формат требует нового generation и KEY. После пропуска кадра нужен KEY. |
|
|
|
На TX ограниченная FIFO: до 32 кадров, 500мс по PTS и 4MiB суммарно; на RX одна ограниченная сборка. |
|
|
|
На TX ограниченная FIFO: до 32 кадров, 500мс по PTS и 2MiB суммарно; на RX одна ограниченная сборка. |
|
|
|
Deadline головы TX и сборки RX — 2с. Каждый TX кадр ждёт соответствующего audio_end_pts; |
|
|
|
Deadline головы TX и сборки RX — 2с. Каждый TX кадр ждёт соответствующего audio_end_pts; |
|
|
|
следующие P-кадры сохраняются в FIFO, а не теряются на обычной задержке аудиообработки. |
|
|
|
следующие P-кадры сохраняются в FIFO, а не теряются на обычной задержке аудиообработки. |
|
|
|
При потере головы отбрасывается вся зависимая цепочка и запрашивается KEY. В сетевой долг |
|
|
|
При потере головы отбрасывается вся зависимая цепочка и запрашивается KEY. В сетевой долг |
|
|
|
@ -539,10 +539,10 @@ Android: принимаемое видео сначала занимает ве |
|
|
|
Назад возвращает к управлению звонком с двумя доступными миниатюрами (своей и собеседника). |
|
|
|
Назад возвращает к управлению звонком с двумя доступными миниатюрами (своей и собеседника). |
|
|
|
Нажатие миниатюры открывает выбранное видео на весь экран; второе остаётся в углу и позволяет |
|
|
|
Нажатие миниатюры открывает выбранное видео на весь экран; второе остаётся в углу и позволяет |
|
|
|
поменять их местами. Выход в управление не выключает передачу/приём и не пересоздаёт TextureView/Surface. |
|
|
|
поменять их местами. Выход в управление не выключает передачу/приём и не пересоздаёт TextureView/Surface. |
|
|
|
Ориентация экрана выбирается по размерам выбранного кадра с учётом rotation; весь кадр |
|
|
|
Ориентация интерфейса фиксируется на время экрана звонка. Только большое видео дополнительно |
|
|
|
вписывается максимально крупно с исходными пропорциями, без crop и растяжения. |
|
|
|
поворачивается на 90 градусов, если так кадр занимает большую площадь; миниатюры не поворачиваются. |
|
|
|
При несовпадении пропорций остаются поля. Возврат к управлению звонком восстанавливает прежнюю |
|
|
|
Весь кадр вписывается с исходными пропорциями, без crop и растяжения; при несовпадении пропорций остаются поля. |
|
|
|
ориентацию; краткое переподключение Surface не вызывает обратного поворота. |
|
|
|
Выход с экрана звонка восстанавливает прежнюю политику ориентации Activity. |
|
|
|
При видео экран остаётся включённым, proximity-overlay отключён. Если выбран EARPIECE, |
|
|
|
При видео экран остаётся включённым, proximity-overlay отключён. Если выбран EARPIECE, |
|
|
|
переход на SPEAKER ждёт подтверждённого FAR; UNKNOWN/NEAR переключение запрещают. |
|
|
|
переход на SPEAKER ждёт подтверждённого FAR; UNKNOWN/NEAR переключение запрещают. |
|
|
|
Выключение видео, конец звонка и ручной выбор выхода отменяют ожидание. HEADSET не меняется, |
|
|
|
Выключение видео, конец звонка и ручной выбор выхода отменяют ожидание. HEADSET не меняется, |
|
|
|
@ -570,16 +570,25 @@ Preview берётся из того же QVideoFrame (до 10 fps). Тольк |
|
|
|
Desktop UI smoke: отдельные окна, сохранение геометрии/настроек звонка, resize видео, |
|
|
|
Desktop UI smoke: отдельные окна, сохранение геометрии/настроек звонка, resize видео, |
|
|
|
F11/Esc, закрытие/повторное открытие без hangup, local-only и завершение — PASS |
|
|
|
F11/Esc, закрытие/повторное открытие без hangup, local-only и завершение — PASS |
|
|
|
(/tmp/call-video-separate-preview.log). ChatGUI собран; Android assembleDebug и 81 unit-тест — PASS. |
|
|
|
(/tmp/call-video-separate-preview.log). ChatGUI собран; Android assembleDebug и 81 unit-тест — PASS. |
|
|
|
Автоматическое ожидание FAR и поворот экрана требуют проверки в следующем реальном звонке. |
|
|
|
Автоматическое ожидание FAR и независимый поворот видео требуют проверки в следующем реальном звонке. |
|
|
|
|
|
|
|
|
|
|
|
15.10.2026, диагностика низкого FPS desktop -> Samsung: |
|
|
|
15.10.2026, диагностика низкого FPS desktop -> Samsung: |
|
|
|
До исправления capture=30/s, encoded=20/s, paced=10/s; TX accepted=5/s, audio_busy=15/s, |
|
|
|
До исправления capture=30/s, encoded=20/s, paced=10/s; TX accepted=5/s, audio_busy=15/s, |
|
|
|
audio_ahead=140–180ms. RX pulled/decoded/rendered=5/s, late=0: кадры терялись до отправки. |
|
|
|
audio_ahead=140–180ms. RX pulled/decoded/rendered=5/s, late=0: кадры терялись до отправки. |
|
|
|
Вместо порога 33333мкс от прошлого кадра desktop использует сетку 30 fps с допуском 1/4 периода; |
|
|
|
Вместо порога 33333мкс от прошлого кадра desktop использует бюджет 30 fps с запасом одного кадра |
|
|
|
30 fps с дрожанием сохраняются, 60 fps ограничиваются до 30. FIFO TX сохраняет кадры во время ожидания аудио. |
|
|
|
и минимальным интервалом 25мс. Бюджет сохраняет дробную часть при пропуске кадра; фиксированная сетка |
|
|
|
|
|
|
|
теряла серии кадров при уходе фазы камеры. Тест охватывает 10 минут с дрожанием и квантованием PTS, |
|
|
|
|
|
|
|
а также ограничение входных 40/60 fps. FIFO TX сохраняет кадры во время ожидания аудио. |
|
|
|
test_call проверяет семь последовательных KEY/P кадров за audio barrier, порядок после release и предел PTS. |
|
|
|
test_call проверяет семь последовательных KEY/P кадров за audio barrier, порядок после release и предел PTS. |
|
|
|
Диагностика: /tmp/call-fps-desktop-live.log, /tmp/call-fps-sm-live.log; unit/core/Qt проверки прошли. |
|
|
|
Диагностика: /tmp/call-fps-desktop-live.log, /tmp/call-fps-sm-live.log; unit/core/Qt проверки прошли. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Повторный звонок после FIFO: desktop offered/accepted около 30 fps, audio_busy=0; |
|
|
|
|
|
|
|
Samsung pulled/decoded/rendered около 30 fps, late=0. Исчезновение обратного видео вызвано |
|
|
|
|
|
|
|
тайм-аутом команды bitrate на SM: 03:07:05.899 timeout request=1, 03:07:05.992 запоздалый applied. |
|
|
|
|
|
|
|
Автоматические IDR аппаратного кодека постоянно переносили программную границу следующего KEY. |
|
|
|
|
|
|
|
Теперь период KEY отсчитывается от успешной подачи нашего запроса, а не от выходного IDR; |
|
|
|
|
|
|
|
смена bitrate остаётся на границе KEY. Логи: /tmp/call-fps-sm-after.log, /tmp/call-fps-desktop-later.log. |
|
|
|
|
|
|
|
|
|
|
|
Подтверждённая причина фризов раз в 1–2с: коррекция capture timestamp меняла audio source_epoch, |
|
|
|
Подтверждённая причина фризов раз в 1–2с: коррекция capture timestamp меняла audio source_epoch, |
|
|
|
а обе платформы сбрасывали video decoder и ждали KEY. Теперь source_epoch обновляет |
|
|
|
а обе платформы сбрасывали video decoder и ждали KEY. Теперь source_epoch обновляет |
|
|
|
аудиопривязку без потери video references, готовых кадров и последнего показанного PTS. |
|
|
|
аудиопривязку без потери video references, готовых кадров и последнего показанного PTS. |
|
|
|
|