srtsrc: Receive one frame per gstbuffer
authorOlivier Crête <olivier.crete@collabora.com>
Mon, 8 Jul 2019 19:50:59 +0000 (15:50 -0400)
committerTim-Philipp Müller <tim@centricular.com>
Fri, 9 Aug 2019 21:20:17 +0000 (22:20 +0100)
Don't aggregate the received data, just receive it one packet at a
time. So it keeps the packetization boundaries

ext/srt/gstsrtobject.c

index e906769..ddf3e5a 100644 (file)
@@ -1191,25 +1191,11 @@ gst_srt_object_read (GstSRTObject * srtobject,
         continue;
     }
 
-    while (len < size) {
-      gint recv;
-      gint rest = size - len;
 
-      /* Workaround for SRT being unhappy about buffers that
-       * are less than the chunk size */
-      if (rest < msg_size)
-        goto out;
-
-      recv = srt_recvmsg (rsock, (char *) (data + len), rest);
-
-      if (recv <= 0)
-        goto out;
-
-      len += recv;
-    }
+    len = srt_recvmsg (rsock, (char *) (data), size);
+    break;
   }
 
-out:
   return len;
 }