|
|
|
|
@ -636,3 +636,51 @@ Unisoc AVC: 3.993M -> 29.3k -> 3.994M бит/с. В каждой пробе по
|
|
|
|
|
Итоговый APK установлен на оба телефона. check.sh: 154/154, proxy 9/9, burst/load PASS (119с), |
|
|
|
|
/tmp/call-video-core-final-check-unsandboxed.log. Первый запуск в sandbox не мог открыть сокеты; |
|
|
|
|
успешный полный прогон выполнен с разрешённым сетевым доступом. |
|
|
|
|
|
|
|
|
|
15.10.2026, повторная диагностика задержки desktop -> Samsung после внедрения AAudio |
|
|
|
|
Звонок 14610053360084326214 (Kotlin Long: -3836690713625225402), Samsung на громкой связи, |
|
|
|
|
AAudio output ~23мс, очередь устройства 20мс, стабильный JB reserve=20мс. Оба направления около 30fps. |
|
|
|
|
Выборка всех этапов по pts % 1000000 < 34000: примерно один кадр/сек, категории debug=debug. |
|
|
|
|
Desktop: encode (включая select/convert), send, receive, decode, select, publish. |
|
|
|
|
Android: receive, pull (MONOTONIC+BOOTTIME), queue, decode, release, surface, texture_update, commit. |
|
|
|
|
Поля pts принадлежат отправителю; mono_us — локальному CLOCK_MONOTONIC, boot_us — CLOCK_BOOTTIME. |
|
|
|
|
Сравнение разных устройств напрямую запрещено. Для анализа использовано ограничение send <= receive |
|
|
|
|
в обоих направлениях, по совпадающим PTS: phone_boot-host_boot в [-796330256933, -796330252177]мкс. |
|
|
|
|
Погрешность межмашинных оценок в этой выборке +/-2.378мс; локальные интервалы этой ошибки не имеют. |
|
|
|
|
|
|
|
|
|
Первый замер ошибочно считал texture_update временем готовности текущего кадра: по исходникам Android |
|
|
|
|
TextureView.applyUpdate() передаёт работу RenderThread, а callback вызывается до фактического dequeue. |
|
|
|
|
Чтение SurfaceTexture.timestamp здесь часто показывает предыдущий кадр и добавляет ложные ~33мс. |
|
|
|
|
MediaCodec.OnFrameRenderedListener на этом backend возвращает исходный PTS в nanoTime, что также |
|
|
|
|
не является измерением локального времени показа. В логе поле переименовано в reported_us. |
|
|
|
|
Контроль commit читает timestamp после registerFrameCommitCallback (API29+): кадр уже обработан |
|
|
|
|
RenderThread и передан в swapchain. Callback может опоздать; физический scanout не измерен. |
|
|
|
|
Эти данные не обосновывают компенсацию постоянными 40мс или замену TextureView. |
|
|
|
|
|
|
|
|
|
51 полная выборка desktop -> Samsung: медиана encode 25.72мс, от mapped capture PTS до выхода |
|
|
|
|
encoder 46.19мс, сеть 4.09мс, ожидание в RX-порту 32.05мс, decode 6.47мс, |
|
|
|
|
ожидание audio clock после decode 24.19мс, release -> commit 19.50мс. |
|
|
|
|
Медиана mapped PTS -> release 115.88мс, -> commit 137.90мс. |
|
|
|
|
В последних 20 выборках без большого сетевого выброса: PTS -> release 100.4мс, |
|
|
|
|
PTS -> commit 133.8мс; сеть 4.4мс, decode 5.7мс. Медианы отдельных этапов не складываются |
|
|
|
|
в точную медиану полного пути. В общей записи были сетевые выбросы и увеличение ожидания JB; |
|
|
|
|
на стабильном участке резерв вернулся к 20мс, аппаратных underrun нет. |
|
|
|
|
|
|
|
|
|
Обратный путь, последние 20 выборок: sensor PTS -> send 124.7мс (камера и encoder вместе), |
|
|
|
|
сеть 5.2мс, software decode 2.1мс, ожидание audio clock <0.1мс, select -> Qt publish 12.0мс. |
|
|
|
|
От sensor PTS до publish 147.5мс; publish ещё не означает физический показ на мониторе. |
|
|
|
|
Desktop capture PTS привязан к arrival-upper-bound Qt, Android PTS — к аппаратному sensor timestamp: |
|
|
|
|
сравнивать эти числа как точное glass-to-glass измерение разных камер нельзя. |
|
|
|
|
Тем не менее асимметрия после получения кадра ясна: быстрый desktop encoder обгоняет аудиопозицию, |
|
|
|
|
Samsung удерживает кадр/следующие encoded frames до неё. Видео телефона приходит к desktop уже позже |
|
|
|
|
соответствующей аудиопозиции и показывается практически сразу. Локальный desktop preview аудио не ждёт. |
|
|
|
|
Ускорение только encoder освободит CPU, но при раннем приходе увеличит ожидание аудио на столько же. |
|
|
|
|
Для дальнейшего снижения общей A/V-задержки нужно оптимизировать аудиотракт и отдельно проверять |
|
|
|
|
планирование презентации с учётом измеренного render latency; JB20/адаптация и привязка к звуку сохранены. |
|
|
|
|
|
|
|
|
|
Снимки: /tmp/video-timing-committed-desktop.log, /tmp/video-timing-committed-sm.log; |
|
|
|
|
расчёт: /tmp/video-timing-committed-analysis.json. Исходники Android для проверки порядка callbacks: |
|
|
|
|
/tmp/video-TextureView.java, /tmp/video-DeferredLayerUpdater.cpp, /tmp/video-ImageConsumer.cpp. |
|
|
|
|
Сборки /tmp/video-timing-*-build.log и /tmp/video-commit-*-build.log; 103 Android unit PASS, |
|
|
|
|
test_call_video_clock exit=0, test_call_video_encoder 13/13 PASS. Диагностика установлена на Samsung, |
|
|
|
|
ChatGUI пересобран и перезапущен. Поведение кодеков, очередей, аудиосинхронизации не изменено. |
|
|
|
|
|