mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-19 06:46:38 +00:00
rtpbuffer: Add function to transform a GstBuffer into a GstBufferList
Add a new function called gst_rtp_buffer_list_from_buffer() that takes a GstBuffer containing a RTP packets and spits out a GstBufferList containing two buffers, one with the header and the other with the payload.
This commit is contained in:
parent
f6b7ea3d39
commit
7536d96d7c
3 changed files with 39 additions and 0 deletions
|
@ -1288,6 +1288,7 @@ gst_rtp_buffer_new_take_data
|
||||||
gst_rtp_buffer_new_copy_data
|
gst_rtp_buffer_new_copy_data
|
||||||
gst_rtp_buffer_new_allocate
|
gst_rtp_buffer_new_allocate
|
||||||
gst_rtp_buffer_new_allocate_len
|
gst_rtp_buffer_new_allocate_len
|
||||||
|
gst_rtp_buffer_list_from_buffer
|
||||||
|
|
||||||
gst_rtp_buffer_calc_header_len
|
gst_rtp_buffer_calc_header_len
|
||||||
gst_rtp_buffer_calc_packet_len
|
gst_rtp_buffer_calc_packet_len
|
||||||
|
|
|
@ -2022,3 +2022,38 @@ gst_rtp_buffer_list_add_extension_twobytes_header (GstBufferListIterator * it,
|
||||||
|
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gst_rtp_buffer_list_from_buffer:
|
||||||
|
* @buffer: a #GstBuffer containing a RTP packet
|
||||||
|
*
|
||||||
|
* Splits a #GstBuffer into a #GstBufferList containing separate
|
||||||
|
* buffers for the header and data sections.
|
||||||
|
*
|
||||||
|
* Returns: a #GstBufferList
|
||||||
|
*/
|
||||||
|
|
||||||
|
GstBufferList *
|
||||||
|
gst_rtp_buffer_list_from_buffer (GstBuffer * buffer)
|
||||||
|
{
|
||||||
|
GstBufferList *bufferlist;
|
||||||
|
GstBuffer *sub;
|
||||||
|
GstBufferListIterator *it;
|
||||||
|
guint8 *payload;
|
||||||
|
|
||||||
|
bufferlist = gst_buffer_list_new ();
|
||||||
|
|
||||||
|
it = gst_buffer_list_iterate (bufferlist);
|
||||||
|
gst_buffer_list_iterator_add_group (it);
|
||||||
|
|
||||||
|
payload = gst_rtp_buffer_get_payload (buffer);
|
||||||
|
sub = gst_buffer_create_sub (buffer, 0, payload - GST_BUFFER_DATA (buffer));
|
||||||
|
gst_buffer_list_iterator_add (it, sub);
|
||||||
|
|
||||||
|
sub = gst_rtp_buffer_get_payload_buffer (buffer);
|
||||||
|
gst_buffer_list_iterator_add (it, sub);
|
||||||
|
|
||||||
|
gst_buffer_list_iterator_free (it);
|
||||||
|
|
||||||
|
return bufferlist;
|
||||||
|
}
|
||||||
|
|
|
@ -45,6 +45,9 @@ GstBuffer* gst_rtp_buffer_new_copy_data (gpointer data, guint len);
|
||||||
GstBuffer* gst_rtp_buffer_new_allocate (guint payload_len, guint8 pad_len, guint8 csrc_count);
|
GstBuffer* gst_rtp_buffer_new_allocate (guint payload_len, guint8 pad_len, guint8 csrc_count);
|
||||||
GstBuffer* gst_rtp_buffer_new_allocate_len (guint packet_len, guint8 pad_len, guint8 csrc_count);
|
GstBuffer* gst_rtp_buffer_new_allocate_len (guint packet_len, guint8 pad_len, guint8 csrc_count);
|
||||||
|
|
||||||
|
GstBufferList* gst_rtp_buffer_list_from_buffer (GstBuffer * buffer);
|
||||||
|
|
||||||
|
|
||||||
guint gst_rtp_buffer_calc_header_len (guint8 csrc_count);
|
guint gst_rtp_buffer_calc_header_len (guint8 csrc_count);
|
||||||
guint gst_rtp_buffer_calc_packet_len (guint payload_len, guint8 pad_len, guint8 csrc_count);
|
guint gst_rtp_buffer_calc_packet_len (guint payload_len, guint8 pad_len, guint8 csrc_count);
|
||||||
guint gst_rtp_buffer_calc_payload_len (guint packet_len, guint8 pad_len, guint8 csrc_count);
|
guint gst_rtp_buffer_calc_payload_len (guint packet_len, guint8 pad_len, guint8 csrc_count);
|
||||||
|
|
Loading…
Reference in a new issue