diff --git a/src/stream/stream_media_buffer.c b/src/stream/stream_media_buffer.c index 3ad20582..23b5606c 100644 --- a/src/stream/stream_media_buffer.c +++ b/src/stream/stream_media_buffer.c @@ -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; } diff --git a/tools/chatgui/transport/stream_bridge.cpp b/tools/chatgui/transport/stream_bridge.cpp index 645eeb4d..eb0327b2 100644 --- a/tools/chatgui/transport/stream_bridge.cpp +++ b/tools/chatgui/transport/stream_bridge.cpp @@ -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(r->data), static_cast(r->length)); diff --git a/tools/chatgui/transport/stream_bridge.h b/tools/chatgui/transport/stream_bridge.h index 712f4464..957260e4 100644 --- a/tools/chatgui/transport/stream_bridge.h +++ b/tools/chatgui/transport/stream_bridge.h @@ -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;