summaryrefslogtreecommitdiff
path: root/libavutil/utils.c
diff options
context:
space:
mode:
Diffstat (limited to 'libavutil/utils.c')
-rw-r--r--libavutil/utils.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/libavutil/utils.c b/libavutil/utils.c
index fbfbc49e1c..291c736454 100644
--- a/libavutil/utils.c
+++ b/libavutil/utils.c
@@ -79,3 +79,22 @@ char av_get_picture_type_char(enum AVPictureType pict_type)
default: return '?';
}
}
+
+unsigned av_int_list_length_for_size(unsigned elsize,
+ const void *list, uint64_t term)
+{
+ unsigned i;
+
+ if (!list)
+ return 0;
+#define LIST_LENGTH(type) \
+ { type t = term, *l = list; for (i = 0; l[i] != t; i++); }
+ switch (elsize) {
+ case 1: LIST_LENGTH(uint8_t); break;
+ case 2: LIST_LENGTH(uint16_t); break;
+ case 4: LIST_LENGTH(uint32_t); break;
+ case 8: LIST_LENGTH(uint64_t); break;
+ default: av_assert0(!"valid element size");
+ }
+ return i;
+}