h264parser: Remove un-needed checks and inline some functions

val and nr always exist (&nr, &value)
bits is always called smaller than the width

Makes parsing 30% faster
This commit is contained in:
Edward Hervey 2012-06-05 17:57:41 +02:00 committed by Sebastian Dröge
parent 4cc905409e
commit 7d4f1aa8e8

View file

@ -188,7 +188,7 @@ nal_reader_init (NalReader * nr, const guint8 * data, guint size)
nr->cache = 0xff; nr->cache = 0xff;
} }
static gboolean static inline gboolean
nal_reader_read (NalReader * nr, guint nbits) nal_reader_read (NalReader * nr, guint nbits)
{ {
if (G_UNLIKELY (nr->byte * 8 + (nbits - nr->bits_in_cache) > nr->size * 8)) { if (G_UNLIKELY (nr->byte * 8 + (nbits - nr->bits_in_cache) > nr->size * 8)) {
@ -227,8 +227,6 @@ nal_reader_read (NalReader * nr, guint nbits)
static inline gboolean static inline gboolean
nal_reader_skip (NalReader * nr, guint nbits) nal_reader_skip (NalReader * nr, guint nbits)
{ {
g_return_val_if_fail (nr != NULL, FALSE);
if (G_UNLIKELY (!nal_reader_read (nr, nbits))) if (G_UNLIKELY (!nal_reader_read (nr, nbits)))
return FALSE; return FALSE;
@ -240,8 +238,6 @@ nal_reader_skip (NalReader * nr, guint nbits)
static inline gboolean static inline gboolean
nal_reader_skip_to_byte (NalReader * nr) nal_reader_skip_to_byte (NalReader * nr)
{ {
g_return_val_if_fail (nr != NULL, FALSE);
if (nr->bits_in_cache == 0) { if (nr->bits_in_cache == 0) {
if (G_LIKELY ((nr->size - nr->byte) > 0)) if (G_LIKELY ((nr->size - nr->byte) > 0))
nr->byte++; nr->byte++;
@ -278,10 +274,6 @@ nal_reader_get_bits_uint##bits (NalReader *nr, guint##bits *val, guint nbits) \
{ \ { \
guint shift; \ guint shift; \
\ \
g_return_val_if_fail (nr != NULL, FALSE); \
g_return_val_if_fail (val != NULL, FALSE); \
g_return_val_if_fail (nbits <= bits, FALSE); \
\
if (!nal_reader_read (nr, nbits)) \ if (!nal_reader_read (nr, nbits)) \
return FALSE; \ return FALSE; \
\ \
@ -309,7 +301,6 @@ nal_reader_peek_bits_uint##bits (const NalReader *nr, guint##bits *val, guint nb
{ \ { \
NalReader tmp; \ NalReader tmp; \
\ \
g_return_val_if_fail (nr != NULL, FALSE); \
tmp = *nr; \ tmp = *nr; \
return nal_reader_get_bits_uint##bits (&tmp, val, nbits); \ return nal_reader_get_bits_uint##bits (&tmp, val, nbits); \
} }
@ -345,7 +336,7 @@ nal_reader_get_ue (NalReader * nr, guint32 * val)
return TRUE; return TRUE;
} }
static gboolean static inline gboolean
nal_reader_get_se (NalReader * nr, gint32 * val) nal_reader_get_se (NalReader * nr, gint32 * val)
{ {
guint32 value; guint32 value;