]> granicus.if.org Git - libass/commitdiff
Incorporate mputils.c into ass_utils.c
authorGrigori Goronzy <greg@blackbox>
Sat, 27 Jun 2009 04:31:45 +0000 (06:31 +0200)
committerGrigori Goronzy <greg@blackbox>
Sat, 27 Jun 2009 04:46:20 +0000 (06:46 +0200)
Move helper functions originating from MPlayer into ass_utils.c.
Remove some debugging code that is #if 0'ed for ages now.  Delete
mputils.c and mputils.h and remove them from the build system.

libass/Makefile.am
libass/ass_utils.c
libass/ass_utils.h
libass/mputils.c [deleted file]
libass/mputils.h [deleted file]

index 59f5433e3ea34c5197127ea82971903473037729..8703f6a8736c9b7ad977f46f61a269bd4ef39006 100644 (file)
@@ -4,9 +4,9 @@ LIBASS_LT_AGE = 0
 
 lib_LTLIBRARIES = libass.la
 libass_la_SOURCES = ass.c ass_cache.c ass_font.c ass_fontconfig.c ass_render.c \
-                    ass_utils.c ass_bitmap.c ass_library.c mputils.c \
-                    ass_bitmap.h ass_cache.h ass_fontconfig.h ass_font.h ass.h \
-                    ass_library.h ass_types.h ass_utils.h help_mp.h mputils.h
+                    ass_utils.c ass_bitmap.c ass_library.c ass_bitmap.h \
+                    ass_cache.h ass_fontconfig.h ass_font.h ass.h \
+                    ass_library.h ass_types.h ass_utils.h help_mp.h
 libass_la_LDFLAGS = -version-info $(LIBASS_LT_CURRENT):$(LIBASS_LT_REVISION):$(LIBASS_LT_AGE)
 
 assheadersdir = $(includedir)/ass
index 072f325d39d6a58d2f291e65ce29688981c09591..90655c4728ac79825c008719b0b2d6d9a1d17cac 100644 (file)
@@ -121,31 +121,206 @@ char parse_bool(char *str)
     return 0;
 }
 
-#if 0
-static void sprint_tag(uint32_t tag, char *dst)
+void ass_msg(int lvl, char *fmt, ...)
 {
-    dst[0] = (tag >> 24) & 0xFF;
-    dst[1] = (tag >> 16) & 0xFF;
-    dst[2] = (tag >> 8) & 0xFF;
-    dst[3] = tag & 0xFF;
-    dst[4] = 0;
+    va_list va;
+    if (lvl > MSGL_INFO)
+        return;
+    va_start(va, fmt);
+    vprintf(fmt, va);
+    va_end(va);
 }
 
-void dump_glyph(FT_Glyph g)
+unsigned ass_utf8_get_char(char **str)
 {
-    char tag[5];
+    uint8_t *strp = (uint8_t *) * str;
+    unsigned c = *strp++;
+    unsigned mask = 0x80;
+    int len = -1;
+    while (c & mask) {
+        mask >>= 1;
+        len++;
+    }
+    if (len <= 0 || len > 4)
+        goto no_utf8;
+    c &= mask - 1;
+    while ((*strp & 0xc0) == 0x80) {
+        if (len-- <= 0)
+            goto no_utf8;
+        c = (c << 6) | (*strp++ & 0x3f);
+    }
+    if (len)
+        goto no_utf8;
+    *str = (char *) strp;
+    return c;
+
+  no_utf8:
+    strp = (uint8_t *) * str;
+    c = *strp++;
+    *str = (char *) strp;
+    return c;
+}
+
+// gaussian blur
+void ass_gauss_blur(unsigned char *buffer,
+          unsigned short *tmp2,
+          int width, int height, int stride, int *m2, int r, int mwidth)
+{
+
+    int x, y;
+
+    unsigned char *s = buffer;
+    unsigned short *t = tmp2 + 1;
+    for (y = 0; y < height; y++) {
+        memset(t - 1, 0, (width + 1) * sizeof(short));
+
+        for (x = 0; x < r; x++) {
+            const int src = s[x];
+            if (src) {
+                register unsigned short *dstp = t + x - r;
+                int mx;
+                unsigned *m3 = (unsigned *) (m2 + src * mwidth);
+                for (mx = r - x; mx < mwidth; mx++) {
+                    dstp[mx] += m3[mx];
+                }
+            }
+        }
+
+        for (; x < width - r; x++) {
+            const int src = s[x];
+            if (src) {
+                register unsigned short *dstp = t + x - r;
+                int mx;
+                unsigned *m3 = (unsigned *) (m2 + src * mwidth);
+                for (mx = 0; mx < mwidth; mx++) {
+                    dstp[mx] += m3[mx];
+                }
+            }
+        }
+
+        for (; x < width; x++) {
+            const int src = s[x];
+            if (src) {
+                register unsigned short *dstp = t + x - r;
+                int mx;
+                const int x2 = r + width - x;
+                unsigned *m3 = (unsigned *) (m2 + src * mwidth);
+                for (mx = 0; mx < x2; mx++) {
+                    dstp[mx] += m3[mx];
+                }
+            }
+        }
+
+        s += stride;
+        t += width + 1;
+    }
+
+    t = tmp2;
+    for (x = 0; x < width; x++) {
+        for (y = 0; y < r; y++) {
+            unsigned short *srcp = t + y * (width + 1) + 1;
+            int src = *srcp;
+            if (src) {
+                register unsigned short *dstp = srcp - 1 + width + 1;
+                const int src2 = (src + 128) >> 8;
+                unsigned *m3 = (unsigned *) (m2 + src2 * mwidth);
+
+                int mx;
+                *srcp = 128;
+                for (mx = r - 1; mx < mwidth; mx++) {
+                    *dstp += m3[mx];
+                    dstp += width + 1;
+                }
+            }
+        }
+        for (; y < height - r; y++) {
+            unsigned short *srcp = t + y * (width + 1) + 1;
+            int src = *srcp;
+            if (src) {
+                register unsigned short *dstp = srcp - 1 - r * (width + 1);
+                const int src2 = (src + 128) >> 8;
+                unsigned *m3 = (unsigned *) (m2 + src2 * mwidth);
+
+                int mx;
+                *srcp = 128;
+                for (mx = 0; mx < mwidth; mx++) {
+                    *dstp += m3[mx];
+                    dstp += width + 1;
+                }
+            }
+        }
+        for (; y < height; y++) {
+            unsigned short *srcp = t + y * (width + 1) + 1;
+            int src = *srcp;
+            if (src) {
+                const int y2 = r + height - y;
+                register unsigned short *dstp = srcp - 1 - r * (width + 1);
+                const int src2 = (src + 128) >> 8;
+                unsigned *m3 = (unsigned *) (m2 + src2 * mwidth);
+
+                int mx;
+                *srcp = 128;
+                for (mx = 0; mx < y2; mx++) {
+                    *dstp += m3[mx];
+                    dstp += width + 1;
+                }
+            }
+        }
+        t++;
+    }
+
+    t = tmp2;
+    s = buffer;
+    for (y = 0; y < height; y++) {
+        for (x = 0; x < width; x++) {
+            s[x] = t[x] >> 8;
+        }
+        s += stride;
+        t += width + 1;
+    }
+}
+
+#ifdef CONFIG_ENCA
+void *ass_guess_buffer_cp(unsigned char *buffer, int buflen,
+                      char *preferred_language, char *fallback)
+{
+    const char **languages;
+    size_t langcnt;
+    EncaAnalyser analyser;
+    EncaEncoding encoding;
+    char *detected_sub_cp = NULL;
     int i;
-    FT_OutlineGlyph og = (FT_OutlineGlyph) g;
-    FT_Outline *o = &(og->outline);
-    sprint_tag(g->format, tag);
-    printf("glyph: %p \n", g);
-    printf("format: %s \n", tag);
-    printf("outline: %p \n", o);
-    printf("contours: %d, points: %d, points ptr: %p \n", o->n_contours,
-           o->n_points, o->points);
-    for (i = 0; i < o->n_points; ++i) {
-        printf("  point %f, %f \n", d6_to_double(o->points[i].x),
-               d6_to_double(o->points[i].y));
+
+    languages = enca_get_languages(&langcnt);
+    ass_msg(MSGL_V, "ENCA supported languages: ");
+    for (i = 0; i < langcnt; i++) {
+        ass_msg(MSGL_V, "%s ", languages[i]);
     }
+    ass_msg(MSGL_V, "\n");
+
+    for (i = 0; i < langcnt; i++) {
+        const char *tmp;
+
+        if (strcasecmp(languages[i], preferred_language) != 0)
+            continue;
+        analyser = enca_analyser_alloc(languages[i]);
+        encoding = enca_analyse_const(analyser, buffer, buflen);
+        tmp = enca_charset_name(encoding.charset, ENCA_NAME_STYLE_ICONV);
+        if (tmp && encoding.charset != ENCA_CS_UNKNOWN) {
+            detected_sub_cp = strdup(tmp);
+            ass_msg(MSGL_INFO, "ENCA detected charset: %s\n", tmp);
+        }
+        enca_analyser_free(analyser);
+    }
+
+    free(languages);
+
+    if (!detected_sub_cp) {
+        detected_sub_cp = strdup(fallback);
+        ass_msg(MSGL_INFO,
+               "ENCA detection failed: fallback to %s\n", fallback);
+    }
+
+    return detected_sub_cp;
 }
 #endif
index 54c8fe0e2979eba8238b954cb664189ef313398f..553a69ddcc5cde4bba9686db8c8fa6111488b614 100644 (file)
 #ifndef LIBASS_UTILS_H
 #define LIBASS_UTILS_H
 
+#include <stdio.h>
+#include <stdarg.h>
 #include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+
+#ifdef CONFIG_ENCA
+#include <enca.h>
+#endif
+
+#include "help_mp.h"
+
+#define MSGL_FATAL 0
+#define MSGL_ERR 1
+#define MSGL_WARN 2
+#define MSGL_INFO 4
+#define MSGL_V 6
+#define MSGL_DBG2 7
+
+#define FFMAX(a,b) ((a) > (b) ? (a) : (b))
+#define FFMIN(a,b) ((a) > (b) ? (b) : (a))
 
 int mystrtoi(char **p, int *res);
 int mystrtoll(char **p, long long *res);
@@ -29,6 +50,13 @@ int mystrtou32(char **p, int base, uint32_t *res);
 int mystrtod(char **p, double *res);
 int strtocolor(char **q, uint32_t *res);
 char parse_bool(char *str);
+unsigned ass_utf8_get_char(char **str);
+void ass_msg(int lvl, char *fmt, ...);
+void ass_gauss_blur(unsigned char *buffer, unsigned short *tmp2,
+                    int width, int height, int stride, int *m2,
+                    int r, int mwidth);
+void *ass_guess_buffer_cp(unsigned char *buffer, int buflen,
+                          char *preferred_language, char *fallback);
 
 static inline int d6_to_int(int x)
 {
diff --git a/libass/mputils.c b/libass/mputils.c
deleted file mode 100644 (file)
index 7ab7bc0..0000000
+++ /dev/null
@@ -1,239 +0,0 @@
-/*
- * Copyright (C) 2006 Evgeniy Stepanov <eugeni.stepanov@gmail.com>
- * Copyright (C) 2009 Grigori Goronzy <greg@geekmind.org>
- *
- * This file is part of libass.
- *
- * libass is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * libass is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with libass; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#include "config.h"
-
-#include "mputils.h"
-
-#include <stdio.h>
-#include <stdarg.h>
-#include <stdint.h>
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-
-#ifdef CONFIG_ENCA
-#include <enca.h>
-#endif
-
-void ass_msg(int lvl, char *fmt, ...)
-{
-    va_list va;
-    if (lvl > MSGL_INFO)
-        return;
-    va_start(va, fmt);
-    vprintf(fmt, va);
-    va_end(va);
-}
-
-unsigned ass_utf8_get_char(char **str)
-{
-    uint8_t *strp = (uint8_t *) * str;
-    unsigned c = *strp++;
-    unsigned mask = 0x80;
-    int len = -1;
-    while (c & mask) {
-        mask >>= 1;
-        len++;
-    }
-    if (len <= 0 || len > 4)
-        goto no_utf8;
-    c &= mask - 1;
-    while ((*strp & 0xc0) == 0x80) {
-        if (len-- <= 0)
-            goto no_utf8;
-        c = (c << 6) | (*strp++ & 0x3f);
-    }
-    if (len)
-        goto no_utf8;
-    *str = (char *) strp;
-    return c;
-
-  no_utf8:
-    strp = (uint8_t *) * str;
-    c = *strp++;
-    *str = (char *) strp;
-    return c;
-}
-
-// gaussian blur
-void ass_gauss_blur(unsigned char *buffer,
-          unsigned short *tmp2,
-          int width, int height, int stride, int *m2, int r, int mwidth)
-{
-
-    int x, y;
-
-    unsigned char *s = buffer;
-    unsigned short *t = tmp2 + 1;
-    for (y = 0; y < height; y++) {
-        memset(t - 1, 0, (width + 1) * sizeof(short));
-
-        for (x = 0; x < r; x++) {
-            const int src = s[x];
-            if (src) {
-                register unsigned short *dstp = t + x - r;
-                int mx;
-                unsigned *m3 = (unsigned *) (m2 + src * mwidth);
-                for (mx = r - x; mx < mwidth; mx++) {
-                    dstp[mx] += m3[mx];
-                }
-            }
-        }
-
-        for (; x < width - r; x++) {
-            const int src = s[x];
-            if (src) {
-                register unsigned short *dstp = t + x - r;
-                int mx;
-                unsigned *m3 = (unsigned *) (m2 + src * mwidth);
-                for (mx = 0; mx < mwidth; mx++) {
-                    dstp[mx] += m3[mx];
-                }
-            }
-        }
-
-        for (; x < width; x++) {
-            const int src = s[x];
-            if (src) {
-                register unsigned short *dstp = t + x - r;
-                int mx;
-                const int x2 = r + width - x;
-                unsigned *m3 = (unsigned *) (m2 + src * mwidth);
-                for (mx = 0; mx < x2; mx++) {
-                    dstp[mx] += m3[mx];
-                }
-            }
-        }
-
-        s += stride;
-        t += width + 1;
-    }
-
-    t = tmp2;
-    for (x = 0; x < width; x++) {
-        for (y = 0; y < r; y++) {
-            unsigned short *srcp = t + y * (width + 1) + 1;
-            int src = *srcp;
-            if (src) {
-                register unsigned short *dstp = srcp - 1 + width + 1;
-                const int src2 = (src + 128) >> 8;
-                unsigned *m3 = (unsigned *) (m2 + src2 * mwidth);
-
-                int mx;
-                *srcp = 128;
-                for (mx = r - 1; mx < mwidth; mx++) {
-                    *dstp += m3[mx];
-                    dstp += width + 1;
-                }
-            }
-        }
-        for (; y < height - r; y++) {
-            unsigned short *srcp = t + y * (width + 1) + 1;
-            int src = *srcp;
-            if (src) {
-                register unsigned short *dstp = srcp - 1 - r * (width + 1);
-                const int src2 = (src + 128) >> 8;
-                unsigned *m3 = (unsigned *) (m2 + src2 * mwidth);
-
-                int mx;
-                *srcp = 128;
-                for (mx = 0; mx < mwidth; mx++) {
-                    *dstp += m3[mx];
-                    dstp += width + 1;
-                }
-            }
-        }
-        for (; y < height; y++) {
-            unsigned short *srcp = t + y * (width + 1) + 1;
-            int src = *srcp;
-            if (src) {
-                const int y2 = r + height - y;
-                register unsigned short *dstp = srcp - 1 - r * (width + 1);
-                const int src2 = (src + 128) >> 8;
-                unsigned *m3 = (unsigned *) (m2 + src2 * mwidth);
-
-                int mx;
-                *srcp = 128;
-                for (mx = 0; mx < y2; mx++) {
-                    *dstp += m3[mx];
-                    dstp += width + 1;
-                }
-            }
-        }
-        t++;
-    }
-
-    t = tmp2;
-    s = buffer;
-    for (y = 0; y < height; y++) {
-        for (x = 0; x < width; x++) {
-            s[x] = t[x] >> 8;
-        }
-        s += stride;
-        t += width + 1;
-    }
-}
-
-#ifdef CONFIG_ENCA
-void *ass_guess_buffer_cp(unsigned char *buffer, int buflen,
-                      char *preferred_language, char *fallback)
-{
-    const char **languages;
-    size_t langcnt;
-    EncaAnalyser analyser;
-    EncaEncoding encoding;
-    char *detected_sub_cp = NULL;
-    int i;
-
-    languages = enca_get_languages(&langcnt);
-    ass_msg(MSGL_V, "ENCA supported languages: ");
-    for (i = 0; i < langcnt; i++) {
-        ass_msg(MSGL_V, "%s ", languages[i]);
-    }
-    ass_msg(MSGL_V, "\n");
-
-    for (i = 0; i < langcnt; i++) {
-        const char *tmp;
-
-        if (strcasecmp(languages[i], preferred_language) != 0)
-            continue;
-        analyser = enca_analyser_alloc(languages[i]);
-        encoding = enca_analyse_const(analyser, buffer, buflen);
-        tmp = enca_charset_name(encoding.charset, ENCA_NAME_STYLE_ICONV);
-        if (tmp && encoding.charset != ENCA_CS_UNKNOWN) {
-            detected_sub_cp = strdup(tmp);
-            ass_msg(MSGL_INFO, "ENCA detected charset: %s\n", tmp);
-        }
-        enca_analyser_free(analyser);
-    }
-
-    free(languages);
-
-    if (!detected_sub_cp) {
-        detected_sub_cp = strdup(fallback);
-        ass_msg(MSGL_INFO,
-               "ENCA detection failed: fallback to %s\n", fallback);
-    }
-
-    return detected_sub_cp;
-}
-#endif
diff --git a/libass/mputils.h b/libass/mputils.h
deleted file mode 100644 (file)
index 199f74b..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef __MPUTILS_H__
-#define __MPUTILS_H__
-
-#define MSGL_FATAL 0
-#define MSGL_ERR 1
-#define MSGL_WARN 2
-#define MSGL_INFO 4
-#define MSGL_V 6
-#define MSGL_DBG2 7
-
-#define FFMAX(a,b) ((a) > (b) ? (a) : (b))
-#define FFMIN(a,b) ((a) > (b) ? (b) : (a))
-
-#include "help_mp.h"
-
-unsigned ass_utf8_get_char(char **str);
-void ass_msg(int lvl, char *fmt, ...);
-void ass_gauss_blur(unsigned char *buffer, unsigned short *tmp2,
-                    int width, int height, int stride, int *m2,
-                    int r, int mwidth);
-void *ass_guess_buffer_cp(unsigned char *buffer, int buflen,
-                          char *preferred_language, char *fallback);
-
-#endif