|
|
|
|
@ -4,17 +4,20 @@
|
|
|
|
|
|
|
|
|
|
## Текущие задачи |
|
|
|
|
|
|
|
|
|
[ ] **Live: согласовать выдачу cursor с проверкой revision/KEY в media store** — 14.10.2026: |
|
|
|
|
При переносе тестов старого stream_media_receiver на рабочий store/cursor выявлено расхождение: |
|
|
|
|
после KEY revision=1, неполного кадра revision=1 и обычного кадра revision=2 индекс остаётся на старом PTS, |
|
|
|
|
но cursor выдаёт кадр revision=2 без KEY. Desktop отбрасывает его собственной проверкой waitKey. |
|
|
|
|
Воспроизведение: `make -C tests test_stream_media`, затем `tests/test_stream_media --revision-transition`. |
|
|
|
|
Диагностический режим намеренно падает: indexed_video_us=1000000, result=0, revision=2, frame=3, flags=0. |
|
|
|
|
Обычный запуск test_stream_media сохраняет прежние проверки; старый receiver пока не удалён. |
|
|
|
|
Согласовать допуск видео в store/cursor без сброса аудио и без запрета старой revision отстающим readers; |
|
|
|
|
проверить фрагменты, KEY, GAP и чтение истории. После исправления включить регрессию в обычный запуск, |
|
|
|
|
перенести остальные тесты receiver на store/cursor и удалить неиспользуемый API. |
|
|
|
|
Продолжение архитектурного плана: общий viewer reader, измерение запросов кандидатов, граница relay/network. |
|
|
|
|
[+] **Live: согласовать выдачу cursor с проверкой revision/KEY в media store** — 14.10.2026: |
|
|
|
|
Каждый cursor хранит revision последнего выданного полного видео и пропускает новую только с полным KEY. |
|
|
|
|
Неполный кадр прежней revision удаляется; аудио и чтение старой истории другими readers сохраняются. |
|
|
|
|
После GAP, нарушения последовательности фрагментов и вытеснения reader начинает с полного KEY; |
|
|
|
|
зависимые кадры и частичный KEY не выдаются. Готовый KEY не ждёт таймера. |
|
|
|
|
Регрессии включены в обычный test_stream_media; отдельный запуск: `tests/test_stream_media --revision-transition`. |
|
|
|
|
Неиспользуемый stream_media_receiver удалён; сборка, FEC, конфликты формата и восстановление проверяются на store/cursor. |
|
|
|
|
Desktop/Android используют общий stream_media_open с проверкой выбранной эпохи и откатом нового owner при ошибке. |
|
|
|
|
Дополнительный reader-объект не нужен: владение и курсор уже находятся в STREAM_HANDLE. |
|
|
|
|
|
|
|
|
|
[ ] **Live: оценить оставшиеся оптимизации архитектурного плана** — 14.10.2026: |
|
|
|
|
Измерить стоимость получения кандидатов и повторных проверок участников; оптимизировать подтверждённые затраты. |
|
|
|
|
Кэш авторизации требует полной инвалидации при изменении участников, подписантов и ключей канала. |
|
|
|
|
Отделять relay от network только при упрощении владения; не выносить общие внутренние структуры ради размера файла. |
|
|
|
|
|
|
|
|
|
[+] **Live: прямое превью Android без собственного decoder** — 14.10.2026: |
|
|
|
|
Камера одновременно выводит в encoder Surface и TextureView; собственное превью больше не открывает |
|
|
|
|
|