diff options
Diffstat (limited to 'libass/ass_library.c')
-rw-r--r-- | libass/ass_library.c | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/libass/ass_library.c b/libass/ass_library.c index ce877da..2a8f5b2 100644 --- a/libass/ass_library.c +++ b/libass/ass_library.c @@ -22,14 +22,27 @@ #include <stdio.h> #include <stdlib.h> #include <string.h> +#include <stdarg.h> #include "ass.h" #include "ass_library.h" +#include "ass_utils.h" +static void ass_msg_handler(int level, char *fmt, va_list *va) +{ + if (level > MSGL_INFO) + return; + printf("[ass] "); + vprintf(fmt, *va); + printf("\n"); +} ass_library_t *ass_library_init(void) { - return calloc(1, sizeof(ass_library_t)); + ass_library_t* lib = calloc(1, sizeof(ass_library_t)); + lib->msg_callback = ass_msg_handler; + + return lib; } void ass_library_done(ass_library_t *priv) @@ -114,3 +127,16 @@ void ass_clear_fonts(ass_library_t *priv) priv->fontdata = NULL; priv->num_fontdata = 0; } + +/* + * Register a message callback function with libass. Without setting one, + * a default handler is used which prints everything with MSGL_INFO or + * higher to the standard output. + */ +void ass_set_message_cb(ass_library_t *priv, + void (*msg_cb)(int, char *, va_list *)) +{ + if (msg_cb) + priv->msg_callback = msg_cb; +} + |