|
|
|
|
@ -162,10 +162,24 @@ AudioTrack пересоздавался, очередь временно дос
|
|
|
|
|
latency PulseAudio, число скачков >2мс, hole-сэмплы и блоки без достоверного измерения. |
|
|
|
|
Первый скачок за секунду содержит обе latency/поправки конвертера, expected/actual PTS и монотонное время. |
|
|
|
|
Backend публикует только числовой снимок в ограниченное кольцо; форматирование выполняет reporter. |
|
|
|
|
Это наблюдение, а не коррекция: пороги 2мс в call_audio и 20мс в VoiceAudioIo пока сохранены. |
|
|
|
|
Исходный backend-снимок остаётся наблюдением. В capture worker позиция PCM задаёт непрерывные PTS, |
|
|
|
|
а backend медленно корректирует их привязку: постоянная времени 2с, предел 0.5% (100мкс на 20мс PCM). |
|
|
|
|
Скорректированное время используется и для Opus, и для выбора AEC-референса. Сам PCM не изменяется. |
|
|
|
|
Разрыв sequence, смена route и скачок исходных меток >20мс по-прежнему сбрасывают capture/AEC и эпоху; |
|
|
|
|
порог 2мс в call_audio не увеличивается. Секундный `voice-io: capture clock` показывает phase/error/adjustment. |
|
|
|
|
Тесты проверяют десять минут дрейфа +/-300ppm, скачки оценки до 14мс, разбиение чанков 25мс на Opus 20мс, |
|
|
|
|
сохранность PCM, явную потерю, смену устройства и большой разрыв исходных часов. |
|
|
|
|
Счётчик sequence описывает полученные backend-сэмплы; отсутствие потерь очереди само по себе |
|
|
|
|
не доказывает непрерывность физического захвата. Проверять вместе с hole/overflow и route-событиями. |
|
|
|
|
|
|
|
|
|
Дальнейший подбор минимальной очереди аудиоустройства (ещё не реализован) отделён от JB/SoundTouch: |
|
|
|
|
старт с проверенного размера, редкие попытки уменьшения после стабильного участка, увеличение при |
|
|
|
|
подтверждённом backend underrun, пауза обучения при смене маршрута/запуске. Размер запрашивается |
|
|
|
|
аппаратными шагами; сохраняется фактически принятый размер, а не только запрос. |
|
|
|
|
Ожидание полного буфера и недостача сети не являются поводом увеличить очередь устройства. |
|
|
|
|
На Android регулируется AudioTrack без flush/recreate; на desktop выход принадлежит SoundManager, |
|
|
|
|
изменение backend-буфера должно выполняться его владельцем, а не отдельным звонком. |
|
|
|
|
|
|
|
|
|
Диагностика Android при `call=debug`: playback сохраняет один числовой снимок на блок (20мс) |
|
|
|
|
в кольце 512 элементов, без форматирования/вывода. Отдельный reporter раз в 200мс забирает записи; |
|
|
|
|
раз в секунду выводит `audio summary` с min/avg/max очередей, задержек pull/write и опоздания потока, |
|
|
|
|
|