diff options
author | greg <greg@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2010-01-08 18:35:44 +0000 |
---|---|---|
committer | greg <greg@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2010-01-08 18:35:44 +0000 |
commit | 9aea06cf7dde9592672e4dba09fb03b2b89d6863 (patch) | |
tree | 0062d1e95bc58bd51028e14a6d88240a1d94ee7d /libass/ass_utils.h | |
parent | f51c039c5fcdc24c3f33e1a48bed73bdb17e9e11 (diff) | |
download | mpv-9aea06cf7dde9592672e4dba09fb03b2b89d6863.tar.bz2 mpv-9aea06cf7dde9592672e4dba09fb03b2b89d6863.tar.xz |
Update internal libass copy to commit 8db4a5
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30242 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libass/ass_utils.h')
-rw-r--r-- | libass/ass_utils.h | 139 |
1 files changed, 110 insertions, 29 deletions
diff --git a/libass/ass_utils.h b/libass/ass_utils.h index 8c5f3e8f49..ad8574c1d6 100644 --- a/libass/ass_utils.h +++ b/libass/ass_utils.h @@ -1,5 +1,3 @@ -// -*- c-basic-offset: 8; indent-tabs-mode: t -*- -// vim:ts=8:sw=8:noet:ai: /* * Copyright (C) 2006 Evgeniy Stepanov <eugeni.stepanov@gmail.com> * @@ -23,44 +21,127 @@ #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> -int mystrtoi(char** p, int* res); -int mystrtoll(char** p, long long* res); -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); +#ifdef CONFIG_ENCA +#include <enca.h> +#endif -static inline int d6_to_int(int x) { - return (x + 32) >> 6; +#include "ass.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)) +#define FFMINMAX(c,a,b) FFMIN(FFMAX(c, a), b) + +int mystrtoi(char **p, int *res); +int mystrtoll(char **p, long long *res); +int mystrtou32(char **p, int base, uint32_t *res); +int mystrtod(char **p, double *res); +int strtocolor(ASS_Library *library, char **q, uint32_t *res, int hex); +char parse_bool(char *str); +unsigned ass_utf8_get_char(char **str); +void ass_msg(ASS_Library *priv, int lvl, char *fmt, ...); +#ifdef CONFIG_ENCA +void *ass_guess_buffer_cp(ASS_Library *library, unsigned char *buffer, + int buflen, char *preferred_language, + char *fallback); +#endif + +/* defined in ass_strtod.c */ +double ass_strtod(const char *string, char **endPtr); + +static inline int d6_to_int(int x) +{ + return (x + 32) >> 6; +} +static inline int d16_to_int(int x) +{ + return (x + 32768) >> 16; +} +static inline int int_to_d6(int x) +{ + return x << 6; } -static inline int d16_to_int(int x) { - return (x + 32768) >> 16; +static inline int int_to_d16(int x) +{ + return x << 16; } -static inline int int_to_d6(int x) { - return x << 6; +static inline int d16_to_d6(int x) +{ + return (x + 512) >> 10; } -static inline int int_to_d16(int x) { - return x << 16; +static inline int d6_to_d16(int x) +{ + return x << 10; } -static inline int d16_to_d6(int x) { - return (x + 512) >> 10; +static inline double d6_to_double(int x) +{ + return x / 64.; } -static inline int d6_to_d16(int x) { - return x << 10; +static inline int double_to_d6(double x) +{ + return (int) (x * 64); } -static inline double d6_to_double(int x) { - return x / 64.; +static inline double d16_to_double(int x) +{ + return ((double) x) / 0x10000; } -static inline int double_to_d6(double x) { - return (int)(x * 64); +static inline int double_to_d16(double x) +{ + return (int) (x * 0x10000); } -static inline double d16_to_double(int x) { - return ((double)x) / 0x10000; +static inline double d22_to_double(int x) +{ + return ((double) x) / 0x400000; +} +static inline int double_to_d22(double x) +{ + return (int) (x * 0x400000); +} + +// Calculate cache key for a rotational angle in degrees +static inline int rot_key(double a) +{ + const int m = double_to_d22(360.0); + return double_to_d22(a) % m; +} + +#define FNV1_32A_INIT (unsigned)0x811c9dc5 + +static inline unsigned fnv_32a_buf(void *buf, size_t len, unsigned hval) +{ + unsigned char *bp = buf; + unsigned char *be = bp + len; + while (bp < be) { + hval ^= (unsigned) *bp++; + hval += + (hval << 1) + (hval << 4) + (hval << 7) + (hval << 8) + + (hval << 24); + } + return hval; } -static inline int double_to_d16(double x) { - return (int)(x * 0x10000); +static inline unsigned fnv_32a_str(char *str, unsigned hval) +{ + unsigned char *s = (unsigned char *) str; + while (*s) { + hval ^= (unsigned) *s++; + hval += + (hval << 1) + (hval << 4) + (hval << 7) + (hval << 8) + + (hval << 24); + } + return hval; } -#endif /* LIBASS_UTILS_H */ +#endif /* LIBASS_UTILS_H */ |