diff options
Diffstat (limited to 'libavutil/utils.c')
-rw-r--r-- | libavutil/utils.c | 19 |
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; +} |