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

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

?? subreader.c

?? sigmadesign smp8623 gui source code ,bingo
?? C
?? 第 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一区二区三区免费野_久草精品视频
成人av网在线| 91丝袜美腿高跟国产极品老师| 国产精品天美传媒| 8x8x8国产精品| av午夜一区麻豆| 美脚の诱脚舐め脚责91| 亚洲卡通动漫在线| 久久久亚洲精品石原莉奈| 666欧美在线视频| 色狠狠桃花综合| 成人小视频免费在线观看| 美女免费视频一区二区| 亚洲成人免费看| 亚洲免费观看高清完整版在线观看| 337p粉嫩大胆噜噜噜噜噜91av| 欧美在线制服丝袜| 91猫先生在线| 99久免费精品视频在线观看| 国产精品一二二区| 国产在线视频一区二区| 免费人成黄页网站在线一区二区 | 国产亚洲欧美激情| 91精品国产福利| 欧美日韩三级在线| 91免费版在线看| 99在线精品视频| 成人黄色软件下载| 成人在线一区二区三区| 国产成人亚洲综合a∨婷婷 | 97久久精品人人做人人爽| 国产一二三精品| 国产一区二区三区在线观看免费| 麻豆久久久久久| 精品一区二区三区欧美| 久久99蜜桃精品| 国产在线一区观看| 国产成人午夜片在线观看高清观看| 国产主播一区二区三区| 国产丶欧美丶日本不卡视频| 国产成人丝袜美腿| 99热99精品| 色婷婷精品久久二区二区蜜臀av| 91高清在线观看| 欧美亚洲图片小说| 91麻豆精品国产91久久久| 日韩欧美一级精品久久| 久久久精品黄色| 国产精品久久久久久久久动漫| 亚洲视频在线一区| 亚洲乱码国产乱码精品精小说 | 一本色道综合亚洲| 欧美伊人久久久久久午夜久久久久| 欧美系列日韩一区| 欧美一三区三区四区免费在线看 | 亚洲妇熟xx妇色黄| 奇米亚洲午夜久久精品| 国产精品一区免费视频| 成a人片国产精品| 色久综合一二码| 91精品久久久久久蜜臀| 久久久精品免费观看| 亚洲欧美另类小说视频| 香蕉乱码成人久久天堂爱免费| 青娱乐精品在线视频| 国产一区二区三区免费观看| 波波电影院一区二区三区| 日本精品一级二级| 日韩欧美一二区| 中文字幕日本乱码精品影院| 亚洲韩国精品一区| 国产综合色视频| 日本精品一级二级| 久久理论电影网| 亚洲激情校园春色| 久久aⅴ国产欧美74aaa| 99久久精品国产网站| 欧美一区二区三区性视频| 中文一区一区三区高中清不卡| 有坂深雪av一区二区精品| 精品在线免费观看| 色一情一乱一乱一91av| 精品88久久久久88久久久| 亚洲精选视频在线| 国产制服丝袜一区| 欧美日韩精品欧美日韩精品一| 久久久噜噜噜久久中文字幕色伊伊| 亚洲女人****多毛耸耸8| 久久精品久久综合| 色欲综合视频天天天| 久久久不卡网国产精品一区| 一区二区三区久久| 国产成人免费视频一区| 69堂精品视频| 亚洲欧洲精品一区二区三区| 看电影不卡的网站| 欧美三级日本三级少妇99| 亚洲国产高清不卡| 久久国产日韩欧美精品| 欧洲一区在线电影| 欧美国产精品专区| 韩国成人在线视频| 欧美美女直播网站| 亚洲免费在线看| 国产高清在线精品| 欧美电影免费观看高清完整版在线观看 | 制服丝袜亚洲色图| 亚洲精品美腿丝袜| 成人高清在线视频| 26uuu欧美| 奇米777欧美一区二区| 欧美日韩国产小视频| 亚洲欧美经典视频| 亚洲综合清纯丝袜自拍| 日韩一级在线观看| 亚洲乱码日产精品bd| 国产成人午夜视频| 精品99999| 麻豆传媒一区二区三区| 91精品国产高清一区二区三区| 一区二区在线观看视频| 99在线精品一区二区三区| 国产欧美日韩在线观看| 国产乱淫av一区二区三区| 日韩区在线观看| 免费成人在线播放| 日韩欧美一二区| 久久国产免费看| 精品国产免费视频| 精品一区二区三区影院在线午夜 | 国产精品视频线看| 国产精品夜夜嗨| 久久精品人人做人人爽97| 国产在线麻豆精品观看| 久久亚洲捆绑美女| 国产一二三精品| 国产精品私人影院| 成人丝袜高跟foot| 国产精品久久久久久久久搜平片| 国产精品亚洲午夜一区二区三区| 久久久综合精品| 成人av网站在线观看免费| 中日韩免费视频中文字幕| 岛国一区二区在线观看| 中文字幕一区二区三| 一本色道久久综合亚洲aⅴ蜜桃| 亚洲男人天堂一区| 在线不卡中文字幕播放| 久久国产成人午夜av影院| 精品国产免费人成在线观看| 国产成人av电影在线观看| 亚洲欧美激情在线| 欧美精品日韩一区| 国内精品久久久久影院薰衣草| 国产女人18水真多18精品一级做| av成人免费在线观看| 一区二区久久久| 欧美一区二区久久久| 国产乱国产乱300精品| 日韩一区有码在线| 欧美人体做爰大胆视频| 日韩1区2区3区| 国产日韩欧美精品在线| 99精品国产91久久久久久| 亚洲福利国产精品| 2020国产精品久久精品美国| 成人av资源在线观看| 亚洲无线码一区二区三区| 精品少妇一区二区三区视频免付费 | 午夜精品视频在线观看| 日韩精品一区二区三区中文不卡 | 成人小视频在线| 亚洲午夜久久久| 精品国产91乱码一区二区三区 | 色婷婷精品大在线视频| 开心九九激情九九欧美日韩精美视频电影 | 欧美日韩一级视频| 国产成人在线网站| 亚洲综合色在线| 国产欧美一区二区在线观看| 欧美亚洲日本国产| 国产a级毛片一区| 同产精品九九九| 中文字幕在线不卡| 日韩一级片在线观看| 91偷拍与自偷拍精品| 国产麻豆精品一区二区| 亚洲国产精品久久艾草纯爱| 国产女主播一区| 69精品人人人人| 色综合天天天天做夜夜夜夜做| 蓝色福利精品导航| 亚洲va欧美va人人爽午夜| 自拍偷拍国产精品| 精品嫩草影院久久| 欧美日韩精品福利| 99精品视频在线观看免费| 精品制服美女丁香| 天堂一区二区在线| 亚洲精品成人在线| 国产精品网站一区|