diff options
author | Wim Taymans <wim.taymans@gmail.com> | 2008-11-13 15:37:40 +0000 |
---|---|---|
committer | Wim Taymans <wim.taymans@gmail.com> | 2008-11-13 15:37:40 +0000 |
commit | 9c32e1f152eebc5b0e876536e796a393a222729a (patch) | |
tree | 06ebb342a84c1a7935775976333b6a07e72d212b | |
parent | c98d4a5031636dfa1cb18777025b7479855fe4e6 (diff) |
gst-libs/gst/rtp/gstrtpbuffer.c: Avoid expensive type checks we already did as part of the _validate() function that ...
Original commit message from CVS:
* gst-libs/gst/rtp/gstrtpbuffer.c: (gst_rtp_buffer_validate_data),
(gst_rtp_buffer_set_packet_len), (gst_rtp_buffer_get_packet_len),
(gst_rtp_buffer_get_header_len), (gst_rtp_buffer_get_version),
(gst_rtp_buffer_set_version), (gst_rtp_buffer_get_padding),
(gst_rtp_buffer_set_padding), (gst_rtp_buffer_pad_to),
(gst_rtp_buffer_get_extension), (gst_rtp_buffer_set_extension),
(gst_rtp_buffer_get_extension_data),
(gst_rtp_buffer_set_extension_data), (gst_rtp_buffer_get_ssrc),
(gst_rtp_buffer_set_ssrc), (gst_rtp_buffer_get_csrc_count),
(gst_rtp_buffer_get_csrc), (gst_rtp_buffer_set_csrc),
(gst_rtp_buffer_get_marker), (gst_rtp_buffer_set_marker),
(gst_rtp_buffer_get_payload_type),
(gst_rtp_buffer_set_payload_type), (gst_rtp_buffer_get_seq),
(gst_rtp_buffer_set_seq), (gst_rtp_buffer_get_timestamp),
(gst_rtp_buffer_set_timestamp),
(gst_rtp_buffer_get_payload_subbuffer),
(gst_rtp_buffer_get_payload_len), (gst_rtp_buffer_get_payload):
Avoid expensive type checks we already did as part of the
_validate() function that should be called first.
-rw-r--r-- | ChangeLog | 22 | ||||
-rw-r--r-- | gst-libs/gst/rtp/gstrtpbuffer.c | 83 |
2 files changed, 26 insertions, 79 deletions
@@ -1,3 +1,25 @@ +2008-11-13 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst-libs/gst/rtp/gstrtpbuffer.c: (gst_rtp_buffer_validate_data), + (gst_rtp_buffer_set_packet_len), (gst_rtp_buffer_get_packet_len), + (gst_rtp_buffer_get_header_len), (gst_rtp_buffer_get_version), + (gst_rtp_buffer_set_version), (gst_rtp_buffer_get_padding), + (gst_rtp_buffer_set_padding), (gst_rtp_buffer_pad_to), + (gst_rtp_buffer_get_extension), (gst_rtp_buffer_set_extension), + (gst_rtp_buffer_get_extension_data), + (gst_rtp_buffer_set_extension_data), (gst_rtp_buffer_get_ssrc), + (gst_rtp_buffer_set_ssrc), (gst_rtp_buffer_get_csrc_count), + (gst_rtp_buffer_get_csrc), (gst_rtp_buffer_set_csrc), + (gst_rtp_buffer_get_marker), (gst_rtp_buffer_set_marker), + (gst_rtp_buffer_get_payload_type), + (gst_rtp_buffer_set_payload_type), (gst_rtp_buffer_get_seq), + (gst_rtp_buffer_set_seq), (gst_rtp_buffer_get_timestamp), + (gst_rtp_buffer_set_timestamp), + (gst_rtp_buffer_get_payload_subbuffer), + (gst_rtp_buffer_get_payload_len), (gst_rtp_buffer_get_payload): + Avoid expensive type checks we already did as part of the + _validate() function that should be called first. + 2008-11-11 Wim Taymans <wim.taymans@collabora.co.uk> * gst-libs/gst/rtp/gstbasertpdepayload.c: (create_segment_event), diff --git a/gst-libs/gst/rtp/gstrtpbuffer.c b/gst-libs/gst/rtp/gstrtpbuffer.c index b7b7b535..b4fe1ace 100644 --- a/gst-libs/gst/rtp/gstrtpbuffer.c +++ b/gst-libs/gst/rtp/gstrtpbuffer.c @@ -310,8 +310,8 @@ gst_rtp_buffer_validate_data (guint8 * data, guint len) goto wrong_length; /* check version */ - version = (data[0] & 0xc0) >> 6; - if (G_UNLIKELY (version != GST_RTP_VERSION)) + version = (data[0] & 0xc0); + if (G_UNLIKELY (version != (GST_RTP_VERSION << 6))) goto wrong_version; /* calc header length with csrc */ @@ -375,6 +375,8 @@ wrong_padding: * * Check if the data pointed to by @buffer is a valid RTP packet using * gst_rtp_buffer_validate_data(). + * Use this function to validate a packet before using the other functions in + * this module. * * Returns: TRUE if @buffer is a valid RTP packet. */ @@ -405,8 +407,6 @@ gst_rtp_buffer_set_packet_len (GstBuffer * buffer, guint len) { guint oldlen; - g_return_if_fail (GST_IS_BUFFER (buffer)); - oldlen = GST_BUFFER_SIZE (buffer); if (oldlen < len) { @@ -433,8 +433,6 @@ gst_rtp_buffer_set_packet_len (GstBuffer * buffer, guint len) guint gst_rtp_buffer_get_packet_len (GstBuffer * buffer) { - g_return_val_if_fail (GST_IS_BUFFER (buffer), 0); - return GST_BUFFER_SIZE (buffer); } @@ -452,8 +450,6 @@ gst_rtp_buffer_get_header_len (GstBuffer * buffer) { guint len; - g_return_val_if_fail (GST_IS_BUFFER (buffer), 0); - len = GST_RTP_HEADER_LEN + GST_RTP_HEADER_CSRC_SIZE (buffer); if (GST_RTP_HEADER_EXTENSION (buffer)) len += GST_READ_UINT16_BE (GST_BUFFER_DATA (buffer) + len + 2) * 4 + 4; @@ -472,9 +468,6 @@ gst_rtp_buffer_get_header_len (GstBuffer * buffer) guint8 gst_rtp_buffer_get_version (GstBuffer * buffer) { - g_return_val_if_fail (GST_IS_BUFFER (buffer), 0); - g_return_val_if_fail (GST_BUFFER_DATA (buffer) != NULL, 0); - return GST_RTP_HEADER_VERSION (buffer); } @@ -488,9 +481,7 @@ gst_rtp_buffer_get_version (GstBuffer * buffer) void gst_rtp_buffer_set_version (GstBuffer * buffer, guint8 version) { - g_return_if_fail (GST_IS_BUFFER (buffer)); g_return_if_fail (version < 0x04); - g_return_if_fail (GST_BUFFER_DATA (buffer) != NULL); GST_RTP_HEADER_VERSION (buffer) = version; } @@ -506,9 +497,6 @@ gst_rtp_buffer_set_version (GstBuffer * buffer, guint8 version) gboolean gst_rtp_buffer_get_padding (GstBuffer * buffer) { - g_return_val_if_fail (GST_IS_BUFFER (buffer), FALSE); - g_return_val_if_fail (GST_BUFFER_DATA (buffer) != NULL, FALSE); - return GST_RTP_HEADER_PADDING (buffer); } @@ -522,9 +510,6 @@ gst_rtp_buffer_get_padding (GstBuffer * buffer) void gst_rtp_buffer_set_padding (GstBuffer * buffer, gboolean padding) { - g_return_if_fail (GST_IS_BUFFER (buffer)); - g_return_if_fail (GST_BUFFER_DATA (buffer) != NULL); - GST_RTP_HEADER_PADDING (buffer) = padding; } @@ -541,9 +526,6 @@ gst_rtp_buffer_set_padding (GstBuffer * buffer, gboolean padding) void gst_rtp_buffer_pad_to (GstBuffer * buffer, guint len) { - g_return_if_fail (GST_IS_BUFFER (buffer)); - g_return_if_fail (GST_BUFFER_DATA (buffer) != NULL); - if (len > 0) GST_RTP_HEADER_PADDING (buffer) = TRUE; else @@ -563,9 +545,6 @@ gst_rtp_buffer_pad_to (GstBuffer * buffer, guint len) gboolean gst_rtp_buffer_get_extension (GstBuffer * buffer) { - g_return_val_if_fail (GST_IS_BUFFER (buffer), FALSE); - g_return_val_if_fail (GST_BUFFER_DATA (buffer) != NULL, FALSE); - return GST_RTP_HEADER_EXTENSION (buffer); } @@ -579,9 +558,6 @@ gst_rtp_buffer_get_extension (GstBuffer * buffer) void gst_rtp_buffer_set_extension (GstBuffer * buffer, gboolean extension) { - g_return_if_fail (GST_IS_BUFFER (buffer)); - g_return_if_fail (GST_BUFFER_DATA (buffer) != NULL); - GST_RTP_HEADER_EXTENSION (buffer) = extension; } @@ -610,9 +586,6 @@ gst_rtp_buffer_get_extension_data (GstBuffer * buffer, guint16 * bits, guint len; guint8 *pdata; - g_return_val_if_fail (GST_IS_BUFFER (buffer), FALSE); - g_return_val_if_fail (GST_BUFFER_DATA (buffer) != NULL, FALSE); - if (!GST_RTP_HEADER_EXTENSION (buffer)) return FALSE; @@ -652,9 +625,6 @@ gst_rtp_buffer_set_extension_data (GstBuffer * buffer, guint16 bits, guint32 min_size = 0; guint8 *data; - g_return_val_if_fail (GST_IS_BUFFER (buffer), FALSE); - g_return_val_if_fail (GST_BUFFER_DATA (buffer) != NULL, FALSE); - /* check if the buffer is big enough to hold the extension */ min_size = GST_RTP_HEADER_LEN + GST_RTP_HEADER_CSRC_SIZE (buffer) + 4 + @@ -693,9 +663,6 @@ too_small: guint32 gst_rtp_buffer_get_ssrc (GstBuffer * buffer) { - g_return_val_if_fail (GST_IS_BUFFER (buffer), 0); - g_return_val_if_fail (GST_BUFFER_DATA (buffer) != NULL, 0); - return g_ntohl (GST_RTP_HEADER_SSRC (buffer)); } @@ -709,9 +676,6 @@ gst_rtp_buffer_get_ssrc (GstBuffer * buffer) void gst_rtp_buffer_set_ssrc (GstBuffer * buffer, guint32 ssrc) { - g_return_if_fail (GST_IS_BUFFER (buffer)); - g_return_if_fail (GST_BUFFER_DATA (buffer) != NULL); - GST_RTP_HEADER_SSRC (buffer) = g_htonl (ssrc); } @@ -726,9 +690,6 @@ gst_rtp_buffer_set_ssrc (GstBuffer * buffer, guint32 ssrc) guint8 gst_rtp_buffer_get_csrc_count (GstBuffer * buffer) { - g_return_val_if_fail (GST_IS_BUFFER (buffer), 0); - g_return_val_if_fail (GST_BUFFER_DATA (buffer) != NULL, 0); - return GST_RTP_HEADER_CSRC_COUNT (buffer); } @@ -744,8 +705,6 @@ gst_rtp_buffer_get_csrc_count (GstBuffer * buffer) guint32 gst_rtp_buffer_get_csrc (GstBuffer * buffer, guint8 idx) { - g_return_val_if_fail (GST_IS_BUFFER (buffer), 0); - g_return_val_if_fail (GST_BUFFER_DATA (buffer) != NULL, 0); g_return_val_if_fail (idx < GST_RTP_HEADER_CSRC_COUNT (buffer), 0); return GST_READ_UINT32_BE (GST_RTP_HEADER_CSRC_LIST_OFFSET (buffer, idx)); @@ -762,8 +721,6 @@ gst_rtp_buffer_get_csrc (GstBuffer * buffer, guint8 idx) void gst_rtp_buffer_set_csrc (GstBuffer * buffer, guint8 idx, guint32 csrc) { - g_return_if_fail (GST_IS_BUFFER (buffer)); - g_return_if_fail (GST_BUFFER_DATA (buffer) != NULL); g_return_if_fail (idx < GST_RTP_HEADER_CSRC_COUNT (buffer)); GST_WRITE_UINT32_BE (GST_RTP_HEADER_CSRC_LIST_OFFSET (buffer, idx), csrc); @@ -780,9 +737,6 @@ gst_rtp_buffer_set_csrc (GstBuffer * buffer, guint8 idx, guint32 csrc) gboolean gst_rtp_buffer_get_marker (GstBuffer * buffer) { - g_return_val_if_fail (GST_IS_BUFFER (buffer), FALSE); - g_return_val_if_fail (GST_BUFFER_DATA (buffer) != NULL, FALSE); - return GST_RTP_HEADER_MARKER (buffer); } @@ -796,9 +750,6 @@ gst_rtp_buffer_get_marker (GstBuffer * buffer) void gst_rtp_buffer_set_marker (GstBuffer * buffer, gboolean marker) { - g_return_if_fail (GST_IS_BUFFER (buffer)); - g_return_if_fail (GST_BUFFER_DATA (buffer) != NULL); - GST_RTP_HEADER_MARKER (buffer) = marker; } @@ -813,9 +764,6 @@ gst_rtp_buffer_set_marker (GstBuffer * buffer, gboolean marker) guint8 gst_rtp_buffer_get_payload_type (GstBuffer * buffer) { - g_return_val_if_fail (GST_IS_BUFFER (buffer), 0); - g_return_val_if_fail (GST_BUFFER_DATA (buffer) != NULL, 0); - return GST_RTP_HEADER_PAYLOAD_TYPE (buffer); } @@ -829,8 +777,6 @@ gst_rtp_buffer_get_payload_type (GstBuffer * buffer) void gst_rtp_buffer_set_payload_type (GstBuffer * buffer, guint8 payload_type) { - g_return_if_fail (GST_IS_BUFFER (buffer)); - g_return_if_fail (GST_BUFFER_DATA (buffer) != NULL); g_return_if_fail (payload_type < 0x80); GST_RTP_HEADER_PAYLOAD_TYPE (buffer) = payload_type; @@ -847,9 +793,6 @@ gst_rtp_buffer_set_payload_type (GstBuffer * buffer, guint8 payload_type) guint16 gst_rtp_buffer_get_seq (GstBuffer * buffer) { - g_return_val_if_fail (GST_IS_BUFFER (buffer), 0); - g_return_val_if_fail (GST_BUFFER_DATA (buffer) != NULL, 0); - return g_ntohs (GST_RTP_HEADER_SEQ (buffer)); } @@ -863,9 +806,6 @@ gst_rtp_buffer_get_seq (GstBuffer * buffer) void gst_rtp_buffer_set_seq (GstBuffer * buffer, guint16 seq) { - g_return_if_fail (GST_IS_BUFFER (buffer)); - g_return_if_fail (GST_BUFFER_DATA (buffer) != NULL); - GST_RTP_HEADER_SEQ (buffer) = g_htons (seq); } @@ -880,9 +820,6 @@ gst_rtp_buffer_set_seq (GstBuffer * buffer, guint16 seq) guint32 gst_rtp_buffer_get_timestamp (GstBuffer * buffer) { - g_return_val_if_fail (GST_IS_BUFFER (buffer), 0); - g_return_val_if_fail (GST_BUFFER_DATA (buffer) != NULL, 0); - return g_ntohl (GST_RTP_HEADER_TIMESTAMP (buffer)); } @@ -896,9 +833,6 @@ gst_rtp_buffer_get_timestamp (GstBuffer * buffer) void gst_rtp_buffer_set_timestamp (GstBuffer * buffer, guint32 timestamp) { - g_return_if_fail (GST_IS_BUFFER (buffer)); - g_return_if_fail (GST_BUFFER_DATA (buffer) != NULL); - GST_RTP_HEADER_TIMESTAMP (buffer) = g_htonl (timestamp); } @@ -922,9 +856,6 @@ gst_rtp_buffer_get_payload_subbuffer (GstBuffer * buffer, guint offset, { guint poffset, plen; - g_return_val_if_fail (GST_IS_BUFFER (buffer), NULL); - g_return_val_if_fail (GST_BUFFER_DATA (buffer) != NULL, NULL); - plen = gst_rtp_buffer_get_payload_len (buffer); /* we can't go past the length */ if (G_UNLIKELY (offset >= plen)) @@ -977,9 +908,6 @@ gst_rtp_buffer_get_payload_len (GstBuffer * buffer) { guint len, size; - g_return_val_if_fail (GST_IS_BUFFER (buffer), 0); - g_return_val_if_fail (GST_BUFFER_DATA (buffer) != NULL, 0); - size = GST_BUFFER_SIZE (buffer); len = size - gst_rtp_buffer_get_header_len (buffer); @@ -1002,9 +930,6 @@ gst_rtp_buffer_get_payload_len (GstBuffer * buffer) gpointer gst_rtp_buffer_get_payload (GstBuffer * buffer) { - g_return_val_if_fail (GST_IS_BUFFER (buffer), NULL); - g_return_val_if_fail (GST_BUFFER_DATA (buffer) != NULL, NULL); - return GST_BUFFER_DATA (buffer) + gst_rtp_buffer_get_header_len (buffer); } |