|
|
|
|
@ -4,6 +4,25 @@
|
|
|
|
|
|
|
|
|
|
## Текущие задачи |
|
|
|
|
|
|
|
|
|
[+] **Live: прямое превью Android без собственного decoder** — 14.10.2026: |
|
|
|
|
Камера одновременно выводит в encoder Surface и TextureView; собственное превью больше не открывает |
|
|
|
|
stream viewer/cursor, MediaCodec decoder, AudioTrack и адаптивные часы воспроизведения. |
|
|
|
|
Attach/detach меняет только camera session, сохраняя encoder, audio, revision и origin; |
|
|
|
|
ON_STOP снимает preview output сразу, без ожидания Compose recomposition. Отказ preview сохраняет encoder-only эфир. |
|
|
|
|
Surface/texture удерживаются UI, ожидающими командами и camera sessions до окончания использования; |
|
|
|
|
CameraDevice.onClosed освобождает также sessions, для которых Android не доставил отдельный onClosed. |
|
|
|
|
TextureView сам учитывает sensor orientation; дополнительный UI rotation компенсирует лишь поворот дисплея. |
|
|
|
|
Повторный поворот сенсора убран, DisplayListener учитывает также 180° без изменения размеров окна. |
|
|
|
|
Диагностика показывает native transform, sensor/display/UI rotation, first frame, FPS, возраст кадров и освобождение outputs. |
|
|
|
|
REALTIME timestamp сравнивается с elapsedRealtimeNanos; UNKNOWN не выдаёт выдуманный абсолютный возраст. |
|
|
|
|
На SM проверены AV1, задняя/передняя камеры, ручной поворот, фон/возврат, закрытие/открытие preview, |
|
|
|
|
полная остановка и повторный запуск. Нет собственного decoder; типичный возраст кадров около 130ms |
|
|
|
|
вместо накопленных 6s; перед stop median=133.7ms, p95=175.7ms по 297 диагностическим samples. |
|
|
|
|
Stop освободил codec и все sessions, camera HandlerThread завершён; после проверки восстановлены AV1/main/0°. |
|
|
|
|
151 тест ядра и Kotlin unit tests прошли, в том числе 6 проверок preview; APK установлен на SM. |
|
|
|
|
Архитектура: `doc/stream.txt`, `doc/service_lifecycle.md`. |
|
|
|
|
Логи: `/tmp/direct-preview-{full-check,android-orientation-build,sm-live}.log`. |
|
|
|
|
|
|
|
|
|
[+] **Live: независимая подача decoder и устранение вечного ожидания AV1 на SM** — 14.10.2026: |
|
|
|
|
Причина: Android подавал максимум три кадра и читал видео только на 80ms вперёд от остановившегося clock; |
|
|
|
|
c2.android.av1-dav1d.decoder требовал заполнения своего конвейера. KEY уже был принят, но UI продолжал ждать KEY. |
|
|
|
|
|