From b03780233e4ef70a5f7f525c4059b1e5e4df85da Mon Sep 17 00:00:00 2001 From: "Jan Alexander Steffens (heftig)" Date: Wed, 12 Feb 2020 16:47:30 +0100 Subject: [PATCH] rtmp2: Add gst_rtmp_chunk_stream_serialize_all 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 | 17 +++++++++++++++++ gst/rtmp2/rtmp/rtmpchunkstream.h | 2 ++ 2 files changed, 19 insertions(+) diff --git a/gst/rtmp2/rtmp/rtmpchunkstream.c b/gst/rtmp2/rtmp/rtmpchunkstream.c index b0aa1fa..cca8848 100644 --- a/gst/rtmp2/rtmp/rtmpchunkstream.c +++ b/gst/rtmp2/rtmp/rtmpchunkstream.c @@ -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) { diff --git a/gst/rtmp2/rtmp/rtmpchunkstream.h b/gst/rtmp2/rtmp/rtmpchunkstream.h index 6466f3b..e2b0d9b 100644 --- a/gst/rtmp2/rtmp/rtmpchunkstream.h +++ b/gst/rtmp2/rtmp/rtmpchunkstream.h @@ -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); -- 2.7.4