mirror of https://github.com/mpv-player/mpv
speed improvements
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@2177 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
14600eb524
commit
aeb64d7309
37
libvo/sub.c
37
libvo/sub.c
|
@ -173,19 +173,17 @@ inline static void vo_draw_text_sub(int dxs,int dys,void (*draw_alpha)(int x0,in
|
||||||
// else
|
// else
|
||||||
for (j=0;j<=len;j++){
|
for (j=0;j<=len;j++){
|
||||||
if ((c=t[j])>=0x80){
|
if ((c=t[j])>=0x80){
|
||||||
if (sub_unicode)
|
if (sub_utf8){
|
||||||
c = (c<<8) + t[++j];
|
if ((c & 0xe0) == 0xc0) /* 2 bytes U+00080..U+0007FF*/
|
||||||
else
|
c = (c & 0x1f)<<6 | (t[++j] & 0x3f);
|
||||||
if (sub_utf8){
|
else if((c & 0xf0) == 0xe0)/* 3 bytes U+00800..U+00FFFF*/
|
||||||
if ((c & 0xe0) == 0xc0) /* 2 bytes U+00080..U+0007FF*/
|
c = ((c & 0x0f)<<6 |
|
||||||
c = (c & 0x1f)<<6 | (t[++j] & 0x3f);
|
(t[++j] & 0x3f))<<6 | (t[++j] & 0x3f);
|
||||||
else if((c & 0xf0) == 0xe0)/* 3 bytes U+00800..U+00FFFF*/
|
} else if (sub_unicode)
|
||||||
c = ((c & 0x0f)<<6 |
|
c = (c<<8) + t[++j];
|
||||||
(t[++j] & 0x3f))<<6 | (t[++j] & 0x3f);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (k==MAX_UCS){
|
if (k==MAX_UCS){
|
||||||
utbl[k]=l=0; break;
|
l=0 ; len=j; // cut here
|
||||||
}
|
}
|
||||||
utbl[k++]=c;
|
utbl[k++]=c;
|
||||||
if (c==' '){
|
if (c==' '){
|
||||||
|
@ -193,20 +191,11 @@ inline static void vo_draw_text_sub(int dxs,int dys,void (*draw_alpha)(int x0,in
|
||||||
lastStripPosition=j;
|
lastStripPosition=j;
|
||||||
lastxsize=xsize;
|
lastxsize=xsize;
|
||||||
}
|
}
|
||||||
#if 1
|
|
||||||
else if ((font=vo_font->font[c])>=0){
|
else if ((font=vo_font->font[c])>=0){
|
||||||
if (vo_font->pic_a[font]->h > h){
|
if (vo_font->pic_a[font]->h > h){
|
||||||
h=vo_font->pic_a[font]->h;
|
h=vo_font->pic_a[font]->h;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
#if 0
|
|
||||||
else if ((font=vo_font->font[c])>=0){
|
|
||||||
if ((memy-h)+vo_font->pic_a[font]->h > dys){
|
|
||||||
h=vo_font->pic_a[font]->h;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
xsize+=vo_font->width[c]+vo_font->charspace;
|
xsize+=vo_font->width[c]+vo_font->charspace;
|
||||||
if (dxs<xsize){
|
if (dxs<xsize){
|
||||||
if (lastStripPosition>0){
|
if (lastStripPosition>0){
|
||||||
|
@ -221,20 +210,20 @@ inline static void vo_draw_text_sub(int dxs,int dys,void (*draw_alpha)(int x0,in
|
||||||
} else if (j<len)
|
} else if (j<len)
|
||||||
continue;
|
continue;
|
||||||
if (h>memy){ // out of the screen so end parsing
|
if (h>memy){ // out of the screen so end parsing
|
||||||
memy +=vo_font->height-lasth; // correct the y position
|
memy -=lasth - vo_font->height; // correct the y position
|
||||||
l=0; break;
|
l=0; break;
|
||||||
}
|
}
|
||||||
utbl[k++]=0;
|
utbl[k++]=0;
|
||||||
xtbl[lines++]=(dxs-xsize)/2;
|
xtbl[lines++]=(dxs-xsize)/2;
|
||||||
if (lines==MAX_UCSLINES||k>MAX_UCS){
|
if (lines==MAX_UCSLINES||k>MAX_UCS){
|
||||||
l=0; break;
|
l=0; j=len; // end parsing
|
||||||
} else if(l || j<len){ // not the last line or not the last char
|
} else if(l || j<len){ // not the last line or not the last char
|
||||||
lastStripPosition=-1;
|
lastStripPosition=-1;
|
||||||
xsize=-vo_font->charspace;
|
xsize=-vo_font->charspace;
|
||||||
lasth=h;
|
lasth=h;
|
||||||
h=vo_font->height;
|
h=vo_font->height;
|
||||||
}
|
}
|
||||||
printf("h: %d -> %d \n",vo_font->height,h);
|
// printf("h: %d -> %d \n",vo_font->height,h);
|
||||||
memy -=h; // according to max of vo_font->pic_a[font]->h
|
memy -=h; // according to max of vo_font->pic_a[font]->h
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -248,7 +237,7 @@ inline static void vo_draw_text_sub(int dxs,int dys,void (*draw_alpha)(int x0,in
|
||||||
while (i<lines){
|
while (i<lines){
|
||||||
x= xtbl[i++];
|
x= xtbl[i++];
|
||||||
while ((c=utbl[j++])){
|
while ((c=utbl[j++])){
|
||||||
if ((font=vo_font->font[c])>=0 && y<dys)
|
if ((font=vo_font->font[c])>=0)
|
||||||
draw_alpha(x,y,
|
draw_alpha(x,y,
|
||||||
vo_font->width[c],
|
vo_font->width[c],
|
||||||
vo_font->pic_a[font]->h+y<dys ? vo_font->pic_a[font]->h : dys-y,
|
vo_font->pic_a[font]->h+y<dys ? vo_font->pic_a[font]->h : dys-y,
|
||||||
|
|
Loading…
Reference in New Issue