summaryrefslogtreecommitdiffstats
path: root/libass/ass_library.c
diff options
context:
space:
mode:
Diffstat (limited to 'libass/ass_library.c')
-rw-r--r--libass/ass_library.c28
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;
+}
+