From 33f8dacbfc2827da882dc926eecf974f1e877d5d Mon Sep 17 00:00:00 2001 From: evgeny Date: Wed, 14 Oct 2026 13:25:50 +0200 Subject: [PATCH] Expose demand driven video reads through the stream handle --- src/stream/stream.c | 4 ++-- src/stream/stream.h | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/stream/stream.c b/src/stream/stream.c index f57ed92b..10777bb9 100644 --- a/src/stream/stream.c +++ b/src/stream/stream.c @@ -810,14 +810,14 @@ int stream_media_enable(struct STREAM_HANDLE *h, unsigned tracks) { } /* Чтение изменяет только локальный cursor; live ingest/READY/выдачи продолжают двигаться независимо. */ -int stream_media_read(struct STREAM_HANDLE *h, int64_t position, int64_t video_ahead, int64_t audio_ahead, +int stream_media_read(struct STREAM_HANDLE *h, int64_t position, int want_video, int64_t audio_ahead, struct stream_media_packet *packet) { if (!stream_handle_active(h) || !h->media_cursor) { DEBUG_WARN(DEBUG_CATEGORY_STREAM, "media read: detached/unconfigured reader"); return STREAM_ERR_STATE; } if (h->session->media_failed) return STREAM_ERR_FORMAT; if (h->session->media_seeking || h->session->media_next < h->session->next_seq) return STREAM_WAIT; - return stream_media_cursor_read(h->media_cursor, position, video_ahead, audio_ahead, packet); + return stream_media_cursor_read(h->media_cursor, position, want_video, audio_ahead, packet); } int stream_media_get_status(struct STREAM_HANDLE *h, struct stream_media_status *status) { diff --git a/src/stream/stream.h b/src/stream/stream.h index 4a78efe8..9393909b 100644 --- a/src/stream/stream.h +++ b/src/stream/stream.h @@ -92,7 +92,8 @@ int stream_get_info(const struct STREAM_HANDLE *handle, struct stream_info *info * Все вызовы — uasync. Заимствованный packet действует до следующего read/close. * LIVE DATA/GAP/END callbacks описывают сетевой прогресс; конец отложенного просмотра получает media_read. */ int stream_media_enable(struct STREAM_HANDLE *handle, unsigned tracks); -int stream_media_read(struct STREAM_HANDLE *handle, int64_t position_us, int64_t video_ahead_us, int64_t audio_ahead_us, +/* Один следующий видеокадр при want_video=1; звук ограничен position_us+audio_ahead_us. */ +int stream_media_read(struct STREAM_HANDLE *handle, int64_t position_us, int want_video, int64_t audio_ahead_us, struct stream_media_packet *packet); int stream_media_get_status(struct STREAM_HANDLE *handle, struct stream_media_status *status); int stream_media_resync(struct STREAM_HANDLE *handle);