annotate libvo/font_load.c @ 28992:947ef23ba798

Test if create_vdp_decoder() might succeed by calling it from config() with a small value for max_reference_frames. This does not make automatic recovery by using software decoder possible, but lets MPlayer fail more graciously on - actually existing - buggy hardware that does not support certain H264 widths when using hardware accelerated decoding (784, 864, 944, 1024, 1808, 1888 pixels on NVIDIA G98) and if the user tries to hardware-decode more samples at the same time than supported. Might break playback of H264 Intra-Only samples on hardware with very little video memory.
author cehoyos
date Sat, 21 Mar 2009 20:11:05 +0000
parents 7681eab10aea
children 0f1b5b68af32
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
28446
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28200
diff changeset
1 /*
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28200
diff changeset
2 * This file is part of MPlayer.
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28200
diff changeset
3 *
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28200
diff changeset
4 * MPlayer is free software; you can redistribute it and/or modify
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28200
diff changeset
5 * it under the terms of the GNU General Public License as published by
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28200
diff changeset
6 * the Free Software Foundation; either version 2 of the License, or
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28200
diff changeset
7 * (at your option) any later version.
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28200
diff changeset
8 *
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28200
diff changeset
9 * MPlayer is distributed in the hope that it will be useful,
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28200
diff changeset
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28200
diff changeset
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28200
diff changeset
12 * GNU General Public License for more details.
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28200
diff changeset
13 *
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28200
diff changeset
14 * You should have received a copy of the GNU General Public License along
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28200
diff changeset
15 * with MPlayer; if not, write to the Free Software Foundation, Inc.,
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28200
diff changeset
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28200
diff changeset
17 */
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28200
diff changeset
18
7122
0dc9cb756b68 freetype 2.0/2.1+ support - disabled by default until bugs fixed
arpi
parents: 5928
diff changeset
19 #include "config.h"
0dc9cb756b68 freetype 2.0/2.1+ support - disabled by default until bugs fixed
arpi
parents: 5928
diff changeset
20
213
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
21 #include <stdio.h>
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
22 #include <stdlib.h>
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
23 #include <string.h>
1446
a49fd85fc431 DATADIR/font/ patch by Adam Tla/lka atlka@pg.gda.pl
arpi
parents: 1359
diff changeset
24 #include <sys/types.h>
a49fd85fc431 DATADIR/font/ patch by Adam Tla/lka atlka@pg.gda.pl
arpi
parents: 1359
diff changeset
25 #include <sys/stat.h>
a49fd85fc431 DATADIR/font/ patch by Adam Tla/lka atlka@pg.gda.pl
arpi
parents: 1359
diff changeset
26 #include <unistd.h>
213
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
27
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
28 #include "font_load.h"
13897
41a4fc8421e9 Converted printf calls to mp_msg, reduced verbosity.
diego
parents: 13641
diff changeset
29 #include "mp_msg.h"
213
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
30
339
e7e89cd4169f printf's only if verbose>1
arpi_esp
parents: 250
diff changeset
31 raw_file* load_raw(char *name,int verbose){
213
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
32 int bpp;
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
33 raw_file* raw=malloc(sizeof(raw_file));
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
34 unsigned char head[32];
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
35 FILE *f=fopen(name,"rb");
17791
3c73573843e2 free resources when load_raw fails
reimar
parents: 17766
diff changeset
36 if(!f) goto err_out; // can't open
3c73573843e2 free resources when load_raw fails
reimar
parents: 17766
diff changeset
37 if(fread(head,32,1,f)<1) goto err_out; // too small
3c73573843e2 free resources when load_raw fails
reimar
parents: 17766
diff changeset
38 if(memcmp(head,"mhwanh",6)) goto err_out; // not raw file
213
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
39 raw->w=head[8]*256+head[9];
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
40 raw->h=head[10]*256+head[11];
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
41 raw->c=head[12]*256+head[13];
5928
48e91dc9534b .raw width>=65536 support by Georgi Georgiev <chutz@chubaka.homeip.net>
arpi
parents: 2476
diff changeset
42 if(raw->w == 0) // 2 bytes were not enough for the width... read 4 bytes from the end of the header
48e91dc9534b .raw width>=65536 support by Georgi Georgiev <chutz@chubaka.homeip.net>
arpi
parents: 2476
diff changeset
43 raw->w = ((head[28]*0x100 + head[29])*0x100 + head[30])*0x100 + head[31];
17791
3c73573843e2 free resources when load_raw fails
reimar
parents: 17766
diff changeset
44 if(raw->c>256) goto err_out; // too many colors!?
13897
41a4fc8421e9 Converted printf calls to mp_msg, reduced verbosity.
diego
parents: 13641
diff changeset
45 mp_msg(MSGT_OSD, MSGL_DBG2, "RAW: %s %d x %d, %d colors\n",name,raw->w,raw->h,raw->c);
213
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
46 if(raw->c){
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
47 raw->pal=malloc(raw->c*3);
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
48 fread(raw->pal,3,raw->c,f);
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
49 bpp=1;
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
50 } else {
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
51 raw->pal=NULL;
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
52 bpp=3;
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
53 }
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
54 raw->bmp=malloc(raw->h*raw->w*bpp);
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
55 fread(raw->bmp,raw->h*raw->w*bpp,1,f);
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
56 fclose(f);
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
57 return raw;
17791
3c73573843e2 free resources when load_raw fails
reimar
parents: 17766
diff changeset
58
3c73573843e2 free resources when load_raw fails
reimar
parents: 17766
diff changeset
59 err_out:
3c73573843e2 free resources when load_raw fails
reimar
parents: 17766
diff changeset
60 if (f)
3c73573843e2 free resources when load_raw fails
reimar
parents: 17766
diff changeset
61 fclose(f);
3c73573843e2 free resources when load_raw fails
reimar
parents: 17766
diff changeset
62 free(raw);
3c73573843e2 free resources when load_raw fails
reimar
parents: 17766
diff changeset
63 return NULL;
213
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
64 }
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
65
728
138d38a5915a fixed extern
arpi_esp
parents: 727
diff changeset
66 extern int sub_unicode;
138d38a5915a fixed extern
arpi_esp
parents: 727
diff changeset
67
18980
ed69754aa58d Marks several string parameters as const when they are not modified in the function, Patch by Stefan Huehner, stefan AT huehner-org
reynaldo
parents: 17791
diff changeset
68 font_desc_t* read_font_desc(const char* fname,float factor,int verbose){
213
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
69 unsigned char sor[1024];
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
70 unsigned char sor2[1024];
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
71 font_desc_t *desc;
17766
b8be9bedc108 initialize f to NULL, needed if desc=malloc... fails
reimar
parents: 14065
diff changeset
72 FILE *f = NULL;
2222
ddf897c38fb1 read font files from the same dir as font.desc or as specified in font.desc
atlka
parents: 1446
diff changeset
73 char *dn;
24245
188964a48302 warning fix:
diego
parents: 24242
diff changeset
74 //struct stat fstate;
213
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
75 char section[64];
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
76 int i,j;
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
77 int chardb=0;
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
78 int fontdb=-1;
214
09d0f437b817 desc fileformat changes
arpi_esp
parents: 213
diff changeset
79 int version=0;
8635
81dbd28ef7c0 these patches let ,,oldstyle'' and freetype subtitle renderers live
arpi
parents: 7122
diff changeset
80 int first=1;
213
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
81
13641
a22f1b86ec0f some memory leaks fixed
reimar
parents: 12793
diff changeset
82 desc=malloc(sizeof(font_desc_t));if(!desc) goto fail_out;
213
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
83 memset(desc,0,sizeof(font_desc_t));
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
84
14065
de6ed5d2805d more verbosity spam fixes
rfelker
parents: 13897
diff changeset
85 f=fopen(fname,"rt");if(!f){ mp_msg(MSGT_OSD, MSGL_V, "font: can't open file: %s\n",fname); goto fail_out;}
213
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
86
2222
ddf897c38fb1 read font files from the same dir as font.desc or as specified in font.desc
atlka
parents: 1446
diff changeset
87 i = strlen (fname) - 9;
2223
560267b2ede8 cosmetic changes
atlka
parents: 2222
diff changeset
88 if ((dn = malloc(i+1))){
2222
ddf897c38fb1 read font files from the same dir as font.desc or as specified in font.desc
atlka
parents: 1446
diff changeset
89 strncpy (dn, fname, i);
ddf897c38fb1 read font files from the same dir as font.desc or as specified in font.desc
atlka
parents: 1446
diff changeset
90 dn[i]='\0';
ddf897c38fb1 read font files from the same dir as font.desc or as specified in font.desc
atlka
parents: 1446
diff changeset
91 }
ddf897c38fb1 read font files from the same dir as font.desc or as specified in font.desc
atlka
parents: 1446
diff changeset
92
ddf897c38fb1 read font files from the same dir as font.desc or as specified in font.desc
atlka
parents: 1446
diff changeset
93 desc->fpath = dn; // search in the same dir as fonts.desc
1446
a49fd85fc431 DATADIR/font/ patch by Adam Tla/lka atlka@pg.gda.pl
arpi
parents: 1359
diff changeset
94
2222
ddf897c38fb1 read font files from the same dir as font.desc or as specified in font.desc
atlka
parents: 1446
diff changeset
95 // desc->fpath=get_path("font/");
ddf897c38fb1 read font files from the same dir as font.desc or as specified in font.desc
atlka
parents: 1446
diff changeset
96 // if (stat(desc->fpath, &fstate)!=0) desc->fpath=DATADIR"/font";
ddf897c38fb1 read font files from the same dir as font.desc or as specified in font.desc
atlka
parents: 1446
diff changeset
97
ddf897c38fb1 read font files from the same dir as font.desc or as specified in font.desc
atlka
parents: 1446
diff changeset
98
ddf897c38fb1 read font files from the same dir as font.desc or as specified in font.desc
atlka
parents: 1446
diff changeset
99
1446
a49fd85fc431 DATADIR/font/ patch by Adam Tla/lka atlka@pg.gda.pl
arpi
parents: 1359
diff changeset
100
213
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
101 // set up some defaults, and erase table
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
102 desc->charspace=2;
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
103 desc->spacewidth=12;
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
104 desc->height=0;
12609
4be019266884 array initialization fix by SungKwanKang <ksquarekr at yahoo.com>
faust3
parents: 10272
diff changeset
105 for(i=0;i<65536;i++) desc->start[i]=desc->width[i]=desc->font[i]=-1;
213
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
106
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
107 section[0]=0;
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
108
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
109 while(fgets(sor,1020,f)){
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
110 unsigned char* p[8];
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
111 int pdb=0;
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
112 unsigned char *s=sor;
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
113 unsigned char *d=sor2;
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
114 int ec=' ';
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
115 int id=0;
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
116 sor[1020]=0;
8635
81dbd28ef7c0 these patches let ,,oldstyle'' and freetype subtitle renderers live
arpi
parents: 7122
diff changeset
117
81dbd28ef7c0 these patches let ,,oldstyle'' and freetype subtitle renderers live
arpi
parents: 7122
diff changeset
118 /* skip files that look like: TTF (0x00, 0x01), PFM (0x00, 0x01), PFB
81dbd28ef7c0 these patches let ,,oldstyle'' and freetype subtitle renderers live
arpi
parents: 7122
diff changeset
119 * (0x80, 0x01), PCF (0x01, 0x66), fon ("MZ"), gzipped (0x1f, 0x8b) */
81dbd28ef7c0 these patches let ,,oldstyle'' and freetype subtitle renderers live
arpi
parents: 7122
diff changeset
120
81dbd28ef7c0 these patches let ,,oldstyle'' and freetype subtitle renderers live
arpi
parents: 7122
diff changeset
121 if (first) {
81dbd28ef7c0 these patches let ,,oldstyle'' and freetype subtitle renderers live
arpi
parents: 7122
diff changeset
122 if (!sor[0] || sor[1] == 1 || (sor[0] == 'M' && sor[1] == 'Z') || (sor[0] == 0x1f && sor[1] == 0x8b) || (sor[0] == 1 && sor[1] == 0x66)) {
19551
4186a45ce6c8 Clarify messages.
diego
parents: 19386
diff changeset
123 mp_msg(MSGT_OSD, MSGL_ERR, "%s doesn't look like a bitmap font description, ignoring.\n", fname);
13641
a22f1b86ec0f some memory leaks fixed
reimar
parents: 12793
diff changeset
124 goto fail_out;
8635
81dbd28ef7c0 these patches let ,,oldstyle'' and freetype subtitle renderers live
arpi
parents: 7122
diff changeset
125 }
81dbd28ef7c0 these patches let ,,oldstyle'' and freetype subtitle renderers live
arpi
parents: 7122
diff changeset
126 first = 0;
81dbd28ef7c0 these patches let ,,oldstyle'' and freetype subtitle renderers live
arpi
parents: 7122
diff changeset
127 }
81dbd28ef7c0 these patches let ,,oldstyle'' and freetype subtitle renderers live
arpi
parents: 7122
diff changeset
128
213
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
129 p[0]=d;++pdb;
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
130 while(1){
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
131 int c=*s++;
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
132 if(c==0 || c==13 || c==10) break;
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
133 if(!id){
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
134 if(c==39 || c==34){ id=c;continue;} // idezojel
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
135 if(c==';' || c=='#') break;
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
136 if(c==9) c=' ';
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
137 if(c==' '){
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
138 if(ec==' ') continue;
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
139 *d=0; ++d;
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
140 p[pdb]=d;++pdb;
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
141 if(pdb>=8) break;
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
142 continue;
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
143 }
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
144 } else {
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
145 if(id==c){ id=0;continue;} // idezojel
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
146
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
147 }
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
148 *d=c;d++;
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
149 ec=c;
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
150 }
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
151 if(d==sor2) continue; // skip empty lines
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
152 *d=0;
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
153
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
154 // printf("params=%d sor=%s\n",pdb,sor);
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
155 // for(i=0;i<pdb;i++) printf(" param %d = '%s'\n",i,p[i]);
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
156
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
157 if(pdb==1 && p[0][0]=='['){
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
158 int len=strlen(p[0]);
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
159 if(len && len<63 && p[0][len-1]==']'){
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
160 strcpy(section,p[0]);
13897
41a4fc8421e9 Converted printf calls to mp_msg, reduced verbosity.
diego
parents: 13641
diff changeset
161 mp_msg(MSGT_OSD, MSGL_DBG2, "font: Reading section: %s\n",section);
213
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
162 if(strcmp(section,"[files]")==0){
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
163 ++fontdb;
13897
41a4fc8421e9 Converted printf calls to mp_msg, reduced verbosity.
diego
parents: 13641
diff changeset
164 if(fontdb>=16){ mp_msg(MSGT_OSD, MSGL_ERR, "font: Too many bitmaps defined.\n");goto fail_out;}
213
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
165 }
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
166 continue;
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
167 }
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
168 }
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
169
1353
c3e3b0ae4d06 Applied DATADIR patch by Vladimir Kushnir
arpi
parents: 947
diff changeset
170 if(strcmp(section,"[fpath]")==0){
c3e3b0ae4d06 Applied DATADIR patch by Vladimir Kushnir
arpi
parents: 947
diff changeset
171 if(pdb==1){
2222
ddf897c38fb1 read font files from the same dir as font.desc or as specified in font.desc
atlka
parents: 1446
diff changeset
172 if (desc->fpath)
ddf897c38fb1 read font files from the same dir as font.desc or as specified in font.desc
atlka
parents: 1446
diff changeset
173 free (desc->fpath); // release previously allocated memory
1353
c3e3b0ae4d06 Applied DATADIR patch by Vladimir Kushnir
arpi
parents: 947
diff changeset
174 desc->fpath=strdup(p[0]);
c3e3b0ae4d06 Applied DATADIR patch by Vladimir Kushnir
arpi
parents: 947
diff changeset
175 continue;
c3e3b0ae4d06 Applied DATADIR patch by Vladimir Kushnir
arpi
parents: 947
diff changeset
176 }
c3e3b0ae4d06 Applied DATADIR patch by Vladimir Kushnir
arpi
parents: 947
diff changeset
177 } else
c3e3b0ae4d06 Applied DATADIR patch by Vladimir Kushnir
arpi
parents: 947
diff changeset
178
25335
6bc98534572a SYS_AMIGAOS4 --> __AMIGAOS4__
diego
parents: 25100
diff changeset
179 #ifdef __AMIGAOS4__
19386
01853e915882 Make path separator for font path a define and set it to a better value for AMIGAOS
reimar
parents: 18980
diff changeset
180 #define FONT_PATH_SEP ""
01853e915882 Make path separator for font path a define and set it to a better value for AMIGAOS
reimar
parents: 18980
diff changeset
181 #else
01853e915882 Make path separator for font path a define and set it to a better value for AMIGAOS
reimar
parents: 18980
diff changeset
182 //! path seperator for font paths, may not be more than one character
01853e915882 Make path separator for font path a define and set it to a better value for AMIGAOS
reimar
parents: 18980
diff changeset
183 #define FONT_PATH_SEP "/"
01853e915882 Make path separator for font path a define and set it to a better value for AMIGAOS
reimar
parents: 18980
diff changeset
184 #endif
01853e915882 Make path separator for font path a define and set it to a better value for AMIGAOS
reimar
parents: 18980
diff changeset
185
213
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
186 if(strcmp(section,"[files]")==0){
19386
01853e915882 Make path separator for font path a define and set it to a better value for AMIGAOS
reimar
parents: 18980
diff changeset
187 char *default_dir=MPLAYER_DATADIR FONT_PATH_SEP "font";
213
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
188 if(pdb==2 && strcmp(p[0],"alpha")==0){
1353
c3e3b0ae4d06 Applied DATADIR patch by Vladimir Kushnir
arpi
parents: 947
diff changeset
189 char *cp;
13641
a22f1b86ec0f some memory leaks fixed
reimar
parents: 12793
diff changeset
190 if (!(cp=malloc(strlen(desc->fpath)+strlen(p[1])+2))) goto fail_out;
1353
c3e3b0ae4d06 Applied DATADIR patch by Vladimir Kushnir
arpi
parents: 947
diff changeset
191
19386
01853e915882 Make path separator for font path a define and set it to a better value for AMIGAOS
reimar
parents: 18980
diff changeset
192 snprintf(cp,strlen(desc->fpath)+strlen(p[1])+2,"%s" FONT_PATH_SEP "%s",
1353
c3e3b0ae4d06 Applied DATADIR patch by Vladimir Kushnir
arpi
parents: 947
diff changeset
193 desc->fpath,p[1]);
c3e3b0ae4d06 Applied DATADIR patch by Vladimir Kushnir
arpi
parents: 947
diff changeset
194 if(!((desc->pic_a[fontdb]=load_raw(cp,verbose)))){
216
338b5664ea13 Search font files in ~/.mplayer/font/ instead of current dir
lgb
parents: 215
diff changeset
195 free(cp);
2238
be4160d7db48 if not found using fpath try to load font bitmaps from default dir
atlka
parents: 2223
diff changeset
196 if (!(cp=malloc(strlen(default_dir)+strlen(p[1])+2)))
13641
a22f1b86ec0f some memory leaks fixed
reimar
parents: 12793
diff changeset
197 goto fail_out;
19386
01853e915882 Make path separator for font path a define and set it to a better value for AMIGAOS
reimar
parents: 18980
diff changeset
198 snprintf(cp,strlen(default_dir)+strlen(p[1])+2,"%s" FONT_PATH_SEP "%s",
2238
be4160d7db48 if not found using fpath try to load font bitmaps from default dir
atlka
parents: 2223
diff changeset
199 default_dir,p[1]);
be4160d7db48 if not found using fpath try to load font bitmaps from default dir
atlka
parents: 2223
diff changeset
200 if (!((desc->pic_a[fontdb]=load_raw(cp,verbose)))){
13897
41a4fc8421e9 Converted printf calls to mp_msg, reduced verbosity.
diego
parents: 13641
diff changeset
201 mp_msg(MSGT_OSD, MSGL_ERR, "Can't load font bitmap: %s\n",p[1]);
2238
be4160d7db48 if not found using fpath try to load font bitmaps from default dir
atlka
parents: 2223
diff changeset
202 free(cp);
13641
a22f1b86ec0f some memory leaks fixed
reimar
parents: 12793
diff changeset
203 goto fail_out;
2238
be4160d7db48 if not found using fpath try to load font bitmaps from default dir
atlka
parents: 2223
diff changeset
204 }
213
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
205 }
216
338b5664ea13 Search font files in ~/.mplayer/font/ instead of current dir
lgb
parents: 215
diff changeset
206 free(cp);
213
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
207 continue;
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
208 }
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
209 if(pdb==2 && strcmp(p[0],"bitmap")==0){
1353
c3e3b0ae4d06 Applied DATADIR patch by Vladimir Kushnir
arpi
parents: 947
diff changeset
210 char *cp;
13641
a22f1b86ec0f some memory leaks fixed
reimar
parents: 12793
diff changeset
211 if (!(cp=malloc(strlen(desc->fpath)+strlen(p[1])+2))) goto fail_out;
1353
c3e3b0ae4d06 Applied DATADIR patch by Vladimir Kushnir
arpi
parents: 947
diff changeset
212
19386
01853e915882 Make path separator for font path a define and set it to a better value for AMIGAOS
reimar
parents: 18980
diff changeset
213 snprintf(cp,strlen(desc->fpath)+strlen(p[1])+2,"%s" FONT_PATH_SEP "%s",
1353
c3e3b0ae4d06 Applied DATADIR patch by Vladimir Kushnir
arpi
parents: 947
diff changeset
214 desc->fpath,p[1]);
c3e3b0ae4d06 Applied DATADIR patch by Vladimir Kushnir
arpi
parents: 947
diff changeset
215 if(!((desc->pic_b[fontdb]=load_raw(cp,verbose)))){
216
338b5664ea13 Search font files in ~/.mplayer/font/ instead of current dir
lgb
parents: 215
diff changeset
216 free(cp);
2238
be4160d7db48 if not found using fpath try to load font bitmaps from default dir
atlka
parents: 2223
diff changeset
217 if (!(cp=malloc(strlen(default_dir)+strlen(p[1])+2)))
13641
a22f1b86ec0f some memory leaks fixed
reimar
parents: 12793
diff changeset
218 goto fail_out;
19386
01853e915882 Make path separator for font path a define and set it to a better value for AMIGAOS
reimar
parents: 18980
diff changeset
219 snprintf(cp,strlen(default_dir)+strlen(p[1])+2,"%s" FONT_PATH_SEP "%s",
2238
be4160d7db48 if not found using fpath try to load font bitmaps from default dir
atlka
parents: 2223
diff changeset
220 default_dir,p[1]);
be4160d7db48 if not found using fpath try to load font bitmaps from default dir
atlka
parents: 2223
diff changeset
221 if (!((desc->pic_b[fontdb]=load_raw(cp,verbose)))){
13897
41a4fc8421e9 Converted printf calls to mp_msg, reduced verbosity.
diego
parents: 13641
diff changeset
222 mp_msg(MSGT_OSD, MSGL_ERR, "Can't load font bitmap: %s\n",p[1]);
2238
be4160d7db48 if not found using fpath try to load font bitmaps from default dir
atlka
parents: 2223
diff changeset
223 free(cp);
13641
a22f1b86ec0f some memory leaks fixed
reimar
parents: 12793
diff changeset
224 goto fail_out;
2238
be4160d7db48 if not found using fpath try to load font bitmaps from default dir
atlka
parents: 2223
diff changeset
225 }
213
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
226 }
216
338b5664ea13 Search font files in ~/.mplayer/font/ instead of current dir
lgb
parents: 215
diff changeset
227 free(cp);
213
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
228 continue;
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
229 }
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
230 } else
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
231
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
232 if(strcmp(section,"[info]")==0){
214
09d0f437b817 desc fileformat changes
arpi_esp
parents: 213
diff changeset
233 if(pdb==2 && strcmp(p[0],"name")==0){
09d0f437b817 desc fileformat changes
arpi_esp
parents: 213
diff changeset
234 desc->name=strdup(p[1]);
09d0f437b817 desc fileformat changes
arpi_esp
parents: 213
diff changeset
235 continue;
09d0f437b817 desc fileformat changes
arpi_esp
parents: 213
diff changeset
236 }
09d0f437b817 desc fileformat changes
arpi_esp
parents: 213
diff changeset
237 if(pdb==2 && strcmp(p[0],"descversion")==0){
09d0f437b817 desc fileformat changes
arpi_esp
parents: 213
diff changeset
238 version=atoi(p[1]);
09d0f437b817 desc fileformat changes
arpi_esp
parents: 213
diff changeset
239 continue;
09d0f437b817 desc fileformat changes
arpi_esp
parents: 213
diff changeset
240 }
213
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
241 if(pdb==2 && strcmp(p[0],"spacewidth")==0){
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
242 desc->spacewidth=atoi(p[1]);
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
243 continue;
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
244 }
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
245 if(pdb==2 && strcmp(p[0],"charspace")==0){
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
246 desc->charspace=atoi(p[1]);
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
247 continue;
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
248 }
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
249 if(pdb==2 && strcmp(p[0],"height")==0){
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
250 desc->height=atoi(p[1]);
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
251 continue;
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
252 }
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
253 } else
214
09d0f437b817 desc fileformat changes
arpi_esp
parents: 213
diff changeset
254
213
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
255 if(strcmp(section,"[characters]")==0){
219
bc5c75b7a401 hex charcode support
arpi_esp
parents: 217
diff changeset
256 if(pdb==3){
213
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
257 int chr=p[0][0];
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
258 int start=atoi(p[1]);
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
259 int end=atoi(p[2]);
727
cc208ebcb9f6 Deals with unicode/nounicode.
atmosfear
parents: 706
diff changeset
260 if(sub_unicode && (chr>=0x80)) chr=(chr<<8)+p[0][1];
706
8a7666a78f83 better .smi support and display two-byte characters- patch by Sunjin Yang
arpi_esp
parents: 340
diff changeset
261 else if(strlen(p[0])!=1) chr=strtol(p[0],NULL,0);
213
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
262 if(end<start) {
13897
41a4fc8421e9 Converted printf calls to mp_msg, reduced verbosity.
diego
parents: 13641
diff changeset
263 mp_msg(MSGT_OSD, MSGL_WARN, "error in font desc: end<start for char '%c'\n",chr);
213
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
264 } else {
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
265 desc->start[chr]=start;
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
266 desc->width[chr]=end-start+1;
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
267 desc->font[chr]=fontdb;
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
268 // printf("char %d '%c' start=%d width=%d\n",chr,chr,desc->start[chr],desc->width[chr]);
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
269 ++chardb;
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
270 }
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
271 continue;
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
272 }
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
273 }
13897
41a4fc8421e9 Converted printf calls to mp_msg, reduced verbosity.
diego
parents: 13641
diff changeset
274 mp_msg(MSGT_OSD, MSGL_ERR, "Syntax error in font desc: %s",sor);
13641
a22f1b86ec0f some memory leaks fixed
reimar
parents: 12793
diff changeset
275 goto fail_out;
213
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
276
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
277 }
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
278 fclose(f);
13641
a22f1b86ec0f some memory leaks fixed
reimar
parents: 12793
diff changeset
279 f = NULL;
213
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
280
12793
a9429d90157a avoid using corrupted font descriptions patch by Daniel von Dincklage <danielvd+mpl@cs.colorado.edu>
faust3
parents: 12609
diff changeset
281 if (first == 1) {
13897
41a4fc8421e9 Converted printf calls to mp_msg, reduced verbosity.
diego
parents: 13641
diff changeset
282 mp_msg(MSGT_OSD, MSGL_ERR, "%s is empty or a directory, ignoring.\n", fname);
13641
a22f1b86ec0f some memory leaks fixed
reimar
parents: 12793
diff changeset
283 goto fail_out;
12793
a9429d90157a avoid using corrupted font descriptions patch by Daniel von Dincklage <danielvd+mpl@cs.colorado.edu>
faust3
parents: 12609
diff changeset
284 }
a9429d90157a avoid using corrupted font descriptions patch by Daniel von Dincklage <danielvd+mpl@cs.colorado.edu>
faust3
parents: 12609
diff changeset
285
213
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
286 //printf("font: pos of U = %d\n",desc->start[218]);
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
287
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
288 for(i=0;i<=fontdb;i++){
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
289 if(!desc->pic_a[i] || !desc->pic_b[i]){
13897
41a4fc8421e9 Converted printf calls to mp_msg, reduced verbosity.
diego
parents: 13641
diff changeset
290 mp_msg(MSGT_OSD, MSGL_ERR, "font: Missing bitmap(s) for sub-font #%d\n",i);
13641
a22f1b86ec0f some memory leaks fixed
reimar
parents: 12793
diff changeset
291 goto fail_out;
213
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
292 }
249
2dadc379a934 OSD/SUB image quality & speed improvement
arpi_esp
parents: 219
diff changeset
293 //if(factor!=1.0f)
2dadc379a934 OSD/SUB image quality & speed improvement
arpi_esp
parents: 219
diff changeset
294 {
215
09d565842a33 font alpha resampling, see -ffactor
arpi_esp
parents: 214
diff changeset
295 // re-sample alpha
09d565842a33 font alpha resampling, see -ffactor
arpi_esp
parents: 214
diff changeset
296 int f=factor*256.0f;
09d565842a33 font alpha resampling, see -ffactor
arpi_esp
parents: 214
diff changeset
297 int size=desc->pic_a[i]->w*desc->pic_a[i]->h;
09d565842a33 font alpha resampling, see -ffactor
arpi_esp
parents: 214
diff changeset
298 int j;
13897
41a4fc8421e9 Converted printf calls to mp_msg, reduced verbosity.
diego
parents: 13641
diff changeset
299 mp_msg(MSGT_OSD, MSGL_DBG2, "font: resampling alpha by factor %5.3f (%d) ",factor,f);fflush(stdout);
215
09d565842a33 font alpha resampling, see -ffactor
arpi_esp
parents: 214
diff changeset
300 for(j=0;j<size;j++){
947
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 728
diff changeset
301 int x=desc->pic_a[i]->bmp[j]; // alpha
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 728
diff changeset
302 int y=desc->pic_b[i]->bmp[j]; // bitmap
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 728
diff changeset
303
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 728
diff changeset
304 #ifdef FAST_OSD
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 728
diff changeset
305 x=(x<(255-f))?0:1;
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 728
diff changeset
306 #else
249
2dadc379a934 OSD/SUB image quality & speed improvement
arpi_esp
parents: 219
diff changeset
307
250
d4f711fde94b optimized alpha resampling
arpi_esp
parents: 249
diff changeset
308 x=255-((x*f)>>8); // scale
d4f711fde94b optimized alpha resampling
arpi_esp
parents: 249
diff changeset
309 //if(x<0) x=0; else if(x>255) x=255;
d4f711fde94b optimized alpha resampling
arpi_esp
parents: 249
diff changeset
310 //x^=255; // invert
d4f711fde94b optimized alpha resampling
arpi_esp
parents: 249
diff changeset
311
249
2dadc379a934 OSD/SUB image quality & speed improvement
arpi_esp
parents: 219
diff changeset
312 if(x+y>255) x=255-y; // to avoid overflows
2dadc379a934 OSD/SUB image quality & speed improvement
arpi_esp
parents: 219
diff changeset
313
2dadc379a934 OSD/SUB image quality & speed improvement
arpi_esp
parents: 219
diff changeset
314 //x=0;
2dadc379a934 OSD/SUB image quality & speed improvement
arpi_esp
parents: 219
diff changeset
315 //x=((x*f*(255-y))>>16);
2dadc379a934 OSD/SUB image quality & speed improvement
arpi_esp
parents: 219
diff changeset
316 //x=((x*f*(255-y))>>16)+y;
215
09d565842a33 font alpha resampling, see -ffactor
arpi_esp
parents: 214
diff changeset
317 //x=(x*f)>>8;if(x<y) x=y;
250
d4f711fde94b optimized alpha resampling
arpi_esp
parents: 249
diff changeset
318
249
2dadc379a934 OSD/SUB image quality & speed improvement
arpi_esp
parents: 219
diff changeset
319 if(x<1) x=1; else
2dadc379a934 OSD/SUB image quality & speed improvement
arpi_esp
parents: 219
diff changeset
320 if(x>=252) x=0;
947
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 728
diff changeset
321 #endif
250
d4f711fde94b optimized alpha resampling
arpi_esp
parents: 249
diff changeset
322
215
09d565842a33 font alpha resampling, see -ffactor
arpi_esp
parents: 214
diff changeset
323 desc->pic_a[i]->bmp[j]=x;
250
d4f711fde94b optimized alpha resampling
arpi_esp
parents: 249
diff changeset
324 // desc->pic_b[i]->bmp[j]=0; // hack
215
09d565842a33 font alpha resampling, see -ffactor
arpi_esp
parents: 214
diff changeset
325 }
13897
41a4fc8421e9 Converted printf calls to mp_msg, reduced verbosity.
diego
parents: 13641
diff changeset
326 mp_msg(MSGT_OSD, MSGL_DBG2, "DONE!\n");
215
09d565842a33 font alpha resampling, see -ffactor
arpi_esp
parents: 214
diff changeset
327 }
213
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
328 if(!desc->height) desc->height=desc->pic_a[i]->h;
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
329 }
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
330
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
331 j='_';if(desc->font[j]<0) j='?';
12609
4be019266884 array initialization fix by SungKwanKang <ksquarekr at yahoo.com>
faust3
parents: 10272
diff changeset
332 for(i=0;i<65536;i++)
213
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
333 if(desc->font[i]<0){
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
334 desc->start[i]=desc->start[j];
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
335 desc->width[i]=desc->width[j];
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
336 desc->font[i]=desc->font[j];
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
337 }
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
338 desc->font[' ']=-1;
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
339 desc->width[' ']=desc->spacewidth;
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
340
19551
4186a45ce6c8 Clarify messages.
diego
parents: 19386
diff changeset
341 mp_msg(MSGT_OSD, MSGL_V, "Bitmap font %s loaded successfully! (%d chars)\n",fname,chardb);
213
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
342
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
343 return desc;
13641
a22f1b86ec0f some memory leaks fixed
reimar
parents: 12793
diff changeset
344
a22f1b86ec0f some memory leaks fixed
reimar
parents: 12793
diff changeset
345 fail_out:
a22f1b86ec0f some memory leaks fixed
reimar
parents: 12793
diff changeset
346 if (f)
a22f1b86ec0f some memory leaks fixed
reimar
parents: 12793
diff changeset
347 fclose(f);
a22f1b86ec0f some memory leaks fixed
reimar
parents: 12793
diff changeset
348 if (desc->fpath)
a22f1b86ec0f some memory leaks fixed
reimar
parents: 12793
diff changeset
349 free(desc->fpath);
a22f1b86ec0f some memory leaks fixed
reimar
parents: 12793
diff changeset
350 if (desc->name)
a22f1b86ec0f some memory leaks fixed
reimar
parents: 12793
diff changeset
351 free(desc->name);
a22f1b86ec0f some memory leaks fixed
reimar
parents: 12793
diff changeset
352 if (desc)
a22f1b86ec0f some memory leaks fixed
reimar
parents: 12793
diff changeset
353 free(desc);
a22f1b86ec0f some memory leaks fixed
reimar
parents: 12793
diff changeset
354 return NULL;
213
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents:
diff changeset
355 }
28200
56868e6fb340 Conditionally define render_one_glyph and kerning dummy functions in
diego
parents: 28199
diff changeset
356
56868e6fb340 Conditionally define render_one_glyph and kerning dummy functions in
diego
parents: 28199
diff changeset
357 #ifndef CONFIG_FREETYPE
56868e6fb340 Conditionally define render_one_glyph and kerning dummy functions in
diego
parents: 28199
diff changeset
358 void render_one_glyph(font_desc_t *desc, int c) {}
56868e6fb340 Conditionally define render_one_glyph and kerning dummy functions in
diego
parents: 28199
diff changeset
359 int kerning(font_desc_t *desc, int prevc, int c) { return 0; }
56868e6fb340 Conditionally define render_one_glyph and kerning dummy functions in
diego
parents: 28199
diff changeset
360 #endif