rtmp2: Add gst_rtmp_chunk_stream_serialize_all
authorJan Alexander Steffens (heftig) <jsteffens@make.tv>
Wed, 12 Feb 2020 15:47:30 +0000 (16:47 +0100)
committerGStreamer Merge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Fri, 21 Feb 2020 15:20:41 +0000 (15:20 +0000)
Serializes an RTMP message into a series of chunks, all in one buffer.

Similar to what gst_rtmp_connection_queue_message does to serialize
into a GByteArray.

gst/rtmp2/rtmp/rtmpchunkstream.c
gst/rtmp2/rtmp/rtmpchunkstream.h

index b0aa1fa..cca8848 100644 (file)
@@ -666,6 +666,23 @@ gst_rtmp_chunk_stream_serialize_next (GstRtmpChunkStream * cstream,
   return serialize_next (cstream, chunk_size, CHUNK_TYPE_3);
 }
 
+GstBuffer *
+gst_rtmp_chunk_stream_serialize_all (GstRtmpChunkStream * cstream,
+    GstBuffer * buffer, guint32 chunk_size)
+{
+  GstBuffer *outbuf, *nextbuf;
+
+  outbuf = gst_rtmp_chunk_stream_serialize_start (cstream, buffer, chunk_size);
+  nextbuf = gst_rtmp_chunk_stream_serialize_next (cstream, chunk_size);
+
+  while (nextbuf) {
+    outbuf = gst_buffer_append (outbuf, nextbuf);
+    nextbuf = gst_rtmp_chunk_stream_serialize_next (cstream, chunk_size);
+  }
+
+  return outbuf;
+}
+
 GstRtmpChunkStreams *
 gst_rtmp_chunk_streams_new (void)
 {
index 6466f3b..e2b0d9b 100644 (file)
@@ -45,6 +45,8 @@ GstBuffer * gst_rtmp_chunk_stream_serialize_start (GstRtmpChunkStream * cstream,
     GstBuffer * buffer, guint32 chunk_size);
 GstBuffer * gst_rtmp_chunk_stream_serialize_next (GstRtmpChunkStream * cstream,
     guint32 chunk_size);
+GstBuffer * gst_rtmp_chunk_stream_serialize_all (GstRtmpChunkStream * cstream,
+    GstBuffer * buffer, guint32 chunk_size);
 
 GstRtmpChunkStreams * gst_rtmp_chunk_streams_new (void);
 void gst_rtmp_chunk_streams_free (gpointer ptr);