Mercurial > mplayer.hg
annotate libass/ass_utils.c @ 29130:33956c5f5005
Reemit the ID_AID_x_LANG for the track. This allows the identification of the
audio track by language code (en or es) rather than by ID (128 or 129).
patch by Kevin DeKorte, kdekorte gmail com
author | diego |
---|---|
date | Sat, 11 Apr 2009 13:51:02 +0000 |
parents | 0366ab2c1cb9 |
children | 0f1b5b68af32 |
rev | line source |
---|---|
20008
fa122b7c71c6
Add copyright notice and vim/emacs comments to libass and vf_ass.c.
eugeni
parents:
19405
diff
changeset
|
1 // -*- c-basic-offset: 8; indent-tabs-mode: t -*- |
fa122b7c71c6
Add copyright notice and vim/emacs comments to libass and vf_ass.c.
eugeni
parents:
19405
diff
changeset
|
2 // vim:ts=8:sw=8:noet:ai: |
fa122b7c71c6
Add copyright notice and vim/emacs comments to libass and vf_ass.c.
eugeni
parents:
19405
diff
changeset
|
3 /* |
26723 | 4 * Copyright (C) 2006 Evgeniy Stepanov <eugeni.stepanov@gmail.com> |
5 * | |
26738
588ce97b44f2
Speak of libass instead of MPlayer in the libass license headers.
diego
parents:
26723
diff
changeset
|
6 * This file is part of libass. |
26723 | 7 * |
26738
588ce97b44f2
Speak of libass instead of MPlayer in the libass license headers.
diego
parents:
26723
diff
changeset
|
8 * libass is free software; you can redistribute it and/or modify |
26723 | 9 * it under the terms of the GNU General Public License as published by |
10 * the Free Software Foundation; either version 2 of the License, or | |
11 * (at your option) any later version. | |
12 * | |
26738
588ce97b44f2
Speak of libass instead of MPlayer in the libass license headers.
diego
parents:
26723
diff
changeset
|
13 * libass is distributed in the hope that it will be useful, |
26723 | 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 * GNU General Public License for more details. | |
17 * | |
18 * You should have received a copy of the GNU General Public License along | |
26738
588ce97b44f2
Speak of libass instead of MPlayer in the libass license headers.
diego
parents:
26723
diff
changeset
|
19 * with libass; if not, write to the Free Software Foundation, Inc., |
26723 | 20 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
21 */ | |
20008
fa122b7c71c6
Add copyright notice and vim/emacs comments to libass and vf_ass.c.
eugeni
parents:
19405
diff
changeset
|
22 |
18937 | 23 #include "config.h" |
24 | |
25 #include <stdlib.h> | |
19405 | 26 #include <inttypes.h> |
26034 | 27 #include <ft2build.h> |
28 #include FT_GLYPH_H | |
18937 | 29 |
21026
d138463e820b
Collect all includes of mplayer headers in libass in a single file (mputils.h).
eugeni
parents:
20629
diff
changeset
|
30 #include "mputils.h" |
18937 | 31 #include "ass_utils.h" |
32 | |
28718 | 33 int mystrtoi(char** p, int* res) |
18937 | 34 { |
28717
7bbe6626f0e0
Support fractional arguments for some override tags.
eugeni
parents:
26738
diff
changeset
|
35 // NOTE: base argument is ignored, but not used in libass anyway |
7bbe6626f0e0
Support fractional arguments for some override tags.
eugeni
parents:
26738
diff
changeset
|
36 double temp_res; |
18937 | 37 char* start = *p; |
28717
7bbe6626f0e0
Support fractional arguments for some override tags.
eugeni
parents:
26738
diff
changeset
|
38 temp_res = strtod(*p, p); |
7bbe6626f0e0
Support fractional arguments for some override tags.
eugeni
parents:
26738
diff
changeset
|
39 *res = (int) (temp_res + 0.5); |
7bbe6626f0e0
Support fractional arguments for some override tags.
eugeni
parents:
26738
diff
changeset
|
40 if (*p != start) return 1; |
7bbe6626f0e0
Support fractional arguments for some override tags.
eugeni
parents:
26738
diff
changeset
|
41 else return 0; |
7bbe6626f0e0
Support fractional arguments for some override tags.
eugeni
parents:
26738
diff
changeset
|
42 } |
7bbe6626f0e0
Support fractional arguments for some override tags.
eugeni
parents:
26738
diff
changeset
|
43 |
28718 | 44 int mystrtoll(char** p, long long* res) |
28717
7bbe6626f0e0
Support fractional arguments for some override tags.
eugeni
parents:
26738
diff
changeset
|
45 { |
7bbe6626f0e0
Support fractional arguments for some override tags.
eugeni
parents:
26738
diff
changeset
|
46 double temp_res; |
7bbe6626f0e0
Support fractional arguments for some override tags.
eugeni
parents:
26738
diff
changeset
|
47 char* start = *p; |
7bbe6626f0e0
Support fractional arguments for some override tags.
eugeni
parents:
26738
diff
changeset
|
48 temp_res = strtod(*p, p); |
7bbe6626f0e0
Support fractional arguments for some override tags.
eugeni
parents:
26738
diff
changeset
|
49 *res = (long long) (temp_res + 0.5); |
18937 | 50 if (*p != start) return 1; |
51 else return 0; | |
52 } | |
53 | |
54 int mystrtou32(char** p, int base, uint32_t* res) | |
55 { | |
56 char* start = *p; | |
57 *res = strtoll(*p, p, base); | |
58 if (*p != start) return 1; | |
59 else return 0; | |
60 } | |
61 | |
62 int mystrtod(char** p, double* res) | |
63 { | |
64 char* start = *p; | |
65 *res = strtod(*p, p); | |
66 if (*p != start) return 1; | |
67 else return 0; | |
68 } | |
69 | |
70 int strtocolor(char** q, uint32_t* res) | |
71 { | |
72 uint32_t color = 0; | |
73 int result; | |
74 char* p = *q; | |
75 | |
76 if (*p == '&') ++p; | |
20629
e8885ec63928
Introduce MSGT_ASS, use it for all libass messages.
eugeni
parents:
20503
diff
changeset
|
77 else mp_msg(MSGT_ASS, MSGL_DBG2, "suspicious color format: \"%s\"\n", p); |
18937 | 78 |
19003 | 79 if (*p == 'H' || *p == 'h') { |
18937 | 80 ++p; |
81 result = mystrtou32(&p, 16, &color); | |
82 } else { | |
19003 | 83 result = mystrtou32(&p, 0, &color); |
18937 | 84 } |
85 | |
86 { | |
87 unsigned char* tmp = (unsigned char*)(&color); | |
88 unsigned char b; | |
89 b = tmp[0]; tmp[0] = tmp[3]; tmp[3] = b; | |
90 b = tmp[1]; tmp[1] = tmp[2]; tmp[2] = b; | |
91 } | |
92 if (*p == '&') ++p; | |
93 *q = p; | |
94 | |
95 *res = color; | |
96 return result; | |
97 } | |
98 | |
28785 | 99 // Return a boolean value for a string |
100 char parse_bool(char* str) { | |
101 while (*str == ' ' || *str == '\t') | |
102 str++; | |
103 if (!strncasecmp(str, "yes", 3)) | |
104 return 1; | |
105 else if (strtol(str, NULL, 10) > 0) | |
106 return 1; | |
107 return 0; | |
108 } | |
109 | |
26036
8d8c52a169ad
Comment out dump_glyph(): it is unused and, as it is now, breaks compilation.
eugeni
parents:
26034
diff
changeset
|
110 #if 0 |
26034 | 111 static void sprint_tag(uint32_t tag, char* dst) |
112 { | |
113 dst[0] = (tag >> 24) & 0xFF; | |
114 dst[1] = (tag >> 16) & 0xFF; | |
115 dst[2] = (tag >> 8) & 0xFF; | |
116 dst[3] = tag & 0xFF; | |
117 dst[4] = 0; | |
118 } | |
119 | |
120 void dump_glyph(FT_Glyph g) | |
121 { | |
122 char tag[5]; | |
123 int i; | |
124 FT_OutlineGlyph og = (FT_OutlineGlyph)g; | |
125 FT_Outline* o = &(og->outline); | |
126 sprint_tag(g->format, tag); | |
127 printf("glyph: %p \n", g); | |
128 printf("format: %s \n", tag); | |
129 printf("outline: %p \n", o); | |
130 printf("contours: %d, points: %d, points ptr: %p \n", o->n_contours, o->n_points, o->points); | |
131 for (i = 0; i < o->n_points; ++i) { | |
132 printf(" point %f, %f \n", d6_to_double(o->points[i].x), d6_to_double(o->points[i].y)); | |
133 } | |
134 } | |
26036
8d8c52a169ad
Comment out dump_glyph(): it is unused and, as it is now, breaks compilation.
eugeni
parents:
26034
diff
changeset
|
135 #endif |