Mercurial > mplayer.hg
annotate libass/ass_utils.h @ 35171:75e4ee082dd2
mp_property_deinterlace: Improve OSD feedback
Do not show wrong OSD if setting of property deinterlace
fails or is not supported by current video chain.
This was particularly misleading because if you e.g.
were using mplayer without a deinterlacing filter and
your vo didn't have deinterlacing support. The OSD
output of the property would appear like it got stuck
at "enabled".
Patch by Vicente Sendra >visenri yahoo.es<
with a few changes by me.
author | al |
---|---|
date | Sun, 21 Oct 2012 19:01:48 +0000 |
parents | 88eebbbbd6a0 |
children | 49fc594fda43 |
rev | line source |
---|---|
20008
fa122b7c71c6
Add copyright notice and vim/emacs comments to libass and vf_ass.c.
eugeni
parents:
18937
diff
changeset
|
1 /* |
26723 | 2 * Copyright (C) 2006 Evgeniy Stepanov <eugeni.stepanov@gmail.com> |
3 * | |
26738
588ce97b44f2
Speak of libass instead of MPlayer in the libass license headers.
diego
parents:
26723
diff
changeset
|
4 * This file is part of libass. |
26723 | 5 * |
34011 | 6 * Permission to use, copy, modify, and distribute this software for any |
7 * purpose with or without fee is hereby granted, provided that the above | |
8 * copyright notice and this permission notice appear in all copies. | |
26723 | 9 * |
34011 | 10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | |
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | |
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | |
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | |
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | |
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |
26723 | 17 */ |
20008
fa122b7c71c6
Add copyright notice and vim/emacs comments to libass and vf_ass.c.
eugeni
parents:
18937
diff
changeset
|
18 |
25897
aaebaf255b23
Consistently give all libass multiple inclusion guards a LIBASS_ prefix.
diego
parents:
25535
diff
changeset
|
19 #ifndef LIBASS_UTILS_H |
aaebaf255b23
Consistently give all libass multiple inclusion guards a LIBASS_ prefix.
diego
parents:
25535
diff
changeset
|
20 #define LIBASS_UTILS_H |
18937 | 21 |
30200 | 22 #include <stdio.h> |
23 #include <stdarg.h> | |
26138
74055622161d
Add missing header #includes to fix 'make checkheaders'.
diego
parents:
26036
diff
changeset
|
24 #include <stdint.h> |
30200 | 25 #include <stdlib.h> |
26 #include <string.h> | |
27 #include <assert.h> | |
26138
74055622161d
Add missing header #includes to fix 'make checkheaders'.
diego
parents:
26036
diff
changeset
|
28 |
30200 | 29 #ifdef CONFIG_ENCA |
30 #include <enca.h> | |
31 #endif | |
32 | |
33 #include "ass.h" | |
34 | |
35 #define MSGL_FATAL 0 | |
36 #define MSGL_ERR 1 | |
37 #define MSGL_WARN 2 | |
38 #define MSGL_INFO 4 | |
39 #define MSGL_V 6 | |
40 #define MSGL_DBG2 7 | |
22213
66abe12ad374
Move conversions between 16.16, 26.6 fixed point and int, double to separate
eugeni
parents:
20503
diff
changeset
|
41 |
30200 | 42 #define FFMAX(a,b) ((a) > (b) ? (a) : (b)) |
43 #define FFMIN(a,b) ((a) > (b) ? (b) : (a)) | |
44 #define FFMINMAX(c,a,b) FFMIN(FFMAX(c, a), b) | |
45 | |
46 int mystrtoi(char **p, int *res); | |
47 int mystrtoll(char **p, long long *res); | |
48 int mystrtou32(char **p, int base, uint32_t *res); | |
49 int mystrtod(char **p, double *res); | |
50 int strtocolor(ASS_Library *library, char **q, uint32_t *res, int hex); | |
51 char parse_bool(char *str); | |
52 unsigned ass_utf8_get_char(char **str); | |
53 void ass_msg(ASS_Library *priv, int lvl, char *fmt, ...); | |
54 #ifdef CONFIG_ENCA | |
55 void *ass_guess_buffer_cp(ASS_Library *library, unsigned char *buffer, | |
56 int buflen, char *preferred_language, | |
57 char *fallback); | |
58 #endif | |
59 | |
60 /* defined in ass_strtod.c */ | |
61 double ass_strtod(const char *string, char **endPtr); | |
62 | |
63 static inline int d6_to_int(int x) | |
64 { | |
65 return (x + 32) >> 6; | |
22213
66abe12ad374
Move conversions between 16.16, 26.6 fixed point and int, double to separate
eugeni
parents:
20503
diff
changeset
|
66 } |
30200 | 67 static inline int d16_to_int(int x) |
68 { | |
69 return (x + 32768) >> 16; | |
70 } | |
71 static inline int int_to_d6(int x) | |
72 { | |
73 return x << 6; | |
22213
66abe12ad374
Move conversions between 16.16, 26.6 fixed point and int, double to separate
eugeni
parents:
20503
diff
changeset
|
74 } |
30200 | 75 static inline int int_to_d16(int x) |
76 { | |
77 return x << 16; | |
22213
66abe12ad374
Move conversions between 16.16, 26.6 fixed point and int, double to separate
eugeni
parents:
20503
diff
changeset
|
78 } |
30200 | 79 static inline int d16_to_d6(int x) |
80 { | |
81 return (x + 512) >> 10; | |
82 } | |
83 static inline int d6_to_d16(int x) | |
84 { | |
85 return x << 10; | |
22213
66abe12ad374
Move conversions between 16.16, 26.6 fixed point and int, double to separate
eugeni
parents:
20503
diff
changeset
|
86 } |
30200 | 87 static inline double d6_to_double(int x) |
88 { | |
89 return x / 64.; | |
22213
66abe12ad374
Move conversions between 16.16, 26.6 fixed point and int, double to separate
eugeni
parents:
20503
diff
changeset
|
90 } |
30200 | 91 static inline int double_to_d6(double x) |
92 { | |
93 return (int) (x * 64); | |
94 } | |
95 static inline double d16_to_double(int x) | |
96 { | |
97 return ((double) x) / 0x10000; | |
22213
66abe12ad374
Move conversions between 16.16, 26.6 fixed point and int, double to separate
eugeni
parents:
20503
diff
changeset
|
98 } |
30200 | 99 static inline int double_to_d16(double x) |
100 { | |
101 return (int) (x * 0x10000); | |
23299
0ee56ec36a40
Limit ass_font_set_transform to nonrotating transformations.
eugeni
parents:
22213
diff
changeset
|
102 } |
30200 | 103 static inline double d22_to_double(int x) |
104 { | |
105 return ((double) x) / 0x400000; | |
106 } | |
107 static inline int double_to_d22(double x) | |
108 { | |
109 return (int) (x * 0x400000); | |
23299
0ee56ec36a40
Limit ass_font_set_transform to nonrotating transformations.
eugeni
parents:
22213
diff
changeset
|
110 } |
22213
66abe12ad374
Move conversions between 16.16, 26.6 fixed point and int, double to separate
eugeni
parents:
20503
diff
changeset
|
111 |
30200 | 112 // Calculate cache key for a rotational angle in degrees |
113 static inline int rot_key(double a) | |
114 { | |
115 const int m = double_to_d22(360.0); | |
116 return double_to_d22(a) % m; | |
117 } | |
118 | |
119 #define FNV1_32A_INIT (unsigned)0x811c9dc5 | |
120 | |
121 static inline unsigned fnv_32a_buf(void *buf, size_t len, unsigned hval) | |
122 { | |
123 unsigned char *bp = buf; | |
124 unsigned char *be = bp + len; | |
125 while (bp < be) { | |
126 hval ^= (unsigned) *bp++; | |
127 hval += | |
128 (hval << 1) + (hval << 4) + (hval << 7) + (hval << 8) + | |
129 (hval << 24); | |
130 } | |
131 return hval; | |
132 } | |
133 static inline unsigned fnv_32a_str(char *str, unsigned hval) | |
134 { | |
135 unsigned char *s = (unsigned char *) str; | |
136 while (*s) { | |
137 hval ^= (unsigned) *s++; | |
138 hval += | |
139 (hval << 1) + (hval << 4) + (hval << 7) + (hval << 8) + | |
140 (hval << 24); | |
141 } | |
142 return hval; | |
143 } | |
144 | |
145 #endif /* LIBASS_UTILS_H */ |