diff --git a/src/stream/stream.h b/src/stream/stream.h index 05ae3280..4a78efe8 100644 --- a/src/stream/stream.h +++ b/src/stream/stream.h @@ -1,7 +1,7 @@ /* Стриминг CHAT-сервиса: локальные handles владеют общим экземпляром трансляции. - * Все API — uasync-поток. Последний reader close освобождает экземпляр; publisher close - * останавливает свою трансляцию и отсоединяет её readers. Отсоединённый handle всё равно закрывает вызывающий. - * DATA/GAP/END/CLOSED callback отложен, data/описание заимствованы до его возврата. + * Все API — uasync-поток. Последний reader close освобождает экземпляр; publisher close после FIN + * сохраняет кольцо для локальных readers, без FIN отсоединяет их. Отсоединённый handle также закрывает вызывающий. + * DATA/GAP/END/CLOSED/AVAILABLE callback отложен, data/описание заимствованы до его возврата. * Close handles из callback допустим; остановка сервиса/группы и destroy ядра — вне callbacks. * Источник и локальные подписки публикуются атомарно через опции собственного мембера. */ #ifndef STREAM_H diff --git a/src/stream/stream_media_buffer.h b/src/stream/stream_media_buffer.h index 2d107fd5..a0740798 100644 --- a/src/stream/stream_media_buffer.h +++ b/src/stream/stream_media_buffer.h @@ -48,7 +48,7 @@ void stream_media_cursor_reset(struct stream_media_cursor *cursor); int stream_media_cursor_status(struct stream_media_cursor *cursor, struct stream_media_status *status); /* position_us<0 — старт: прогреть аудио перед выбранным KEY. Затем отдавать только до position_us+lookahead_us. * При GAP/EXPIRED cursor сбрасывают отдельно: это позволяет frontend сначала обработать разрыв. - * Бюджет одного вызова ограничен; WAIT при сборке длинного кадра допускает повтор сразу/по следующему событию. */ + * Бюджет одного вызова ограничен; MORE требует отложенного продолжения, WAIT — новых данных/позиции. */ int stream_media_cursor_read(struct stream_media_cursor *cursor, int64_t position_us, int64_t video_ahead_us, int64_t audio_ahead_us, struct stream_media_packet *packet);