diff options
author | eugeni <eugeni@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2007-02-16 17:49:35 +0000 |
---|---|---|
committer | eugeni <eugeni@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2007-02-16 17:49:35 +0000 |
commit | 42871d8220fd0b30d710afa41c2c88660a52a78e (patch) | |
tree | fe80687b8a6945ac768e725c920684d91687a386 /libass/ass_utils.h | |
parent | 5b6d918b14cb69f6bc14db399eee5fb37bf8d9f2 (diff) | |
download | mpv-42871d8220fd0b30d710afa41c2c88660a52a78e.tar.bz2 mpv-42871d8220fd0b30d710afa41c2c88660a52a78e.tar.xz |
Move conversions between 16.16, 26.6 fixed point and int, double to separate
functions. Some rounding errors are fixed along the way.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@22231 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libass/ass_utils.h')
-rw-r--r-- | libass/ass_utils.h | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/libass/ass_utils.h b/libass/ass_utils.h index c4453902bc..6c4eccecd5 100644 --- a/libass/ass_utils.h +++ b/libass/ass_utils.h @@ -25,5 +25,31 @@ int mystrtoi(char** p, int base, int* res); int mystrtou32(char** p, int base, uint32_t* res); int mystrtod(char** p, double* res); int strtocolor(char** q, uint32_t* res); + +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 int_to_d16(int x) { + return x << 16; +} +static inline int d16_to_d6(int x) { + return (x + 512) >> 10; +} +static inline int d6_to_d16(int x) { + return x << 10; +} +static inline double d6_to_double(int x) { + return x / 64.; +} +static inline int double_to_d6(double x) { + return (int)(x * 64); +} + #endif |