summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian.droege@collabora.co.uk>2009-10-03 15:57:07 +0200
committerSebastian Dröge <sebastian.droege@collabora.co.uk>2009-10-07 17:59:51 +0200
commitf4c12be109acf85dd1585477618f47463071dd8a (patch)
tree1eaa0a61761ca42a92f0f3b0bca8917e39d032cc
parentc7438c738b553bf38625dc98bbb59425ab0d8871 (diff)
bitreader/bytereader: API: Add gst_(bit|byte)_reader_get_size()
... and GST_(BYTE|BIT)_READER() casts.
-rw-r--r--libs/gst/base/gstbitreader.c18
-rw-r--r--libs/gst/base/gstbitreader.h4
-rw-r--r--libs/gst/base/gstbytereader.c19
-rw-r--r--libs/gst/base/gstbytereader.h13
4 files changed, 54 insertions, 0 deletions
diff --git a/libs/gst/base/gstbitreader.c b/libs/gst/base/gstbitreader.c
index e25a2b41b2..6a718628ce 100644
--- a/libs/gst/base/gstbitreader.c
+++ b/libs/gst/base/gstbitreader.c
@@ -198,6 +198,24 @@ gst_bit_reader_get_remaining (const GstBitReader * reader)
}
/**
+ * gst_bit_reader_get_size:
+ * @reader: a #GstBitReader instance
+ *
+ * Returns the total number of bits of a #GstBitReader instance.
+ *
+ * Returns: The total number of bits of @reader instance.
+ *
+ * Since: 0.10.25
+ */
+guint
+gst_bit_reader_get_size (const GstBitReader * reader)
+{
+ g_return_val_if_fail (reader != NULL, 0);
+
+ return reader->size * 8;
+}
+
+/**
* gst_bit_reader_skip:
* @reader: a #GstBitReader instance
* @nbits: the number of bits to skip
diff --git a/libs/gst/base/gstbitreader.h b/libs/gst/base/gstbitreader.h
index a6a0e35b02..6c4b1d7784 100644
--- a/libs/gst/base/gstbitreader.h
+++ b/libs/gst/base/gstbitreader.h
@@ -27,6 +27,8 @@
G_BEGIN_DECLS
+#define GST_BIT_READER(reader) ((GstBitReader *) (reader))
+
/**
* GstBitReader:
* @data: Data from which the bit reader will read
@@ -56,6 +58,8 @@ gboolean gst_bit_reader_set_pos (GstBitReader *reader, guint pos);
guint gst_bit_reader_get_pos (const GstBitReader *reader);
guint gst_bit_reader_get_remaining (const GstBitReader *reader);
+guint gst_bit_reader_get_size (const GstBitReader *reader);
+
gboolean gst_bit_reader_skip (GstBitReader *reader, guint nbits);
gboolean gst_bit_reader_skip_to_byte (GstBitReader *reader);
diff --git a/libs/gst/base/gstbytereader.c b/libs/gst/base/gstbytereader.c
index c0980e4162..592887a224 100644
--- a/libs/gst/base/gstbytereader.c
+++ b/libs/gst/base/gstbytereader.c
@@ -202,7 +202,26 @@ gst_byte_reader_get_remaining (const GstByteReader * reader)
return _gst_byte_reader_get_remaining_inline (reader);
}
+/**
+ * gst_byte_reader_get_size:
+ * @reader: a #GstByteReader instance
+ *
+ * Returns the total number of bytes of a #GstByteReader instance.
+ *
+ * Returns: The total number of bytes of @reader instance.
+ *
+ * Since: 0.10.25
+ */
+guint
+gst_byte_reader_get_size (const GstByteReader * reader)
+{
+ g_return_val_if_fail (reader != NULL, 0);
+
+ return _gst_byte_reader_get_size_inline (reader);
+}
+
#define gst_byte_reader_get_remaining _gst_byte_reader_get_remaining_inline
+#define gst_byte_reader_get_size _gst_byte_reader_get_size_inline
/**
* gst_byte_reader_skip:
diff --git a/libs/gst/base/gstbytereader.h b/libs/gst/base/gstbytereader.h
index 08c7f84f7e..e3f2db2bc4 100644
--- a/libs/gst/base/gstbytereader.h
+++ b/libs/gst/base/gstbytereader.h
@@ -26,6 +26,8 @@
G_BEGIN_DECLS
+#define GST_BYTE_READER(reader) ((GstByteReader *) (reader))
+
/**
* GstByteReader:
* @data: Data from which the bit reader will read
@@ -53,6 +55,8 @@ gboolean gst_byte_reader_set_pos (GstByteReader *reader, guint pos);
guint gst_byte_reader_get_pos (const GstByteReader *reader);
guint gst_byte_reader_get_remaining (const GstByteReader *reader);
+guint gst_byte_reader_get_size (const GstByteReader *reader);
+
gboolean gst_byte_reader_skip (GstByteReader *reader, guint nbytes);
gboolean gst_byte_reader_get_uint8 (GstByteReader *reader, guint8 *val);
@@ -254,6 +258,12 @@ _gst_byte_reader_get_remaining_inline (const GstByteReader * reader)
return reader->size - reader->byte;
}
+static inline guint
+_gst_byte_reader_get_size_inline (const GstByteReader * reader)
+{
+ return reader->size;
+}
+
#define __GST_BYTE_READER_GET_PEEK_BITS_INLINE(bits,type,name) \
\
static inline gboolean \
@@ -311,6 +321,9 @@ __GST_BYTE_READER_GET_PEEK_BITS_INLINE(64,gdouble,float64_be)
#define gst_byte_reader_get_remaining(reader) \
_gst_byte_reader_get_remaining_inline(reader)
+#define gst_byte_reader_get_size(reader) \
+ _gst_byte_reader_get_size_inline(reader)
+
/* we use defines here so we can add the G_LIKELY() */
#define gst_byte_reader_get_uint8(reader,val) \
G_LIKELY(_gst_byte_reader_get_uint8_inline(reader,val))