Document video receive cleanup acknowledgments and host fault coverage
This commit is contained in:
1 parent
8040431a4a
commit
b2b34df2ec
3 files changed
+21
-3
No files matched your search
@@ -510,8 +510,14 @@ wake lock: перед исходящим вызовом или принятие
|
||||
wake lock и сервис. Ошибочные операции сохраняют владельцев и повторяются независимо
|
||||
с задержкой 250 мс..30 с; process-ссылка удерживает их также после onDestroy.
|
||||
Успешный Deferred от shutdown подтверждает stop API audio/video и очистку receiver,
|
||||
wake lock, токенов, foreground/stopSelf. Video подтверждает RX join/native close
|
||||
wake lock, токенов, foreground/stopSelf. Video подтверждает RX join/освобождение decoder,
|
||||
playout и Surface, native close
|
||||
и постановку camera cleanup, которая завершается асинхронно на video worker.
|
||||
RX stop ограничивает join 250 мс за попытку; ошибка release сохраняет decoder,
|
||||
его Surface не освобождается до codec. Прочие Surface и playout очищаются независимо.
|
||||
Process-ссылка и Handler повторяют cleanup после выхода worker; поздние Surface также
|
||||
удерживаются до успешного callback release. Исключение callback требует повторяемого
|
||||
освобождения у передавшего владельца. Неудачный RX stop запрещает закрывать native port.
|
||||
Отказ поста или join оставляет stop повторяемым. Отмена Deferred не снимает владельцев.
|
||||
Audio stop ждёт каждый worker до 250 мс за попытку; playback включает join reporter.
|
||||
Живые workers и устройства с отказавшим release остаются у движка, native audio stop
|
||||
|
||||
@@ -2,7 +2,7 @@ package com.utun.chat.data
|
||||
|
||||
/** Worker-локальный отбор raw по фазе fps=1..60; PTS — монотонные мкс одного запуска камеры.
|
||||
* accept=false при неверном/повторном PTS, риске overflow либо раннем кадре (допуск 1/4 периода).
|
||||
* Пауза больше периода переносит фазу без burst; новый источник/шкала PTS требует нового экземпляра. */
|
||||
* Опоздание относительно очередной фазы больше периода переносит её без burst; новая шкала требует нового экземпляра. */
|
||||
internal class CallVideoCadence(private val fps: Int) {
|
||||
private var lastPts = -1L
|
||||
private var next = -1L
|
||||
|
||||
@@ -422,8 +422,15 @@ AudioRecord/CallAudioOutput у движка, включая частичный
|
||||
повторяются независимо; после передачи режима в Telecom fallback его не восстанавливает.
|
||||
Незавершённая очистка бросает ошибку сервису и запрещает новый start. Native audio stop
|
||||
вызывается после подтверждения этих операций, его отказ также допускает повтор.
|
||||
Video stop подтверждает RX join/native close и принятие cleanup камерой/encoder
|
||||
Video stop подтверждает RX join/освобождение его decoder, playout handle и Surface,
|
||||
native close и принятие cleanup камерой/encoder
|
||||
worker; окончательная camera cleanup асинхронна. Ошибка RX join или post допускает повтор stop.
|
||||
RX join ограничен 250 мс за попытку; decoder не теряется при отказе release, его Surface
|
||||
остаётся до подтверждённого освобождения codec. Остальные Surface и playout очищаются
|
||||
независимо. Очередь Surface владеет callback release до успешного возврата, включая
|
||||
позднюю передачу после stop; callback должен допускать повтор после исключения.
|
||||
Process-ссылка и Handler сохраняют cleanup после выхода RX, без переноса уже назначенного
|
||||
раннего таймера. Отказ post не теряет владельцев и допускает явный stop.
|
||||
|
||||
Shutdown возвращает Deferred, успешный результат означает подтверждение всех
|
||||
владельцев сервиса. При отказе process-ссылка удерживает экземпляр даже после
|
||||
@@ -648,6 +655,11 @@ CallAudioLifecycleTest компилирует настоящие CallAudioEngine
|
||||
поздний Telecom handoff и запрет stop вне main/нулевого ID. Барьер capture доказывает,
|
||||
что до выхода worker устройства/native сохраняются и новая сессия не запускается.
|
||||
Android hardware и DSP моделируются; AAudio/OEM поведение на устройстве не проверяется.
|
||||
`:video-tests:test` проверяет настоящий CallVideoPlayer, uAV2 KEY framing и смену поколений
|
||||
на JVM. Управляемые границы MediaCodec/probe/JNI позволяют воспроизвести отказы частичного
|
||||
configure/start/stop/release, Surface callback, playout destroy, join и retry Handler.
|
||||
Проверяются независимое освобождение, запрет release Surface до codec, старый detach,
|
||||
ACK показа/PTS и EOS drain без смены Surface. OEM/реальное декодирование остаются вне модели.
|
||||
RadioCallLifecycleTest использует настоящие RadioCallController, IncomingCallManager,
|
||||
CoreActivity и гудки. Управляемые Android/JNI/repository-границы проверяют все
|
||||
команды сигналинга, pending START, валидацию событий/полной identity, активацию,
|
||||
|
||||
Reference in new issue
Block a user