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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? core.c

?? Aqualung is an advanced music player primarily targeted for the GNU/Linux operating system, but als
?? C
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
#ifdef HAVE_ALSA/* return values: *  0 : success * -1 : device busy * -N : unable to start with given params */intalsa_init(thread_info_t * info, int verbose) {	unsigned rate;	int dir = 0;	int ret;	info->stream = SND_PCM_STREAM_PLAYBACK;	snd_pcm_hw_params_alloca(&info->hwparams);	ret = snd_pcm_open(&info->pcm_handle, info->pcm_name, info->stream, SND_PCM_NONBLOCK);	if (ret < 0) {		if (verbose) {			fprintf(stderr, "alsa_init: error opening PCM device %s: %s\n",				info->pcm_name, snd_strerror(ret));		}		return -1;	}	snd_pcm_close(info->pcm_handle);	/* now that we know the device is available, open it in blocking mode */	/* this is not deadlock safe. */	ret = snd_pcm_open(&info->pcm_handle, info->pcm_name, info->stream, 0);	if (ret < 0) {		if (verbose) {			fprintf(stderr, "alsa_init: error reopening PCM device %s: %s\n",				info->pcm_name, snd_strerror(ret));		}		return -2;	}		if (snd_pcm_hw_params_any(info->pcm_handle, info->hwparams) < 0) {		if (verbose) {			fprintf(stderr, "alsa_init: cannot configure this PCM device.\n");		}		return -3;	}	if (snd_pcm_hw_params_set_periods_integer(info->pcm_handle, info->hwparams) < 0) {		fprintf(stderr, "alsa_init warning: cannot set period size to integer value.\n");	}	if (snd_pcm_hw_params_set_access(info->pcm_handle, info->hwparams,					 SND_PCM_ACCESS_RW_INTERLEAVED) < 0) {		if (verbose) {			fprintf(stderr, "alsa_init: error setting access to SND_PCM_ACCESS_RW_INTERLEAVED.\n");		}		return -4;	}  	info->is_output_32bit = 1;	if (snd_pcm_hw_params_set_format(info->pcm_handle, info->hwparams, SND_PCM_FORMAT_S32) < 0) {		if (verbose) {			fprintf(stderr, "alsa_init: unable to open 32 bit output, falling back to 16 bit...\n");		}		if (snd_pcm_hw_params_set_format(info->pcm_handle, info->hwparams, SND_PCM_FORMAT_S16) < 0) {			if (verbose) {				fprintf(stderr, "alsa_init: unable to open 16 bit output, exiting.\n");			}			return -5;		}		info->is_output_32bit = 0;	}		rate = info->out_SR;	dir = 0;	if (snd_pcm_hw_params_set_rate_near(info->pcm_handle, info->hwparams, &rate, &dir) < 0) {		if (verbose) {			fprintf(stderr, "alsa_init: can't set sample rate to %u.\n", rate);		}		return -6;	}		if (rate != info->out_SR) {		if (verbose) {			fprintf(stderr, "Requested sample rate (%ld Hz) cannot be set, ", info->out_SR);			fprintf(stderr, "using closest available rate (%d Hz).\n", rate);		}		info->out_SR = rate;	}	if (snd_pcm_hw_params_set_channels(info->pcm_handle, info->hwparams, 2) < 0) {		if (verbose) {			fprintf(stderr, "alsa_init: error setting channels.\n");		}		return -7;	}	if (snd_pcm_hw_params_set_periods(info->pcm_handle, info->hwparams, nperiods, 0) < 0) {		if (verbose) {			fprintf(stderr, "alsa_init warning: error setting nperiods to %d.\n", nperiods);		}	}  	if (snd_pcm_hw_params_set_buffer_size(info->pcm_handle, info->hwparams,					      (period * nperiods)>>2) < 0) {		if (verbose) {			fprintf(stderr, "alsa_init warning: failed setting buffersize to %d.\n", (period * nperiods)>>2);			fprintf(stderr, "Parameters were: nperiods = %d, period = %d\n", nperiods, period);		}	}	if (snd_pcm_hw_params(info->pcm_handle, info->hwparams) < 0) {		if (verbose) {			fprintf(stderr, "alsa_init: error setting HW params.\n");		}		return -8;	}	return 0;}#endif /* HAVE_ALSA */#ifdef HAVE_JACK/* return values: *  0 : success * -1 : couldn't connect to Jack * -N : Jack sample rate (N) out of range */intjack_init(thread_info_t * info) {	if (client_name == NULL)		client_name = strdup("aqualung");	if ((jack_client = jack_client_new(client_name)) == 0) {		return -1;	}	jack_set_process_callback(jack_client, process, info);	jack_on_shutdown(jack_client, jack_shutdown, info);        if ((info->out_SR = jack_get_sample_rate(jack_client)) > MAX_SAMPLERATE) {		jack_client_close(jack_client);                return -info->out_SR;        }        out_L_port = jack_port_register(jack_client, "out_L", JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput, 0);        out_R_port = jack_port_register(jack_client, "out_R", JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput, 0);	jack_nframes = jack_get_buffer_size(jack_client);	if ((l_buf = malloc(jack_nframes * sizeof(float))) == NULL) {		fprintf(stderr, "jack_init: malloc error\n");		exit(1);	}	if ((r_buf = malloc(jack_nframes * sizeof(float))) == NULL) {		fprintf(stderr, "jack_init: malloc error\n");		exit(1);	}#ifdef HAVE_LADSPA	ladspa_buflen = jack_nframes;#endif /* HAVE_LADSPA */	return 0;}voidjack_client_start(void) {	const char ** ports_out;	if (jack_activate(jack_client)) {		fprintf(stderr, "Cannot activate JACK client.\n");		exit(1);	}	if (auto_connect) {		if (default_ports) {			if ((ports_out = jack_get_ports(jack_client, NULL, NULL,							JackPortIsPhysical|JackPortIsInput)) == NULL) {				fprintf(stderr, "Cannot find any physical playback ports.\n");			} else {				if (jack_connect(jack_client, jack_port_name(out_L_port),						 ports_out[0])) {					fprintf(stderr, "Cannot connect out_L port to %s.\n",						ports_out[0]);				} else {					fprintf(stderr, "Connected out_L to %s\n", ports_out[0]);				}				if (jack_connect(jack_client, jack_port_name(out_R_port),						 ports_out[1])) {					fprintf(stderr, "Cannot connect out_R port to %s.\n",						ports_out[1]);				} else {					fprintf(stderr, "Connected out_R to %s\n", ports_out[1]);				}				free(ports_out);			}		} else {			if (jack_connect(jack_client, jack_port_name(out_L_port),					 user_port1)) {				fprintf(stderr, "Cannot connect out_L port to %s.\n", user_port1);			} else {				fprintf(stderr, "Connected out_L to %s\n", user_port1);			}			if (jack_connect(jack_client, jack_port_name(out_R_port),					 user_port2)) {				fprintf(stderr, "Cannot connect out_R port to %s.\n", user_port2);			} else {				fprintf(stderr, "Connected out_R to %s\n", user_port2);			}		}	}}#endif /* HAVE_JACK */#ifdef _WIN32#define WIN32_BUFFER_LEN (1<<16)void *win32_thread(void * arg) {        u_int32_t i;        thread_info_t * info = (thread_info_t *)arg;        WAVEFORMATEX wf;        MMRESULT error;        HWAVEOUT hwave;	short * short_buf = NULL;	int nbufs = 8;	int bufcnt;        WAVEHDR whdr[nbufs];	int j;        int n_avail;	char recv_cmd;	int bufsize = WIN32_BUFFER_LEN / sizeof(short) / nbufs / 2;	if ((l_buf = calloc(1, bufsize * sizeof(float))) == NULL) {		fprintf(stderr, "win32_thread: malloc error\n");		exit(1);	}	if ((r_buf = calloc(1, bufsize * sizeof(float))) == NULL) {		fprintf(stderr, "win32_thread: malloc error\n");		exit(1);	}#ifdef HAVE_LADSPA	ladspa_buflen = bufsize;#endif /* HAVE_LADSPA */	if ((short_buf = calloc(1, WIN32_BUFFER_LEN)) == NULL) {		fprintf(stderr, "win32_thread: malloc error\n");		exit(1);	}        wf.nChannels = 2;        wf.nSamplesPerSec = info->out_SR;        wf.nBlockAlign = 2 * sizeof(short);        wf.wFormatTag = WAVE_FORMAT_PCM;        wf.cbSize = 0;        wf.wBitsPerSample = 16;        wf.nAvgBytesPerSec = wf.nBlockAlign * wf.nSamplesPerSec;        error = waveOutOpen(&hwave, WAVE_MAPPER, &wf, 0L, 0L, 0L);        if (error != MMSYSERR_NOERROR) {                printf("waveOutOpen failed, error = %d\n", error);                switch (error) {		case MMSYSERR_ALLOCATED:			puts("MMSYSERR_ALLOCATED");			break;		case MMSYSERR_BADDEVICEID:			puts("MMSYSERR_BADDEVICEID");			break;		case MMSYSERR_NODRIVER:			puts("MMSYSERR_NODRIVER");			break;		case MMSYSERR_NOMEM:			puts("MMSYSERR_NOMEM");			break;		case WAVERR_BADFORMAT:			puts("WAVERR_BADFORMAT");			break;		case WAVERR_SYNC:			puts("WAVERR_SYNC");			break;                }                return NULL;        }	for (bufcnt = 0; bufcnt < nbufs; bufcnt++) {		whdr[bufcnt].lpData = (char *)short_buf +			bufcnt * WIN32_BUFFER_LEN / nbufs;		whdr[bufcnt].dwBufferLength = WIN32_BUFFER_LEN / nbufs;		whdr[bufcnt].dwUser = 0L;		whdr[bufcnt].dwFlags = 0L;		whdr[bufcnt].dwLoops = 0L;				if ((error = waveOutPrepareHeader(hwave, &(whdr[bufcnt]), sizeof(WAVEHDR)))		    != MMSYSERR_NOERROR) {			printf("waveOutPrepareHeader[%d] failed : %08X\n", bufcnt, error);			waveOutUnprepareHeader(hwave, &(whdr[bufcnt]), sizeof(WAVEHDR));			waveOutClose(hwave);			return NULL;		}	}        for (j = 0; j < WIN32_BUFFER_LEN / sizeof(short); j++) {                short_buf[j] = 0;        }	for (bufcnt = 0; bufcnt < nbufs; bufcnt++) {		if ((error = waveOutWrite(hwave, &(whdr[bufcnt]), sizeof(WAVEHDR))) !=		    MMSYSERR_NOERROR) {			printf("waveOutWrite[%d] failed : %08X\n", bufcnt, error);			waveOutUnprepareHeader(hwave, &(whdr[bufcnt]), sizeof(WAVEHDR));			waveOutClose(hwave);			return NULL;		}        }	bufcnt = 0;	while (1) {	win32_wake:		while (rb_read_space(rb_disk2out)) {			rb_read(rb_disk2out, &recv_cmd, 1);			switch (recv_cmd) {			case CMD_FLUSH:				while ((n_avail = rb_read_space(rb)) > 0) {					if (n_avail > 2*bufsize * sizeof(short))						n_avail = 2*bufsize * sizeof(short);					rb_read(rb, (char *)short_buf,							     2*bufsize * sizeof(short));				}				for (j = 0; j < WIN32_BUFFER_LEN / sizeof(short); j++) {					short_buf[j] = 0;				}				goto win32_wake;				break;			case CMD_FINISH:				goto win32_finish;				break;			default:				fprintf(stderr, "win32_thread: recv'd unknown command %d\n",					recv_cmd);				break;			}		}		if ((n_avail = rb_read_space(rb) / (2*sample_size)) == 0) {			Sleep(100);			goto win32_wake;		}		if (n_avail > bufsize)			n_avail = bufsize;				for (i = 0; i < n_avail; i++) {			rb_read(rb, (char *)&(l_buf[i]), sample_size);			rb_read(rb, (char *)&(r_buf[i]), sample_size);		}#ifdef HAVE_LADSPA		if (options.ladspa_is_postfader) {			for (i = 0; i < n_avail; i++) {				l_buf[i] *= left_gain;				r_buf[i] *= right_gain;			}		}#else		for (i = 0; i < n_avail; i++) {			l_buf[i] *= left_gain;			r_buf[i] *= right_gain;		}#endif /* HAVE_LADSPA */		if (n_avail < bufsize) {			for (i = n_avail; i < bufsize; i++) {				l_buf[i] = 0.0f;				r_buf[i] = 0.0f;			}		}		/* plugin processing */#ifdef HAVE_LADSPA		plugin_lock = 1;		for (i = 0; i < n_plugins; i++) {			if (plugin_vect[i]->is_bypassed)				continue;						if (plugin_vect[i]->handle) {				plugin_vect[i]->descriptor->run(plugin_vect[i]->handle, ladspa_buflen);			}			if (plugin_vect[i]->handle2) {				plugin_vect[i]->descriptor->run(plugin_vect[i]->handle2, ladspa_buflen);			}		}		plugin_lock = 0;				if (!options.ladspa_is_postfader) {			for (i = 0; i < bufsize; i++) {				l_buf[i] *= left_gain;				r_buf[i] *= right_gain;			}		}#endif /* HAVE_LADSPA */				while (!(whdr[bufcnt].dwFlags & WHDR_DONE))			Sleep(1);		for (i = 0; i < bufsize; i++) {			if (l_buf[i] > 1.0)				l_buf[i] = 1.0;			else if (l_buf[i] < -1.0)				l_buf[i] = -1.0;			if (r_buf[i] > 1.0)				r_buf[i] = 1.0;			else if (r_buf[i] < -1.0)				r_buf[i] = -1.0;			short_buf[2*bufcnt*bufsize + 2*i] = floorf(32767.0 * l_buf[i]);			short_buf[2*bufcnt*bufsize + 2*i+1] = floorf(32767.0 * r_buf[i]);		}		/* write data to audio device */		if ((error = waveOutWrite(hwave, &(whdr[bufcnt]), sizeof(WAVEHDR)))		    != MMSYSERR_NOERROR) {			printf("waveOutWrite[%d] failed : %08X\n", bufcnt, error);			waveOutUnprepareHeader(hwave, &(whdr[bufcnt]), sizeof(WAVEHDR));			waveOutClose(hwave);			return NULL;		}		++bufcnt;		if (bufcnt == nbufs)			bufcnt = 0;	} win32_finish:        waveOutPause(hwave);        waveOutReset(hwave);	for (bufcnt = 0; bufcnt < nbufs; bufcnt++) {		waveOutUnprepareHeader(hwave, &(whdr[bufcnt]), sizeof(WAVEHDR));	}        waveOutClose(hwave);	return 0;}#endif /* _WIN32 */ voidload_default_cl(int * argc, char *** argv) {	int i = 0;	char * home;	xmlDocPtr doc;        xmlNodePtr cur;        xmlNodePtr root;        xmlChar * key;        FILE * f;	char confdir[MAXLEN];        char config_file[MAXLEN];	char default_param[MAXLEN];	char cl[MAXLEN];	int ret;        if (!(home = getenv("HOME"))) {                fprintf(stderr, "Warning: $HOME not set, using \".\" (current directory) as home\n");                home = ".";        }        sprintf(confdir, "%s/.aqualung", home);        if ((ret = chdir(confdir)) != 0) {                if (errno == ENOENT) {                        fprintf(stderr, "Creating directory %s\n", confdir);                        mkdir(confdir, S_IRUSR | S_IWUSR | S_IXUSR);                        chdir(confdir);                } else {                        fprintf(stderr, "An error occured while attempting chdir(\"%s\"). errno = %d\n",                                confdir, errno);                }        }        sprintf(config_file, "%s/.aqualung/config.xml", home);        if ((f = fopen(config_file, "rt")) == NULL) {                fprintf(stderr, "No config.xml -- creating empty one: %s\n", config_file);                fprintf(stderr, "Wired-in defaults will be used.\n");                doc = xmlNewDoc((const xmlChar *) "1.0");                root = xmlNewNode(NULL, (const xmlChar *) "aqualung_config");                xmlDocSetRootElement(doc, root);                xmlSaveFormatFile(config_file, doc, 1);		*argc = 1;                return;        }        fclose(f);        doc = xmlParseFile(config_file);        if (doc == NULL) {                fprintf(stderr, "An XML error occured while parsing %s\n", config_file);                return;        }        cur = xmlDocGetRootElement(doc);        if (cur == NULL) {                fprintf(stderr, "load_config: empty XML document\n");                xmlFreeDoc(doc);                return;        }        if (xmlStrcmp(cur->name, (const xmlChar *)"aqualung_config")) {                fprintf(stderr, "load_config: XML document of the wrong type, "                        "root node != aqualung_config\n");                xmlFreeDoc(doc);                return;        }        default_param[0] = '\0';        cur = cur->xmlChildrenNode;

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩成人一区| 91精品国产综合久久久久久漫画| 一个色综合av| 久久久国产精品麻豆| 91国产福利在线| 国产精品香蕉一区二区三区| 亚洲国产三级在线| 国产精品福利在线播放| 精品剧情v国产在线观看在线| 色天使色偷偷av一区二区| 国产一区二区三区蝌蚪| 性久久久久久久久| 亚洲男人的天堂av| 国产欧美精品一区| 26uuu精品一区二区三区四区在线| 在线看国产一区| 99久久综合狠狠综合久久| 国产一区二区在线免费观看| 日本人妖一区二区| 亚洲国产cao| 亚洲女女做受ⅹxx高潮| 国产精品视频九色porn| 久久久影视传媒| 欧美变态tickle挠乳网站| 3atv在线一区二区三区| 欧美性大战xxxxx久久久| 色综合av在线| 色妞www精品视频| 99热99精品| 99精品视频在线观看| 成人av网站在线观看| 成人性生交大合| 国产乱人伦偷精品视频免下载| 精品无人区卡一卡二卡三乱码免费卡| 视频一区欧美日韩| 午夜不卡在线视频| 日韩av电影免费观看高清完整版在线观看 | 色噜噜狠狠一区二区三区果冻| 成人短视频下载| caoporn国产精品| 99精品一区二区三区| 日本高清无吗v一区| 欧美性极品少妇| 3d成人h动漫网站入口| 91精品国产综合久久久久| 日韩欧美亚洲国产另类| 日韩精品一区二区三区在线播放| 91精品国产综合久久久久久久 | 久久精品视频一区二区| 国产欧美日韩综合| 国产精品美女久久久久aⅴ| 国产精品国产三级国产aⅴ中文| 中文字幕中文在线不卡住| 中文字幕精品在线不卡| 亚洲啪啪综合av一区二区三区| 亚洲免费观看视频| 午夜精品久久久久久久久久久| 亚洲mv大片欧洲mv大片精品| 蜜臀久久久久久久| 国产成人免费在线| 91偷拍与自偷拍精品| 欧美色倩网站大全免费| 欧美一级日韩一级| 国产欧美日韩不卡| 亚洲一区在线观看视频| 蜜桃一区二区三区四区| 成人在线一区二区三区| 色网站国产精品| 88在线观看91蜜桃国自产| 久久亚洲捆绑美女| 亚洲乱码中文字幕| 免费精品视频在线| 国产高清不卡一区| 在线观看国产精品网站| 欧美xxx久久| 亚洲日本护士毛茸茸| 日韩电影在线观看网站| 国产成人av电影在线观看| 欧美一区二区三区在线电影| 久久综合色播五月| 一区二区不卡在线播放| 国产真实乱子伦精品视频| 97超碰欧美中文字幕| 日韩美女在线视频| 国产精品久久久久婷婷| 日本欧美大码aⅴ在线播放| 夫妻av一区二区| 欧美精品久久久久久久久老牛影院| 久久综合九色综合97婷婷女人 | 国产精品视频在线看| 亚洲成人动漫在线观看| 国产精品99久久久久久似苏梦涵| 欧美在线你懂的| 久久久亚洲精品石原莉奈| 亚洲一区免费在线观看| 国产成人精品午夜视频免费| 欧美日本一区二区三区| 亚洲欧洲成人精品av97| 国产一区视频在线看| 7878成人国产在线观看| 亚洲欧美日韩国产另类专区 | 丁香六月综合激情| 欧美一区二区福利在线| 一区二区三区四区中文字幕| 国产精品一区二区视频| 日韩欧美在线影院| 亚洲一级二级在线| 不卡的看片网站| 久久久久久久国产精品影院| 日韩 欧美一区二区三区| 色综合久久久久| 国产精品狼人久久影院观看方式| 蜜桃免费网站一区二区三区| 精品视频一区二区三区免费| 亚洲视频在线一区观看| 成人午夜av电影| 久久网这里都是精品| 美国三级日本三级久久99| 欧美三区在线视频| 亚洲一区二区3| 91国产福利在线| 一区二区久久久| 色94色欧美sute亚洲线路一久| 国产精品电影一区二区三区| 欧美午夜在线一二页| 亚洲欧美在线视频| 国产东北露脸精品视频| 久久九九久精品国产免费直播| 久久精品国产精品亚洲精品| 欧美一区二区成人6969| 天天综合色天天| 884aa四虎影成人精品一区| 视频一区二区中文字幕| 欧美高清性hdvideosex| 亚洲国产精品久久不卡毛片 | 欧美精品亚洲一区二区在线播放| 亚洲一区二区三区国产| 欧洲一区二区三区在线| 亚洲国产精品尤物yw在线观看| 欧美在线观看一区| 亚洲午夜激情网页| 69久久99精品久久久久婷婷| 免费久久精品视频| 久久天堂av综合合色蜜桃网| 国产二区国产一区在线观看| 国产精品高清亚洲| 欧美这里有精品| 日韩有码一区二区三区| 欧美va天堂va视频va在线| 激情欧美一区二区| 亚洲国产岛国毛片在线| 91免费看片在线观看| 亚洲一区二区三区四区在线观看| 欧美日韩精品欧美日韩精品| 热久久久久久久| 久久久久九九视频| 91在线观看高清| 婷婷国产在线综合| 精品乱人伦小说| 成人免费视频播放| 亚洲国产你懂的| 欧美草草影院在线视频| 大胆欧美人体老妇| 亚洲一二三专区| 欧美变态tickling挠脚心| 不卡免费追剧大全电视剧网站| 亚洲在线免费播放| 精品美女一区二区| 91在线视频播放地址| 日韩精品三区四区| 中文字幕不卡的av| 7777精品久久久大香线蕉| 国产精品一区二区三区四区| 日韩毛片在线免费观看| 欧美一区二区在线不卡| 波多野结衣一区二区三区 | 国产女同互慰高潮91漫画| 91美女视频网站| 久久精品国产色蜜蜜麻豆| 亚洲日本乱码在线观看| 中文字幕一区二区三区四区不卡 | 日本韩国精品在线| 久久99精品久久久久久动态图 | 精品一区二区三区视频在线观看| 国产精品久久二区二区| 91精品久久久久久久91蜜桃| 成人ar影院免费观看视频| 日本最新不卡在线| ...中文天堂在线一区| 精品少妇一区二区三区在线播放| 94-欧美-setu| 国产一区二区在线观看视频| 亚洲综合一区二区三区| 亚洲国产高清在线| 日韩视频123| 欧美日韩综合在线免费观看| 成人性生交大片免费看中文网站| 免费看日韩a级影片| 亚洲一区二区三区四区五区黄 | 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 |