From a5626f239a403dfdb97fd9e068872d122b152659 Mon Sep 17 00:00:00 2001 From: Edward Hervey Date: Mon, 7 Dec 2009 09:45:00 +0100 Subject: [PATCH] gstvalue: Use fast gst_value_list_{size|get_value} macro accessors gst_value_list_size and gst_value_list_get_value will do a series of extra checks due to being public methods. When we use them from within gstvalue.c we can directly use them without the extra checks. --- gst/gstvalue.c | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/gst/gstvalue.c b/gst/gstvalue.c index e6d7921..ad5b78a 100644 --- a/gst/gstvalue.c +++ b/gst/gstvalue.c @@ -74,6 +74,9 @@ struct _GstValueSubtractInfo #define FUNDAMENTAL_TYPE_ID(type) \ ((type) >> G_TYPE_FUNDAMENTAL_SHIFT) +#define VALUE_LIST_SIZE(v) (((GArray *) (v)->data[0].v_pointer)->len) +#define VALUE_LIST_GET_VALUE(v, index) ((const GValue *) &g_array_index ((GArray *) (v)->data[0].v_pointer, GValue, (index))) + static GArray *gst_value_table; static GHashTable *gst_value_hash; static GstValueTable *gst_value_tables_fundamental[FUNDAMENTAL_TYPE_ID_MAX + 1]; @@ -351,9 +354,9 @@ gst_value_list_concat (GValue * dest, const GValue * value1, g_return_if_fail (G_IS_VALUE (value2)); value1_length = - (GST_VALUE_HOLDS_LIST (value1) ? gst_value_list_get_size (value1) : 1); + (GST_VALUE_HOLDS_LIST (value1) ? VALUE_LIST_SIZE (value1) : 1); value2_length = - (GST_VALUE_HOLDS_LIST (value2) ? gst_value_list_get_size (value2) : 1); + (GST_VALUE_HOLDS_LIST (value2) ? VALUE_LIST_SIZE (value2) : 1); g_value_init (dest, GST_TYPE_LIST); array = (GArray *) dest->data[0].v_pointer; g_array_set_size (array, value1_length + value2_length); @@ -361,7 +364,7 @@ gst_value_list_concat (GValue * dest, const GValue * value1, if (GST_VALUE_HOLDS_LIST (value1)) { for (i = 0; i < value1_length; i++) { gst_value_init_and_copy (&g_array_index (array, GValue, i), - gst_value_list_get_value (value1, i)); + VALUE_LIST_GET_VALUE (value1, i)); } } else { gst_value_init_and_copy (&g_array_index (array, GValue, 0), value1); @@ -370,7 +373,7 @@ gst_value_list_concat (GValue * dest, const GValue * value1, if (GST_VALUE_HOLDS_LIST (value2)) { for (i = 0; i < value2_length; i++) { gst_value_init_and_copy (&g_array_index (array, GValue, - i + value1_length), gst_value_list_get_value (value2, i)); + i + value1_length), VALUE_LIST_GET_VALUE (value2, i)); } } else { gst_value_init_and_copy (&g_array_index (array, GValue, value1_length), @@ -408,7 +411,7 @@ const GValue * gst_value_list_get_value (const GValue * value, guint index) { g_return_val_if_fail (GST_VALUE_HOLDS_LIST (value), NULL); - g_return_val_if_fail (index < gst_value_list_get_size (value), NULL); + g_return_val_if_fail (index < VALUE_LIST_SIZE (value), NULL); return (const GValue *) &g_array_index ((GArray *) value->data[0].v_pointer, GValue, index); @@ -2351,9 +2354,9 @@ gst_value_intersect_list (GValue * dest, const GValue * value1, GValue intersection = { 0, }; gboolean ret = FALSE; - size = gst_value_list_get_size (value1); + size = VALUE_LIST_SIZE (value1); for (i = 0; i < size; i++) { - const GValue *cur = gst_value_list_get_value (value1, i); + const GValue *cur = VALUE_LIST_GET_VALUE (value1, i); if (gst_value_intersect (&intersection, cur, value2)) { /* append value */ @@ -2679,9 +2682,9 @@ gst_value_subtract_from_list (GValue * dest, const GValue * minuend, ltype = gst_value_list_get_type (); - size = gst_value_list_get_size (minuend); + size = VALUE_LIST_SIZE (minuend); for (i = 0; i < size; i++) { - const GValue *cur = gst_value_list_get_value (minuend, i); + const GValue *cur = VALUE_LIST_GET_VALUE (minuend, i); if (gst_value_subtract (&subtraction, cur, subtrahend)) { if (!ret) { @@ -2713,9 +2716,9 @@ gst_value_subtract_list (GValue * dest, const GValue * minuend, GValue *subtraction = &data[0], *result = &data[1]; gst_value_init_and_copy (result, minuend); - size = gst_value_list_get_size (subtrahend); + size = VALUE_LIST_SIZE (subtrahend); for (i = 0; i < size; i++) { - const GValue *cur = gst_value_list_get_value (subtrahend, i); + const GValue *cur = VALUE_LIST_GET_VALUE (subtrahend, i); if (gst_value_subtract (subtraction, result, cur)) { GValue *temp = result; -- 2.7.4