Expose track completion to desktop and retain the longer media tail

This commit is contained in:
evgeny committed 2026-10-20 23:53:58 +02:00
1 parent a54031081b
commit 852c05590d
3 files changed
+4 -1

No files matched your search

+1
View File
@@ -320,6 +320,7 @@ int stream_media_cursor_status(struct stream_media_cursor *c, struct stream_medi
status.ready_us = status.video_us;
if (status.audio_enabled && status.audio_us < status.ready_us) status.ready_us = status.audio_us;
if (s->finished && c->video.ended && status.audio_enabled) status.ready_us = status.audio_us;
if (s->finished && c->audio.ended && status.video_us > status.ready_us) status.ready_us = status.video_us;
status.video_ended = c->video.ended; status.audio_ended = c->audio.ended;
status.start_us = c->start_us; status.generation = c->generation; status.initialized = 1;
}
@@ -33,6 +33,8 @@ StreamRecord takeRecord(uint64_t id, stream_viewer_record* r) {
case STREAM_VIEWER_OPENED: record.kind = StreamRecordKind::Opened; break;
case STREAM_VIEWER_END: record.kind = StreamRecordKind::End; break;
case STREAM_VIEWER_CLOSED: record.kind = StreamRecordKind::Closed; break;
case STREAM_VIEWER_VIDEO_END: record.kind = StreamRecordKind::VideoEnd; break;
case STREAM_VIEWER_AUDIO_END: record.kind = StreamRecordKind::AudioEnd; break;
}
record.id = id; record.pts = r->pts; record.format = r->format; record.flags = r->flags; record.reason = r->reason;
record.data = QByteArray(reinterpret_cast<const char*>(r->data), static_cast<int>(r->length));
+1 -1
View File
@@ -13,7 +13,7 @@
#include "../../../src/stream/stream_publisher.h"
struct UTUN_INSTANCE;
enum class StreamRecordKind { Video, Audio, Gap, Opened, End, Closed };
enum class StreamRecordKind { Video, Audio, Gap, Opened, End, Closed, VideoEnd, AudioEnd };
struct StreamRecord {
uint64_t id = 0, pts = 0;
StreamRecordKind kind = StreamRecordKind::Gap;