diff --git a/tools/chatgui-android/doc/ARCHITECTURE.md b/tools/chatgui-android/doc/ARCHITECTURE.md index ea0244ec..06176012 100644 --- a/tools/chatgui-android/doc/ARCHITECTURE.md +++ b/tools/chatgui-android/doc/ARCHITECTURE.md @@ -244,6 +244,17 @@ feed/pull workers и маршрутом Android Telecom; DSP и сетевой Вызовы lifecycle DSP выполняются после остановки его внешних feed/pull callers. Контракты PCM/PTS: `src/call/call_audio.h`, `src/radio/radio_audio.h`, `jni_bridge/android_jni_bridge.h`. +Локальный `VideoPlayerScreen` сохраняет пассивный VideoFilePlayer до start. UI отражает +результаты MediaPlayer start/pause/seek, ошибка команды завершает playback и оставляет +доступным закрытие экрана. Пользовательская пауза сохраняется при пересоздании Surface. +TextureView и player держат отдельные leases output; неудавшийся release MediaPlayer +сохраняет его ссылки до SDK ACK с retry 250 мс..30 с. Поздний destroy прежнего texture +не отключает новый output, callbacks после dispose не запускают playback/навигацию. +Metadata читаются в IO через отдельный владелец retriever; ошибка release сохраняет +его для повтора и не подменяет исходную ошибку read. Поворот и панели окна возвращаются +к прежним значениям при выходе. VideoFilePlayerTest/VideoFileMetadataTest проверяют +эти контракты на управляемых SDK-границах; аппаратное декодирование в JVM не выполняется. + TelecomCallManager на main регистрирует self-managed account и connections по call ID; lookup разрешён workers. Поздний/дублирующий Connection не заменяет живого владельца и не возвращается framework как новый активный вызов. Ошибки markDisconnected не прерывают destroy. Неудавшийся destroy сохраняет отдельного retiring owner