avutil: add get_category() for the case where one AVClass can have more than 1 category
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
b76f77ee0d
commit
e69263cd01
@ -153,7 +153,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#define LIBAVUTIL_VERSION_MAJOR 51
|
#define LIBAVUTIL_VERSION_MAJOR 51
|
||||||
#define LIBAVUTIL_VERSION_MINOR 58
|
#define LIBAVUTIL_VERSION_MINOR 59
|
||||||
#define LIBAVUTIL_VERSION_MICRO 100
|
#define LIBAVUTIL_VERSION_MICRO 100
|
||||||
|
|
||||||
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
|
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
|
||||||
|
@ -121,6 +121,11 @@ const char *av_default_item_name(void *ptr)
|
|||||||
return (*(AVClass **) ptr)->class_name;
|
return (*(AVClass **) ptr)->class_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AVClassCategory av_default_get_category(void *ptr)
|
||||||
|
{
|
||||||
|
return (*(AVClass **) ptr)->category;
|
||||||
|
}
|
||||||
|
|
||||||
static void sanitize(uint8_t *line){
|
static void sanitize(uint8_t *line){
|
||||||
while(*line){
|
while(*line){
|
||||||
if(*line < 0x08 || (*line > 0x0D && *line < 0x20))
|
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
|
if( !avc
|
||||||
|| (avc->version&0xFF)<100
|
|| (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;
|
|| 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;
|
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) {
|
if (parent && *parent) {
|
||||||
snprintf(part[0], part_size, "[%s @ %p] ",
|
snprintf(part[0], part_size, "[%s @ %p] ",
|
||||||
(*parent)->item_name(parent), parent);
|
(*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] ",
|
snprintf(part[1], part_size, "[%s @ %p] ",
|
||||||
avc->item_name(ptr), ptr);
|
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);
|
vsnprintf(part[2], part_size, fmt, vl);
|
||||||
|
@ -102,9 +102,16 @@ typedef struct AVClass {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Category used for visualization (like color)
|
* Category used for visualization (like color)
|
||||||
|
* This is only set if the category is equal for all objects using this class.
|
||||||
* available since version (51 << 16 | 56 << 8 | 100)
|
* available since version (51 << 16 | 56 << 8 | 100)
|
||||||
*/
|
*/
|
||||||
AVClassCategory category;
|
AVClassCategory category;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Callback to return the category.
|
||||||
|
* available since version (51 << 16 | 59 << 8 | 100)
|
||||||
|
*/
|
||||||
|
AVClassCategory (*get_category)(void* ctx);
|
||||||
} AVClass;
|
} AVClass;
|
||||||
|
|
||||||
/* av_log API */
|
/* av_log API */
|
||||||
@ -167,6 +174,7 @@ void av_log_set_level(int);
|
|||||||
void av_log_set_callback(void (*)(void*, int, const char*, va_list));
|
void av_log_set_callback(void (*)(void*, int, const char*, va_list));
|
||||||
void av_log_default_callback(void* ptr, int level, const char* fmt, va_list vl);
|
void av_log_default_callback(void* ptr, int level, const char* fmt, va_list vl);
|
||||||
const char* av_default_item_name(void* ctx);
|
const char* av_default_item_name(void* ctx);
|
||||||
|
AVClassCategory av_default_get_category(void *ptr);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Format a line of log the same way as the default callback.
|
* Format a line of log the same way as the default callback.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user