diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2012-06-03 22:39:54 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2012-06-19 17:22:02 +0200 |
commit | e69263cd01380b7b20b92588dcac324bf776b59f (patch) | |
tree | 17ac20fc02982a5114aa921eda1361dd038c03cd /libavutil/log.c | |
parent | b76f77ee0da3a6ebdb7c931b78fd3e1783d39947 (diff) | |
download | ffmpeg-e69263cd01380b7b20b92588dcac324bf776b59f.tar.gz |
avutil: add get_category() for the case where one AVClass can have more than 1 category
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavutil/log.c')
-rw-r--r-- | libavutil/log.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/libavutil/log.c b/libavutil/log.c index 30f2ccd148..e520a7b8b2 100644 --- a/libavutil/log.c +++ b/libavutil/log.c @@ -121,6 +121,11 @@ const char *av_default_item_name(void *ptr) return (*(AVClass **) ptr)->class_name; } +AVClassCategory av_default_get_category(void *ptr) +{ + return (*(AVClass **) ptr)->category; +} + static void sanitize(uint8_t *line){ while(*line){ if(*line < 0x08 || (*line > 0x0D && *line < 0x20)) @@ -129,12 +134,16 @@ static void sanitize(uint8_t *line){ } } -static int get_category(AVClass *avc){ +static int get_category(void *ptr){ + AVClass *avc = *(AVClass **) ptr; if( !avc || (avc->version&0xFF)<100 - || avc->version < (51 << 16 | 56 << 8) + || avc->version < (51 << 16 | 59 << 8) || avc->category >= AV_CLASS_CATEGORY_NB) return AV_CLASS_CATEGORY_NA + 16; + if(avc->get_category) + return avc->get_category(ptr) + 16; + return avc->category + 16; } @@ -151,12 +160,12 @@ static void format_line(void *ptr, int level, const char *fmt, va_list vl, if (parent && *parent) { snprintf(part[0], part_size, "[%s @ %p] ", (*parent)->item_name(parent), parent); - if(type) type[0] = get_category(*parent); + if(type) type[0] = get_category(((uint8_t *) ptr) + avc->parent_log_context_offset); } } snprintf(part[1], part_size, "[%s @ %p] ", avc->item_name(ptr), ptr); - if(type) type[1] = get_category(avc); + if(type) type[1] = get_category(ptr); } vsnprintf(part[2], part_size, fmt, vl); |