亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? subreader.c.svn-base

?? sigmadesign smp8623 gui source code ,bingo
?? SVN-BASE
?? 第 1 頁 / 共 4 頁
字號:
	return NULL;    }    // we do overlap if the user forced it (suboverlap_enable == 2) or    // the user didn't forced no-overlapsub and the format is Jacosub or Ssa.    // this is because usually overlapping subtitles are found in these formats,    // while in others they are probably result of bad timing    adjust_subs_time(first, 6.0, fps, 1, sub_num, uses_time);/*~6 secs AST*/    return_sub = first;    if (return_sub == NULL) return NULL;    subt_data = MALLOC(sizeof(sub_data));    subt_data->filename = STRDUP(filename);//strdup(filename);    subt_data->sub_uses_time = uses_time;    subt_data->sub_num = sub_num;    subt_data->sub_errs = sub_errs;    subt_data->subtitles = return_sub;    subt_data->max = n_max;    return subt_data;}static void strcpy_trim(RMascii *d, RMascii *s){    // skip leading whitespace    while (*s && !isalnum(*s)) {	s++;    }    for (;;) {	// copy word	while (*s && isalnum(*s)) {	    *d = tolower(*s);	    s++; d++;	}	if (*s == 0) break;	// trim excess whitespace	while (*s && !isalnum(*s)) {	    s++;	}	if (*s == 0) break;	*d++ = ' ';    }    *d = 0;}static void strcpy_strip_ext(RMascii *d, RMascii *s){    RMascii *tmp = strrchr(s,'.');    if (!tmp) {	strcpy(d, s);	return;    } else {	strncpy(d, s, tmp-s);	d[tmp-s] = 0;    }    while (*d) {	*d = tolower(*d);	d++;    }}static void strcpy_get_ext(RMascii *d, RMascii *s){    RMascii *tmp = strrchr(s,'.');    if (!tmp) {	strcpy(d, "");	return;    } else {	strcpy(d, tmp+1);   }}static int whiteonly(RMascii *s){    while (*s) {	if (isalnum(*s)) return 0;	s++;  }    return 1;}typedef struct _subfn{    int priority;    RMascii *fname;} subfn;static int compare_sub_priority(const void *a, const void *b){    if (((const subfn*)a)->priority > ((const subfn*)b)->priority) {	return -1;    } else if (((const subfn*)a)->priority < ((const subfn*)b)->priority) {	return 1;    } else {	return strcoll(((const subfn*)a)->fname, ((const subfn*)b)->fname);    }}RMascii** sub_filenames(const RMascii* path, RMascii *fname){    RMascii *f_dir, *f_fname, *f_fname_noext, *f_fname_trim, *tmp, *tmp_sub_id;    RMascii *tmp_fname_noext, *tmp_fname_trim, *tmp_fname_ext, *tmpresult;    int len, pos, found, i, j;    RMascii * sub_exts[] = {  "utf", "utf8", "utf-8", "sub", "srt", "smi", "rt", "txt", "ssa", "aqt", "jss", "js", "ass", NULL};    subfn *result;    RMascii **result2;    int subcnt;    FILE *f;    DIR *d;    struct dirent *de;//     printf ("TEMP: check1\n");    len = (RMasciiLength(fname) > 256 ? RMasciiLength(fname) : 256)	+(RMasciiLength(path) > 256 ? RMasciiLength(path) : 256)+2;    f_dir = MALLOC(len);    f_fname = MALLOC(len);    f_fname_noext = MALLOC(len);    f_fname_trim = MALLOC(len);    tmp_fname_noext = MALLOC(len);    tmp_fname_trim = MALLOC(len);    tmp_fname_ext = MALLOC(len);    tmpresult = MALLOC(len);//    printf ("TEMP: check2\n");    result = MALLOC(sizeof(subfn)*MAX_SUBTITLE_FILES);    RMMemset(result, 0, sizeof(subfn)*MAX_SUBTITLE_FILES);//    printf ("TEMP: check3\n");    subcnt = 0;    tmp = strrchr(fname,'/');    // extract filename & dirname from fname    if (tmp) {    	RMCopyAscii(f_fname, tmp+1);	pos = tmp - fname;	RMNCopyAscii(f_dir, fname, pos+1);	f_dir[pos+1] = 0;    } else {	RMCopyAscii(f_fname, fname);	RMCopyAscii(f_dir, "./");    }//    printf ("TEMP: check4 %s %s\n", f_dir, f_fname);    strcpy_strip_ext(f_fname_noext, f_fname);    strcpy_trim(f_fname_trim, f_fname_noext);    tmp_sub_id = NULL;    if (dvdsub_lang && !whiteonly(dvdsub_lang)) {	tmp_sub_id = MALLOC(RMasciiLength(dvdsub_lang)+1);	strcpy_trim(tmp_sub_id, dvdsub_lang);    }//    printf ("TEMP: check41\n");    // 0 = nothing    // 1 = any subtitle file    // 2 = any sub file containing movie name    // 3 = sub file containing movie name and the lang extension    for (j = 0; j <= 3; j++) {	d = opendir(j == 0 ? f_dir : path);//	printf ("TEMP: check42 %p\n", d);	if (d) {//		printf ("TEMP: wytre\n");	    while ((de = readdir(d))) {//	    	printf ("TEMP: neshto procheteno\n");		// retrieve various parts of the filename		strcpy_strip_ext(tmp_fname_noext, de->d_name);		strcpy_get_ext(tmp_fname_ext, de->d_name);		strcpy_trim(tmp_fname_trim, tmp_fname_noext);//		printf ("TEMP: %s %s\n", tmp_fname_noext, tmp_fname_ext);		// does it end with a subtitle extension?		found = 0;		for (i = 0; sub_exts[i]; i++) {		    if (strcasecmp(sub_exts[i], tmp_fname_ext) == 0) {				found = 1;//				printf("found one\n");				break;		    }		}		// we have a (likely) subtitle file		if (found) {		    int prio = 0;//		    printf("check prio\n");		    if (!prio && tmp_sub_id)		    {				sprintf(tmpresult, "%s %s", f_fname_trim, tmp_sub_id);//				printf ("TEMP: check5 %s %s\n", f_fname_trim, tmp_sub_id);				if (strcmp(tmp_fname_trim, tmpresult) == 0 && sub_match_fuzziness >= 1) {			    	// matches the movie name + lang extension			    	prio = 5;				}		    }//		    printf ("TEMP: check51 %s %s\n", tmp_fname_trim, f_fname_trim);		    if (!prio && strcmp(tmp_fname_trim, f_fname_trim) == 0) {				// matches the movie name				prio = 4;//				printf("prio 4\n");		    }		    if (!prio && (tmp = strstr(tmp_fname_trim, f_fname_trim)) && (sub_match_fuzziness >= 1)) {				// contains the movie name				tmp += RMasciiLength(f_fname_trim);				if (tmp_sub_id && strstr(tmp, tmp_sub_id)) {			    	// with sub_id specified prefer localized subtitles			    	prio = 3;//			    	printf("prio 3\n");				} else if ((tmp_sub_id == NULL) && whiteonly(tmp)) {			    	// without sub_id prefer "plain" name			   	 	prio = 3;//			   	 	printf("prio 31\n");				} else {			    	// with no localized subs found, try any else instead			    	prio = 2;//			    	printf("prio 2\n");				}		    }		    if (!prio) {				// doesn't contain the movie name				// don't try in the mplayer subtitle directory				if ((j == 0) && (sub_match_fuzziness >= 2)) {			    	prio = 1;//			    	printf("prio 1\n");				}		    }		    if (prio) {				prio += prio;				sprintf(tmpresult, "%s%s", j == 0 ? f_dir : path, de->d_name);//				printf ("TEMP: check5 %s %s\n", j == 0 ? f_dir : path, de->d_name);//				fprintf(stderr, "%s priority %d\n", tmpresult, prio);				if ((f = fopen(tmpresult, "rt"))) {			    	fclose(f);			    	result[subcnt].priority = prio;			    	result[subcnt].fname = STRDUP(tmpresult);			    	subcnt++;				}		    }		}		if (subcnt >= MAX_SUBTITLE_FILES) break;	    }	    closedir(d);	}    }//    printf ("TEMP: check6 %p\n", d);    if (tmp_sub_id) RFREE(tmp_sub_id);    RFREE(f_dir);    RFREE(f_fname);    RFREE(f_fname_noext);    RFREE(f_fname_trim);    RFREE(tmp_fname_noext);    RFREE(tmp_fname_trim);    RFREE(tmp_fname_ext);    RFREE(tmpresult);    qsort(result, subcnt, sizeof(subfn), compare_sub_priority);    result2 = MALLOC(sizeof(RMascii*)*(subcnt+1));    RMMemset(result2, 0, sizeof(RMascii*)*(subcnt+1));    for (i = 0; i < subcnt; i++) {	result2[i] = result[i].fname;//	printf ("TEMP: %s result[i].fname\n", result[i].fname);    }    result2[subcnt] = NULL;    RFREE(result);    return result2;}void sub_free( sub_data * subd ){ 	RMuint32 i, j;    if ( !subd ) return;    if (subd->subtitles) {    	for(j = 0; j < subd->sub_num; j ++)			for (i=0; i < subd->subtitles[j].lines; i++)				RFREE( subd->subtitles[j].text[i] );		RFREE( subd->subtitles );    }    if (subd->filename) RFREE( subd->filename );    RFREE( subd );    if(subs.subs_path)    {    	RFREE(subs.subs_path);    	subs.subs_path = NULL;    }}void init_subs(void){	subs.data = NULL;	subs.current_sub = 0;	subs.nosub_range_start = 0;	subs.nosub_range_end = 0;	subs.vo_sub = NULL;	subs.sub_size = 26;	subs.alignment = ALIGN_CENTER;	subs.vPos = 100;	subs.osd = FALSE;	subs.subs_path = NULL;}void clear_subs(void){	subs.vo_sub = NULL;	if(subs.data)	{		sub_free(subs.data);		subs.data = NULL;	}}void find_sub(sub_data* subd,RMint32 key){    subtitle *sub;    int i,j;    if ( !subd || subd->sub_num == 0) return;    sub = subd->subtitles;    if(subs.vo_sub){      if(key>=(RMint32)subs.vo_sub->start && key<=(RMint32)subs.vo_sub->end) return; // OK!    } else {      if(key>(RMint32)subs.nosub_range_start && key<(RMint32)subs.nosub_range_end) return; // OK!    }    // sub changed!    /* Tell the OSD subsystem that the OSD contents will change soon */   // vo_osd_changed(OSDTYPE_SUBTITLE);    if(key<=0){      subs.vo_sub=NULL; // no sub here      return;    }//    printf("\r---- sub changed ----\n");    // check next sub.    if(subs.current_sub>=0 && (RMuint16)(subs.current_sub+1) < subd->sub_num){      if(key>(RMint32)sub[subs.current_sub].end && key<(RMint32)sub[subs.current_sub+1].start){          // no sub          subs.nosub_range_start=sub[subs.current_sub].end;          subs.nosub_range_end=sub[subs.current_sub+1].start;          subs.vo_sub=NULL;          return;      }      // next sub?      subs.current_sub++;      subs.vo_sub=&sub[subs.current_sub];      if(key>=(RMint32)subs.vo_sub->start && key<=(RMint32)subs.vo_sub->end) return; // OK!    }//    printf("\r---- sub log search... ----\n");    // use logarithmic search:    i=0;    j = subd->sub_num - 1;//    printf("Searching %d in %d..%d\n",key,subs[i].start,subs[j].end);    while(j>=i){        subs.current_sub=(i+j+1)/2;        subs.vo_sub=&sub[subs.current_sub];        if(key<(RMint32)subs.vo_sub->start) j=subs.current_sub-1;        else if(key>(RMint32)subs.vo_sub->end) i=subs.current_sub+1;        else return; // found!    }//    if(key>=vo_sub->start && key<=vo_sub->end) return; // OK!    // check where are we...    if(key<(RMint32)subs.vo_sub->start){      if(subs.current_sub<=0){          // before the first sub          subs.nosub_range_start=key-1; // tricky          subs.nosub_range_end=subs.vo_sub->start;//          printf("FIRST...  key=%d  end=%d  \n",key,vo_sub->start);          subs.vo_sub=NULL;          return;      }      subs.current_sub--;      if(key>(RMint32)sub[subs.current_sub].end && key<(RMint32)sub[subs.current_sub+1].start){          // no sub          subs.nosub_range_start=sub[subs.current_sub].end;          subs.nosub_range_end=sub[subs.current_sub+1].start;//          printf("No sub... 1 \n");          subs.vo_sub=NULL;          return;      }      printf("HEH????  ");    } else {      if(key<=(RMint32)subs.vo_sub->end) printf("JAJJ!  "); else      if((RMuint16)(subs.current_sub+1) >= subd->sub_num){          // at the end?          subs.nosub_range_start=subs.vo_sub->end;          subs.nosub_range_end=0x7FFFFFFF; // MAXINT//          printf("END!?\n");          subs.vo_sub=NULL;          return;      } else      if(key>(RMint32)sub[subs.current_sub].end && key<(RMint32)sub[subs.current_sub+1].start){          // no sub          subs.nosub_range_start=sub[subs.current_sub].end;          subs.nosub_range_end=sub[subs.current_sub+1].start;//          printf("No sub... 2 \n");          subs.vo_sub=NULL;          return;      }    }    subs.vo_sub=NULL; // no sub here}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩一区三区| 国产精品久久久久影视| 国产网红主播福利一区二区| 亚洲美女区一区| 国产精品亚洲第一| 欧美日韩一级黄| 国产精品福利一区二区三区| 男女男精品视频| 日韩一级完整毛片| 亚洲婷婷综合色高清在线| 麻豆精品在线播放| 欧美日韩成人在线| 亚洲男人的天堂在线观看| 激情久久五月天| 日韩午夜三级在线| 图片区小说区区亚洲影院| 99九九99九九九视频精品| 久久精品在这里| 久久国产夜色精品鲁鲁99| 欧美在线制服丝袜| 一区二区三区在线观看视频| 国产成人精品一区二区三区网站观看| 538在线一区二区精品国产| 一二三四社区欧美黄| 91在线观看污| 中文字幕日韩一区二区| 成人听书哪个软件好| 国产日本一区二区| 国产高清成人在线| 久久久久国产成人精品亚洲午夜| 久久99精品久久久久| 日韩你懂的在线观看| 久久精品国产久精国产| 欧美一级黄色片| 激情综合网激情| 久久美女艺术照精彩视频福利播放 | 欧美日韩国产小视频| 综合久久综合久久| 色综合久久久久网| 亚洲黄色小视频| 欧美日韩精品一区二区三区四区| 亚洲激情图片小说视频| 欧美吻胸吃奶大尺度电影| 日韩和欧美的一区| 日韩精品一区二区三区视频播放 | 一区二区免费看| 在线免费观看一区| 首页国产丝袜综合| 日韩视频在线观看一区二区| 国产揄拍国内精品对白| 国产日韩欧美精品一区| a在线播放不卡| 亚洲午夜成aⅴ人片| 欧美高清hd18日本| 国产在线精品国自产拍免费| 国产精品网站在线| 在线视频欧美区| 日韩国产成人精品| 欧美国产欧美综合| 欧美专区在线观看一区| 美女在线观看视频一区二区| 国产女主播视频一区二区| 日本韩国视频一区二区| 久久久久九九视频| 99国产精品99久久久久久| 午夜精品久久久久久久| 国产婷婷一区二区| 欧美视频精品在线观看| 国产在线精品一区二区不卡了| 国产精品国产三级国产三级人妇| 欧美亚一区二区| 国产一区视频导航| 亚洲图片欧美一区| 久久综合狠狠综合| 欧美综合亚洲图片综合区| 激情五月婷婷综合| 亚洲黄色在线视频| 亚洲国产电影在线观看| 91精品免费在线| 91麻豆精品视频| 国产精品中文有码| 午夜精品久久久久久久蜜桃app| 国产视频视频一区| 欧美男男青年gay1069videost| 国产91精品精华液一区二区三区| 亚洲与欧洲av电影| 国产精品视频一区二区三区不卡| 在线播放视频一区| 一本久道久久综合中文字幕| 国模一区二区三区白浆| 偷拍亚洲欧洲综合| 亚洲人吸女人奶水| 国产清纯白嫩初高生在线观看91| 日韩视频免费直播| 欧美视频在线观看一区二区| 不卡在线观看av| 亚洲精品免费视频| 国产人久久人人人人爽| 精品国产一区二区三区不卡| 欧美日韩专区在线| 色狠狠色狠狠综合| 91网站最新网址| 成人黄色小视频在线观看| 激情伊人五月天久久综合| 日本午夜精品一区二区三区电影| 亚洲综合免费观看高清完整版| 国产精品乱子久久久久| 中文字幕免费观看一区| 国产视频不卡一区| 久久久亚洲高清| 欧美精品一区二区三区四区| 日韩欧美二区三区| 欧美变态tickle挠乳网站| 欧美成人一区二区| 日韩一级二级三级精品视频| 91麻豆精品国产91久久久更新时间| 日本电影欧美片| 欧洲精品一区二区三区在线观看| 色婷婷综合视频在线观看| 色噜噜久久综合| 欧美性生活久久| 欧美精品久久久久久久久老牛影院| 欧美午夜精品久久久久久孕妇| 欧美性色综合网| 欧美日韩免费一区二区三区视频| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 在线一区二区视频| 欧美精品自拍偷拍| 日韩精品在线网站| 久久久久久黄色| 亚洲日本va在线观看| 亚洲国产精品久久人人爱 | 欧美一区二区精品久久911| 欧美一级专区免费大片| 精品88久久久久88久久久| 久久精品一区二区三区不卡牛牛| 中文字幕不卡一区| 一区二区三区中文免费| 日韩精品国产欧美| 丰满少妇在线播放bd日韩电影| jizz一区二区| 欧美日韩一区视频| 久久久久久99久久久精品网站| 中文字幕一区av| 日韩黄色免费电影| 国产成人一区在线| 欧美图片一区二区三区| 欧美电视剧在线看免费| 亚洲欧洲无码一区二区三区| 亚洲国产中文字幕在线视频综合 | 精品免费视频.| 中文字幕一区av| 青青草视频一区| www.成人在线| 欧美一级搡bbbb搡bbbb| 国产精品久久久久久久裸模| 亚洲第一激情av| 成人精品一区二区三区四区| 欧美日韩一级片在线观看| 久久精品夜色噜噜亚洲a∨| 亚洲女爱视频在线| 国产一区二区三区黄视频| 色嗨嗨av一区二区三区| 久久精品视频一区二区三区| 亚洲综合在线电影| 国产91色综合久久免费分享| 欧美日韩国产成人在线91| 国产精品美女久久久久久久久久久 | 国产91丝袜在线观看| 欧美在线free| 中文字幕在线观看不卡视频| 三级一区在线视频先锋 | 国产一本一道久久香蕉| 欧美在线短视频| 国产精品成人一区二区艾草| 久久激情五月婷婷| 欧美日韩国产首页| 亚洲欧美日韩国产一区二区三区| 韩国精品在线观看| 欧美一区二区私人影院日本| 亚洲一区自拍偷拍| 99精品视频一区| 国产精品区一区二区三区| 久久精品国产免费看久久精品| 欧美日韩一区中文字幕| 亚洲精品国产成人久久av盗摄 | 韩国午夜理伦三级不卡影院| 欧美性猛交xxxx黑人交| 亚洲丝袜精品丝袜在线| 成人午夜精品一区二区三区| 久久男人中文字幕资源站| 久久精品噜噜噜成人av农村| 欧美日韩国产色站一区二区三区| 亚洲天堂久久久久久久| 成人高清免费在线播放| 亚洲国产高清不卡| bt7086福利一区国产| 中文字幕一区二区三区乱码在线| 成人国产电影网| 亚洲三级免费电影|