commit 9ecb70e392578f2f4bbb569dd0c16a0304350af2
parent ddaad7cadac320a7fffe87ed91a69e5f8886c651
Author: Jacki <jacki@thejackimonster.de>
Date: Thu, 8 Aug 2024 17:58:00 +0200
Fix issue with buffering so that audio works and video might work for some
Diffstat:
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/src/discourse.c b/src/discourse.c
@@ -353,7 +353,9 @@ discourse_subscription_stream_message(MESSENGER_DiscourseSubscriptionInfo *info,
{
const uint32_t rtp_timestamp = gst_rtp_buffer_get_timestamp(&rtp);
- gst_rtp_buffer_ext_timestamp(×tamp, rtp_timestamp);
+ timestamp = gst_rtp_buffer_ext_timestamp(×tamp, rtp_timestamp);
+ if (!timestamp)
+ timestamp = rtp_timestamp;
gst_rtp_buffer_unmap(&rtp);
}
@@ -361,7 +363,8 @@ discourse_subscription_stream_message(MESSENGER_DiscourseSubscriptionInfo *info,
info->buffers = g_list_append(info->buffers, buffer);
buffer = NULL;
- if (info->last_timestamp == timestamp)
+ if ((info->last_timestamp == timestamp) ||
+ ((!(info->last_timestamp)) && (!(info->position))))
goto skip_buffer;
buffer = gst_buffer_new();
@@ -398,9 +401,10 @@ discourse_subscription_stream_message(MESSENGER_DiscourseSubscriptionInfo *info,
g_signal_emit_by_name(appsrc, "push-buffer", buffer, &ret);
info->position += duration;
- info->last_timestamp = timestamp;
skip_buffer:
+ info->last_timestamp = timestamp;
+
if (buffer)
gst_buffer_unref(buffer);