gst_rtcp_buffer_validate (GstBuffer * buffer)
{
gboolean res;
- GstMapInfo info;
+ GstMapInfo map;
g_return_val_if_fail (GST_IS_BUFFER (buffer), FALSE);
- gst_buffer_map (buffer, &info, GST_MAP_READ);
- res = gst_rtcp_buffer_validate_data (info.data, info.size);
- gst_buffer_unmap (buffer, &info);
+ gst_buffer_map (buffer, &map, GST_MAP_READ);
+ res = gst_rtcp_buffer_validate_data (map.data, map.size);
+ gst_buffer_unmap (buffer, &map);
return res;
}
g_return_val_if_fail (GST_IS_BUFFER (buffer), FALSE);
rtcp->buffer = buffer;
- rtcp->flags = flags;
- gst_buffer_map (buffer, &rtcp->info, flags);
+ gst_buffer_map (buffer, &rtcp->map, flags);
/* allow for expansion, e.g. adding packets, if needed */
if ((flags & GST_MAP_WRITE) != 0) {
/* adjust to max available */
- rtcp->info.size = rtcp->info.maxsize;
+ rtcp->map.size = rtcp->map.maxsize;
}
return TRUE;
/* shrink size */
gst_buffer_resize (rtcp->buffer, 0, packet.offset);
- gst_buffer_unmap (rtcp->buffer, &rtcp->info);
+ gst_buffer_unmap (rtcp->buffer, &rtcp->map);
rtcp->buffer = NULL;
return TRUE;
g_return_val_if_fail (packet != NULL, FALSE);
- data = packet->rtcp->info.data;
- size = packet->rtcp->info.size;
+ data = packet->rtcp->map.data;
+ size = packet->rtcp->map.size;
offset = packet->offset;
if (gst_rtcp_buffer_get_first_packet (rtcp, packet))
while (gst_rtcp_packet_move_to_next (packet));
- size = rtcp->info.size;
+ size = rtcp->map.size;
/* packet->offset is now pointing to the next free offset in the buffer to
* start a compount packet. Next we figure out if we have enough free space in
if (packet->offset + len >= size)
goto no_space;
- data = rtcp->info.data + packet->offset;
+ data = rtcp->map.data + packet->offset;
data[0] = (GST_RTCP_VERSION << 6);
data[1] = type;
offset = packet->offset + (packet->length << 2) + 4;
/* Overwrite this packet with the rest of the data */
- memmove (packet->rtcp->info.data + packet->offset,
- packet->rtcp->info.data + offset, packet->rtcp->info.size - offset);
+ memmove (packet->rtcp->map.data + packet->offset,
+ packet->rtcp->map.data + offset, packet->rtcp->map.size - offset);
/* try to read next header */
ret = read_packet_header (packet);
g_return_if_fail (packet != NULL);
g_return_if_fail (packet->type == GST_RTCP_TYPE_SR);
- data = packet->rtcp->info.data;
+ data = packet->rtcp->map.data;
/* skip header */
data += packet->offset + 4;
g_return_if_fail (packet != NULL);
g_return_if_fail (packet->type == GST_RTCP_TYPE_SR);
- data = packet->rtcp->info.data;
+ data = packet->rtcp->map.data;
/* skip header */
data += packet->offset + 4;
g_return_val_if_fail (packet != NULL, 0);
g_return_val_if_fail (packet->type == GST_RTCP_TYPE_RR, 0);
- data = packet->rtcp->info.data;
+ data = packet->rtcp->map.data;
/* skip header */
data += packet->offset + 4;
g_return_if_fail (packet != NULL);
g_return_if_fail (packet->type == GST_RTCP_TYPE_RR);
- data = packet->rtcp->info.data;
+ data = packet->rtcp->map.data;
/* skip header */
data += packet->offset + 4;
g_return_if_fail (packet->type == GST_RTCP_TYPE_RR ||
packet->type == GST_RTCP_TYPE_SR);
- data = packet->rtcp->info.data;
+ data = packet->rtcp->map.data;
/* skip header */
data += packet->offset + 4;
if (packet->count >= GST_RTCP_MAX_RB_COUNT)
goto no_space;
- data = packet->rtcp->info.data;
- size = packet->rtcp->info.size;
+ data = packet->rtcp->map.data;
+ size = packet->rtcp->map.size;
/* skip header */
offset = packet->offset + 4;
return FALSE;
/* move to SDES */
- data = packet->rtcp->info.data;
+ data = packet->rtcp->map.data;
data += packet->offset;
/* move to item */
offset = packet->item_offset;
g_return_val_if_fail (packet->type == GST_RTCP_TYPE_SDES, 0);
/* move to SDES */
- data = packet->rtcp->info.data;
+ data = packet->rtcp->map.data;
data += packet->offset;
/* move to item */
data += packet->item_offset;
g_return_val_if_fail (packet->type == GST_RTCP_TYPE_SDES, FALSE);
/* move to SDES */
- data = packet->rtcp->info.data;
+ data = packet->rtcp->map.data;
data += packet->offset;
/* move to item */
offset = packet->item_offset;
g_return_val_if_fail (packet->type == GST_RTCP_TYPE_SDES, FALSE);
/* move to SDES */
- data = packet->rtcp->info.data;
+ data = packet->rtcp->map.data;
data += packet->offset;
/* move to item */
offset = packet->item_offset;
g_return_val_if_fail (packet->type == GST_RTCP_TYPE_SDES, FALSE);
/* move to SDES */
- bdata = packet->rtcp->info.data;
+ bdata = packet->rtcp->map.data;
bdata += packet->offset;
/* move to item */
offset = packet->item_offset;
gst_rtcp_packet_sdes_next_item (packet);
/* move to SDES */
- data = packet->rtcp->info.data;
- size = packet->rtcp->info.size;
+ data = packet->rtcp->map.data;
+ size = packet->rtcp->map.size;
data += packet->offset;
/* move to current item */
offset = packet->item_offset;
g_return_val_if_fail (packet->type == GST_RTCP_TYPE_SDES, FALSE);
/* move to SDES */
- bdata = packet->rtcp->info.data;
- size = packet->rtcp->info.size;
+ bdata = packet->rtcp->map.data;
+ size = packet->rtcp->map.size;
bdata += packet->offset;
/* move to item */
offset = packet->item_offset;
offset += packet->offset;
/* check if the packet is valid */
- if (offset + 4 > packet->rtcp->info.size)
+ if (offset + 4 > packet->rtcp->map.size)
return 0;
- data = packet->rtcp->info.data;
+ data = packet->rtcp->map.data;
data += offset;
ssrc = GST_READ_UINT32_BE (data);
if (packet->count >= GST_RTCP_MAX_BYE_SSRC_COUNT)
goto no_space;
- data = packet->rtcp->info.data;
- size = packet->rtcp->info.size;
+ data = packet->rtcp->map.data;
+ size = packet->rtcp->map.size;
/* skip header */
offset = packet->offset + 4;
offset += packet->offset;
/* check if the packet is valid */
- if (offset + 1 > packet->rtcp->info.size)
+ if (offset + 1 > packet->rtcp->map.size)
return 0;
return offset;
if (roffset == 0)
return 0;
- data = packet->rtcp->info.data;
+ data = packet->rtcp->map.data;
return data[roffset];
}
if (roffset == 0)
return NULL;
- data = packet->rtcp->info.data;
+ data = packet->rtcp->map.data;
/* get length of reason string */
len = data[roffset];
roffset += 1;
/* check if enough data to copy */
- if (roffset + len > packet->rtcp->info.size)
+ if (roffset + len > packet->rtcp->map.size)
return NULL;
return g_strndup ((gconstpointer) (data + roffset), len);
if (roffset == 0)
goto no_space;
- data = packet->rtcp->info.data;
- size = packet->rtcp->info.size;
+ data = packet->rtcp->map.data;
+ size = packet->rtcp->map.size;
/* we have 1 byte length and we need to pad to 4 bytes */
padded = ((len + 1) + 3) & ~3;
g_return_val_if_fail ((packet->type == GST_RTCP_TYPE_RTPFB ||
packet->type == GST_RTCP_TYPE_PSFB), 0);
- data = packet->rtcp->info.data;
+ data = packet->rtcp->map.data;
/* skip header */
data += packet->offset + 4;
g_return_if_fail (packet->type == GST_RTCP_TYPE_RTPFB ||
packet->type == GST_RTCP_TYPE_PSFB);
- data = packet->rtcp->info.data;
+ data = packet->rtcp->map.data;
/* skip header */
data += packet->offset + 4;
g_return_val_if_fail ((packet->type == GST_RTCP_TYPE_RTPFB ||
packet->type == GST_RTCP_TYPE_PSFB), 0);
- data = packet->rtcp->info.data;
+ data = packet->rtcp->map.data;
/* skip header and sender ssrc */
data += packet->offset + 8;
g_return_if_fail (packet->type == GST_RTCP_TYPE_RTPFB ||
packet->type == GST_RTCP_TYPE_PSFB);
- data = packet->rtcp->info.data;
+ data = packet->rtcp->map.data;
/* skip header and sender ssrc */
data += packet->offset + 8;
g_return_if_fail (packet->type == GST_RTCP_TYPE_RTPFB ||
packet->type == GST_RTCP_TYPE_PSFB);
- data = packet->rtcp->info.data;
+ data = packet->rtcp->map.data;
data[packet->offset] = (data[packet->offset] & 0xe0) | type;
packet->count = type;
g_return_val_if_fail (packet->type == GST_RTCP_TYPE_RTPFB ||
packet->type == GST_RTCP_TYPE_PSFB, 0);
- data = packet->rtcp->info.data + packet->offset + 2;
+ data = packet->rtcp->map.data + packet->offset + 2;
return GST_READ_UINT16_BE (data) - 2;
}
g_return_val_if_fail (packet->type == GST_RTCP_TYPE_RTPFB ||
packet->type == GST_RTCP_TYPE_PSFB, FALSE);
- if (packet->rtcp->info.size < packet->offset + ((wordlen + 3) * 4))
+ if (packet->rtcp->map.size < packet->offset + ((wordlen + 3) * 4))
return FALSE;
- data = packet->rtcp->info.data + packet->offset + 2;
+ data = packet->rtcp->map.data + packet->offset + 2;
wordlen += 2;
GST_WRITE_UINT16_BE (data, wordlen);
g_return_val_if_fail (packet->type == GST_RTCP_TYPE_RTPFB ||
packet->type == GST_RTCP_TYPE_PSFB, NULL);
- data = packet->rtcp->info.data + packet->offset;
+ data = packet->rtcp->map.data + packet->offset;
if (GST_READ_UINT16_BE (data + 2) <= 2)
return NULL;
gst_rtp_buffer_allocate_data (GstBuffer * buffer, guint payload_len,
guint8 pad_len, guint8 csrc_count)
{
- GstMapInfo info;
+ GstMapInfo map;
GstMemory *mem;
gsize len;
mem = gst_allocator_alloc (NULL, len, 0);
- gst_memory_map (mem, &info, GST_MAP_WRITE);
+ gst_memory_map (mem, &map, GST_MAP_WRITE);
/* fill in defaults */
- GST_RTP_HEADER_VERSION (info.data) = GST_RTP_VERSION;
- GST_RTP_HEADER_PADDING (info.data) = FALSE;
- GST_RTP_HEADER_EXTENSION (info.data) = FALSE;
- GST_RTP_HEADER_CSRC_COUNT (info.data) = csrc_count;
- memset (GST_RTP_HEADER_CSRC_LIST_OFFSET (info.data, 0), 0,
+ GST_RTP_HEADER_VERSION (map.data) = GST_RTP_VERSION;
+ GST_RTP_HEADER_PADDING (map.data) = FALSE;
+ GST_RTP_HEADER_EXTENSION (map.data) = FALSE;
+ GST_RTP_HEADER_CSRC_COUNT (map.data) = csrc_count;
+ memset (GST_RTP_HEADER_CSRC_LIST_OFFSET (map.data, 0), 0,
csrc_count * sizeof (guint32));
- GST_RTP_HEADER_MARKER (info.data) = FALSE;
- GST_RTP_HEADER_PAYLOAD_TYPE (info.data) = 0;
- GST_RTP_HEADER_SEQ (info.data) = 0;
- GST_RTP_HEADER_TIMESTAMP (info.data) = 0;
- GST_RTP_HEADER_SSRC (info.data) = 0;
- gst_memory_unmap (mem, &info);
+ GST_RTP_HEADER_MARKER (map.data) = FALSE;
+ GST_RTP_HEADER_PAYLOAD_TYPE (map.data) = 0;
+ GST_RTP_HEADER_SEQ (map.data) = 0;
+ GST_RTP_HEADER_TIMESTAMP (map.data) = 0;
+ GST_RTP_HEADER_SSRC (map.data) = 0;
+ gst_memory_unmap (mem, &map);
gst_buffer_take_memory (buffer, -1, mem);
}
gst_rtp_buffer_validate (GstBuffer * buffer)
{
gboolean res;
- GstMapInfo info;
+ GstMapInfo map;
g_return_val_if_fail (GST_IS_BUFFER (buffer), FALSE);
- gst_buffer_map (buffer, &info, GST_MAP_READ);
- res = validate_data (info.data, info.size, NULL, 0);
- gst_buffer_unmap (buffer, &info);
+ gst_buffer_map (buffer, &map, GST_MAP_READ);
+ res = validate_data (map.data, map.size, NULL, 0);
+ gst_buffer_unmap (buffer, &map);
return res;
}
g_return_val_if_fail (rtp != NULL, FALSE);
g_return_val_if_fail (rtp->buffer == NULL, FALSE);
- if (!gst_buffer_map (buffer, &rtp->info, flags))
+ if (!gst_buffer_map (buffer, &rtp->map, flags))
return FALSE;
rtp->buffer = buffer;
- rtp->flags = flags;
return TRUE;
}
g_return_val_if_fail (rtp != NULL, FALSE);
g_return_val_if_fail (rtp->buffer != NULL, FALSE);
- gst_buffer_unmap (rtp->buffer, &rtp->info);
+ gst_buffer_unmap (rtp->buffer, &rtp->map);
rtp->buffer = NULL;
return TRUE;
{
guint8 *data;
- data = rtp->info.data;
+ data = rtp->map.data;
- if (rtp->info.maxsize <= len) {
+ if (rtp->map.maxsize <= len) {
/* FIXME, realloc bigger space */
g_warning ("not implemented");
}
gst_buffer_set_size (rtp->buffer, len);
- rtp->info.size = len;
+ rtp->map.size = len;
/* remove any padding */
GST_RTP_HEADER_PADDING (data) = FALSE;
guint len;
guint8 *data;
- data = rtp->info.data;
+ data = rtp->map.data;
len = GST_RTP_HEADER_LEN + GST_RTP_HEADER_CSRC_SIZE (data);
if (GST_RTP_HEADER_EXTENSION (data))
guint8
gst_rtp_buffer_get_version (GstRTPBuffer * rtp)
{
- return GST_RTP_HEADER_VERSION (rtp->info.data);
+ return GST_RTP_HEADER_VERSION (rtp->map.data);
}
/**
{
g_return_if_fail (version < 0x04);
- GST_RTP_HEADER_VERSION (rtp->info.data) = version;
+ GST_RTP_HEADER_VERSION (rtp->map.data) = version;
}
/**
gboolean
gst_rtp_buffer_get_padding (GstRTPBuffer * rtp)
{
- return GST_RTP_HEADER_PADDING (rtp->info.data);
+ return GST_RTP_HEADER_PADDING (rtp->map.data);
}
/**
void
gst_rtp_buffer_set_padding (GstRTPBuffer * rtp, gboolean padding)
{
- GST_RTP_HEADER_PADDING (rtp->info.data) = padding;
+ GST_RTP_HEADER_PADDING (rtp->map.data) = padding;
}
/**
{
guint8 *data;
- data = rtp->info.data;
+ data = rtp->map.data;
if (len > 0)
GST_RTP_HEADER_PADDING (data) = TRUE;
gboolean
gst_rtp_buffer_get_extension (GstRTPBuffer * rtp)
{
- return GST_RTP_HEADER_EXTENSION (rtp->info.data);
+ return GST_RTP_HEADER_EXTENSION (rtp->map.data);
}
/**
void
gst_rtp_buffer_set_extension (GstRTPBuffer * rtp, gboolean extension)
{
- GST_RTP_HEADER_EXTENSION (rtp->info.data) = extension;
+ GST_RTP_HEADER_EXTENSION (rtp->map.data) = extension;
}
/**
guint len;
guint8 *pdata;
- pdata = rtp->info.data;
+ pdata = rtp->map.data;
if (!GST_RTP_HEADER_EXTENSION (pdata))
return FALSE;
guint32 min_size = 0;
guint8 *data;
- data = rtp->info.data;
+ data = rtp->map.data;
/* check if the buffer is big enough to hold the extension */
min_size =
GST_RTP_HEADER_LEN + GST_RTP_HEADER_CSRC_SIZE (data) + 4 +
length * sizeof (guint32);
- if (G_UNLIKELY (min_size > rtp->info.size))
+ if (G_UNLIKELY (min_size > rtp->map.size))
goto too_small;
/* now we can set the extension bit */
- GST_RTP_HEADER_EXTENSION (rtp->info.data) = TRUE;
+ GST_RTP_HEADER_EXTENSION (rtp->map.data) = TRUE;
data += GST_RTP_HEADER_LEN + GST_RTP_HEADER_CSRC_SIZE (data);
GST_WRITE_UINT16_BE (data, bits);
{
g_warning
("rtp buffer too small: need more than %d bytes but only have %"
- G_GSIZE_FORMAT " bytes", min_size, rtp->info.size);
+ G_GSIZE_FORMAT " bytes", min_size, rtp->map.size);
return FALSE;
}
}
guint32
gst_rtp_buffer_get_ssrc (GstRTPBuffer * rtp)
{
- return g_ntohl (GST_RTP_HEADER_SSRC (rtp->info.data));
+ return g_ntohl (GST_RTP_HEADER_SSRC (rtp->map.data));
}
/**
void
gst_rtp_buffer_set_ssrc (GstRTPBuffer * rtp, guint32 ssrc)
{
- GST_RTP_HEADER_SSRC (rtp->info.data) = g_htonl (ssrc);
+ GST_RTP_HEADER_SSRC (rtp->map.data) = g_htonl (ssrc);
}
/**
guint8
gst_rtp_buffer_get_csrc_count (GstRTPBuffer * rtp)
{
- return GST_RTP_HEADER_CSRC_COUNT (rtp->info.data);
+ return GST_RTP_HEADER_CSRC_COUNT (rtp->map.data);
}
/**
{
guint8 *data;
- data = rtp->info.data;
+ data = rtp->map.data;
g_return_val_if_fail (idx < GST_RTP_HEADER_CSRC_COUNT (data), 0);
{
guint8 *data;
- data = rtp->info.data;
+ data = rtp->map.data;
g_return_if_fail (idx < GST_RTP_HEADER_CSRC_COUNT (data));
gboolean
gst_rtp_buffer_get_marker (GstRTPBuffer * rtp)
{
- return GST_RTP_HEADER_MARKER (rtp->info.data);
+ return GST_RTP_HEADER_MARKER (rtp->map.data);
}
/**
void
gst_rtp_buffer_set_marker (GstRTPBuffer * rtp, gboolean marker)
{
- GST_RTP_HEADER_MARKER (rtp->info.data) = marker;
+ GST_RTP_HEADER_MARKER (rtp->map.data) = marker;
}
/**
guint8
gst_rtp_buffer_get_payload_type (GstRTPBuffer * rtp)
{
- return GST_RTP_HEADER_PAYLOAD_TYPE (rtp->info.data);
+ return GST_RTP_HEADER_PAYLOAD_TYPE (rtp->map.data);
}
/**
{
g_return_if_fail (payload_type < 0x80);
- GST_RTP_HEADER_PAYLOAD_TYPE (rtp->info.data) = payload_type;
+ GST_RTP_HEADER_PAYLOAD_TYPE (rtp->map.data) = payload_type;
}
/**
guint16
gst_rtp_buffer_get_seq (GstRTPBuffer * rtp)
{
- return g_ntohs (GST_RTP_HEADER_SEQ (rtp->info.data));
+ return g_ntohs (GST_RTP_HEADER_SEQ (rtp->map.data));
}
/**
void
gst_rtp_buffer_set_seq (GstRTPBuffer * rtp, guint16 seq)
{
- GST_RTP_HEADER_SEQ (rtp->info.data) = g_htons (seq);
+ GST_RTP_HEADER_SEQ (rtp->map.data) = g_htons (seq);
}
/**
guint32
gst_rtp_buffer_get_timestamp (GstRTPBuffer * rtp)
{
- return g_ntohl (GST_RTP_HEADER_TIMESTAMP (rtp->info.data));
+ return g_ntohl (GST_RTP_HEADER_TIMESTAMP (rtp->map.data));
}
/**
void
gst_rtp_buffer_set_timestamp (GstRTPBuffer * rtp, guint32 timestamp)
{
- GST_RTP_HEADER_TIMESTAMP (rtp->info.data) = g_htonl (timestamp);
+ GST_RTP_HEADER_TIMESTAMP (rtp->map.data) = g_htonl (timestamp);
}
guint len, size;
guint8 *data;
- size = rtp->info.size;
- data = rtp->info.data;
+ size = rtp->map.size;
+ data = rtp->map.data;
len = size - gst_rtp_buffer_get_header_len (rtp);
gpointer
gst_rtp_buffer_get_payload (GstRTPBuffer * rtp)
{
- return rtp->info.data + gst_rtp_buffer_get_header_len (rtp);
+ return rtp->map.data + gst_rtp_buffer_get_header_len (rtp);
}
/**
return FALSE;
nextext = pdata + offset;
- offset = nextext - rtp->info.data;
+ offset = nextext - rtp->map.data;
/* Don't add extra header if there isn't enough space */
- if (rtp->info.size < offset + size + 1)
+ if (rtp->map.size < offset + size + 1)
return FALSE;
nextext[0] = (id << 4) | (0x0F & (size - 1));
nextext = pdata + offset;
- offset = nextext - rtp->info.data;
+ offset = nextext - rtp->map.data;
/* Don't add extra header if there isn't enough space */
- if (rtp->info.size < offset + size + 2)
+ if (rtp->map.size < offset + size + 2)
return FALSE;
nextext[0] = id;