Match stream audio queue to device buffer and document playback ownership
This commit is contained in:
1 parent
0fdc6e435b
commit
ded0d401c7
3 files changed
+24
-2
No files matched your search
@@ -838,6 +838,15 @@ Android:
|
||||
- Фиксированного prebuffer нет. Начало clock/audio output разрешено после первого декодированного кадра.
|
||||
AudioTrack задаёт время показа видео по реально услышанному PCM;
|
||||
без аудио используются монотонные часы с остановкой на границе готовых кадров.
|
||||
Android StreamAudioOutput принадлежит viewer worker и хранит один недописанный PCM (до 480 stereo frames).
|
||||
Одна WRITE_NON_BLOCKING за проход: частичный/нулевой результат сохраняет остаток, не задерживая video pump.
|
||||
Выдано native = принято устройством + остаток; часы используют playbackHeadPosition без экстраполяции timestamp.
|
||||
Заполнение поддерживается до фактического bufferSizeInFrames устройства; API>=31 задаёт start threshold=1.
|
||||
При EOF недописанный PCM передаётся полностью; короткий хвост дополняется не более одного start threshold тишины.
|
||||
Эта тишина не входит в native PTS; завершение ждёт воспроизведения всего принятого PCM, не окончания тишины.
|
||||
Пауза сохраняет остаток; GAP освобождает output вместе с native timeline. Новый output начинает счётчики с нуля.
|
||||
Watchdog 2s проверяет отсутствие движения hardware head только при достаточном заполнении либо заблокированной записи;
|
||||
намеренная пауза и ожидание данных до порога запуска не считаются зависанием. Ошибка содержит состояние и счётчики устройства.
|
||||
Защитный guard минутного контроллера учитывает audio device lead и наблюдённое опережение decoder
|
||||
(максимум last_input_PTS-output_PTS текущей revision плюс период кадра). Drain не обнуляет этот guard;
|
||||
новый decoder начинает измерение заново. Отдельного контроллера задержки декодера нет.
|
||||
|
||||
Reference in new issue
Block a user