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

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

?? wildmidi.c

?? WildMidi Midi Library and Player
?? C
?? 第 1 頁 / 共 3 頁
字號:
		LeaveCriticalSection(&waveCriticalSection);		while(!mm_free_blocks)			Sleep(10);		mm_current_block++;		mm_current_block %= MM_BLOCK_COUNT;		current = &mm_blocks[mm_current_block];		current->dwUser = 0;	}	return 0;}voidclose_mm_output ( void ) {	WAVEHDR* current;	int i, j;	current = &mm_blocks[mm_current_block];	i = MM_BLOCK_SIZE - current->dwUser;	for (j = i; i; i--) write_mm_output (0, 0);	waveOutClose (hWaveOut);	HeapFree(GetProcessHeap(), 0, mm_blocks);}#else#ifdef HAVE_ALSAvoid *buffer;int bps;int alsa_first_time = 1;static snd_pcm_t  *pcm;static snd_pcm_uframes_t alsa_period_size;static snd_pcm_channel_area_t *areas;int write_alsa_output (char * output_data, int output_size);void close_alsa_output ( void );intopen_alsa_output(void) {	snd_pcm_hw_params_t     *hw;	snd_pcm_sw_params_t     *sw;	int err;	int alsa_buffer_time, bits_per_sample;	unsigned int alsa_period_time;	snd_pcm_uframes_t alsa_buffer_size;		if (!pcmname)		pcmname = "default";			if ((err = snd_pcm_open (&pcm, pcmname, SND_PCM_STREAM_PLAYBACK, 0)) < 0) {		printf("Error: audio open error: %s\n", snd_strerror (-err));		return -1;	} 		snd_pcm_hw_params_alloca (&hw);		if ((err = snd_pcm_hw_params_any(pcm, hw)) < 0) {		printf("ERROR: No configuration available for playback: %s\n", snd_strerror(-err));				return -1;	}	if ((err = snd_pcm_hw_params_set_access(pcm, hw, SND_PCM_ACCESS_MMAP_INTERLEAVED)) < 0) {		printf("Cannot set mmap'ed mode: %s.\n", snd_strerror(-err));		return -1;	}		if (snd_pcm_hw_params_set_format (pcm, hw, SND_PCM_FORMAT_S16) < 0) {		printf("ALSA does not support 16bit signed audio for your soundcard\n");		close_alsa_output();		return -1;	}		if (snd_pcm_hw_params_set_channels (pcm, hw, 2) < 0) {		printf("ALSA does not support stereo for your soundcard\n");		close_alsa_output();		return -1;	}#ifdef ALSA_NEW	if (snd_pcm_hw_params_set_rate_near(pcm, hw, &rate, 0) < 0) {#else	if (snd_pcm_hw_params_set_rate_near(pcm, hw, rate, 0) < 0) {#endif		printf("ALSA does not support %iHz for your soundcard\n",rate);		close_alsa_output();		return -1;	}		alsa_buffer_time = 500000;	alsa_period_time = 50000;#ifdef ALSA_NEW		if ((err = snd_pcm_hw_params_set_buffer_time_near(pcm, hw, &alsa_buffer_time, 0)) < 0)#else	if ((err = snd_pcm_hw_params_set_buffer_time_near(pcm, hw, alsa_buffer_time, 0)) < 0)#endif	{		printf("Set buffer time failed: %s.\n", snd_strerror(-err));		return -1;	}#ifdef ALSA_NEW	if ((err = snd_pcm_hw_params_set_period_time_near(pcm, hw, &alsa_period_time, 0)) < 0)#else	if ((err = snd_pcm_hw_params_set_period_time_near(pcm, hw, alsa_period_time, 0)) < 0)#endif	{		printf("Set period time failed: %s.\n", snd_strerror(-err));		return -1;	}					if (snd_pcm_hw_params(pcm, hw) < 0)	{		printf("Unable to install hw params\n");		return -1;	}#ifdef ALSA_NEW	if ((err = snd_pcm_hw_params_get_buffer_size(hw, &alsa_buffer_size)) < 0)#else	if ((err = snd_pcm_hw_params_get_buffer_size(hw)) < 0)#endif	{		printf ("snd_pcm_hw_params_get_buffer_size() failed: %s\n", snd_strerror(-err));		return -1;	}#ifdef ALSA_NEW	if ((err = snd_pcm_hw_params_get_period_size(hw, &alsa_period_size, 0)) < 0)	#else	alsa_buffer_size = err;	if ((err = snd_pcm_hw_params_get_period_size(hw, 0)) < 0)#endif	{		printf ("snd_pcm_hw_params_get_period_size() failed: %s\n", snd_strerror(-err));		return -1;	}#ifndef ALSA_NEW	alsa_period_size = err;#endif		snd_pcm_sw_params_alloca(&sw);	snd_pcm_sw_params_current(pcm, sw);	if (snd_pcm_sw_params(pcm, sw) < 0)	{		printf("Unable to install sw params\n");		return -1;	}		bits_per_sample = snd_pcm_format_physical_width(SND_PCM_FORMAT_S16);	bps = (rate * bits_per_sample * 2) / 8000;	buffer = malloc(alsa_period_size * bits_per_sample / 8 * 2);	areas = malloc(2 * sizeof(snd_pcm_channel_area_t));	areas[0].addr = buffer;	areas[0].first = 0;	areas[0].step = 2 * bits_per_sample;	areas[1].addr = buffer;        areas[1].first = bits_per_sample;        areas[1].step = 2 * bits_per_sample;		send_output = write_alsa_output;	close_output = close_alsa_output;	return 0;			}int write_alsa_output (char * output_data, int output_size) {	int cnt = 0, err;	snd_pcm_uframes_t offset, frames;	snd_pcm_sframes_t avail;	const snd_pcm_channel_area_t *chan_areas = areas;		while (output_size > 0) {		avail = snd_pcm_avail_update(pcm);		if (avail == -EPIPE) {			if (snd_pcm_state(pcm) == SND_PCM_STATE_XRUN) {				if ((err = snd_pcm_prepare(pcm)) < 0)					printf("snd_pcm_prepare() failed.\n");				alsa_first_time = 1;			}		} else if (avail < 0) {			printf("snd_pcm_avail_update() failed: %s\n", snd_strerror(-avail));			avail = 0;		}		if (avail < alsa_period_size) {			usleep(500);			continue;		}		frames = snd_pcm_bytes_to_frames(pcm, output_size);		if ((err = snd_pcm_mmap_begin(pcm, &chan_areas, &offset, &frames)) < 0) {			printf("snd_pcm_mmap_begin() failed: %s\n", snd_strerror(-err));		}		cnt = snd_pcm_frames_to_bytes(pcm, frames);		memcpy((char*) chan_areas[0].addr + snd_pcm_frames_to_bytes(pcm, offset), output_data, cnt);		if ((err = snd_pcm_mmap_commit(pcm, offset, frames)) < 0) {			if (snd_pcm_state(pcm) == SND_PCM_STATE_XRUN) {				if ((err = snd_pcm_prepare(pcm)) < 0)					printf("snd_pcm_prepare() failed.\n");				alsa_first_time = 1;			}		}		if (err != frames)			printf("snd_pcm_mmap_commit returned %d, expected %d\n", err, (int)frames);				output_size -= cnt;		output_data += cnt;		if (alsa_first_time) {			alsa_first_time = 0;			snd_pcm_start(pcm);		}	}	return 0;}void close_alsa_output ( void ) {	snd_pcm_close (pcm);	free(areas);	free(buffer);}#else/* OSS Output Functions -------------------- uses mmap'd audio*/char *buffer = NULL;unsigned long int max_buffer;unsigned long int buffer_delay;unsigned long int counter;struct audio_buf_info info;int write_oss_output (char * output_data, int output_size);void close_oss_output ( void );intopen_oss_output( void ) {	int caps, rc, tmp;	unsigned long int omode = O_RDWR;	unsigned long int mmmode = PROT_WRITE | PROT_READ;	unsigned long int mmflags = MAP_FILE | MAP_SHARED;	unsigned long int sz = sysconf (_SC_PAGESIZE);	if (!pcmname)		pcmname = "/dev/dsp";	if ((audio_fd = open(pcmname, omode)) < 0) {		printf("ERROR: Unable to open /dev/dsp (%s)\n",strerror(errno));		return -1;			}	if (ioctl (audio_fd, SNDCTL_DSP_RESET, 0) < 0) {		printf("ERROR: Unable to reset /dev/dsp\n");		shutdown_output();		return -1;	}	if (ioctl (audio_fd, SNDCTL_DSP_GETCAPS, &caps) == -1) {		printf("ERROR: Driver Too Old\n");		shutdown_output();		return -1;	}	if (!(caps & DSP_CAP_TRIGGER) || !(caps & DSP_CAP_MMAP)) {		printf ("Sound device can't do memory-mapped I/O.\n");		shutdown_output();		return -1;	}	if (ioctl (audio_fd, SNDCTL_DSP_GETOSPACE, &info) == -1) {		printf ("Um, can't do GETOSPACE?\n");		shutdown_output();		return -1;	}	max_buffer = (info.fragstotal * info.fragsize + sz - 1) & ~(sz - 1);		rc = AFMT_S16_LE;	if (ioctl (audio_fd, SNDCTL_DSP_SETFMT, &rc) < 0 ) {		printf("Can't set 16bit\n");		shutdown_output();;		return -1;	}	tmp = 2;	if (ioctl (audio_fd, SNDCTL_DSP_CHANNELS, &tmp) < 0) {		printf("Can't set stereo\n");		shutdown_output();		return -1;	}			if (ioctl (audio_fd, SNDCTL_DSP_SPEED, &rate) < 0) {		printf("ERROR: /dev/dsp does not support %iHz output\n",rate);		shutdown_output();		return -1;	}				buffer = (unsigned char *) mmap(NULL, max_buffer, mmmode, mmflags, audio_fd, 0);	if (buffer == MAP_FAILED) {		printf("couldn't mmap %s\n",strerror(errno));		shutdown_output();		return -1;	}		tmp = 0;	if (ioctl (audio_fd, SNDCTL_DSP_SETTRIGGER, &tmp) < 0) {		printf("Couldn't toggle\n");		munmap (buffer, info.fragstotal * info.fragsize);		shutdown_output();		return -1;	}		tmp = PCM_ENABLE_OUTPUT;	if (ioctl (audio_fd, SNDCTL_DSP_SETTRIGGER, &tmp) < 0) {		printf("Couldn't toggle\n");		munmap (buffer, info.fragstotal * info.fragsize);		shutdown_output();		return -1;	}	buffer_delay = 1000000 / (rate / 4);	send_output = write_oss_output;	close_output = close_oss_output;	return 0;}intwrite_oss_output(char * output_data, int output_size) {	struct count_info count;	int data_read = 0;	int free_size = 0;	while (output_size != 0) {		while (1) {			if (ioctl (audio_fd, SNDCTL_DSP_GETOPTR, &count) == -1) {				printf("Dead Sound\n");				munmap (buffer, info.fragstotal * info.fragsize);				shutdown_output();				return -1;			}			if ((count.ptr < counter) || (count.ptr >= (counter+4))) {				break;			}			usleep(500);		}		if (count.ptr < counter) {			free_size = max_buffer - counter;		} else {			free_size = count.ptr - counter;		}		if (free_size > output_size)			free_size = output_size;		memcpy(&buffer[counter], &output_data[data_read], free_size);		data_read += free_size;		counter += free_size;		if (counter >= max_buffer)			counter = 0;		output_size -= free_size;	}	return 0;}voidclose_oss_output(void) {	shutdown_output();	if (buffer != NULL)		munmap (buffer, info.fragstotal * info.fragsize);	audio_fd = -1;}#endif // HAVE_ALSA#endif/* ============================== ============================== ==============================*/static struct option const long_options[] = {	{"version",0,0,'v'},	{"help",0,0,'h'},

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本欧美一区二区| 99在线精品观看| 婷婷夜色潮精品综合在线| 自拍偷拍欧美精品| 国产精品色在线观看| 久久免费国产精品| 久久久久久久久久久久久久久99| 日韩一区二区三区在线视频| 91精品婷婷国产综合久久竹菊| 欧美色综合久久| 欧美精品vⅰdeose4hd| 7777精品伊人久久久大香线蕉完整版 | 欧美国产成人精品| 中文字幕精品综合| 一区精品在线播放| 亚洲精品高清在线观看| 亚洲午夜av在线| 日韩av中文字幕一区二区| 蜜桃视频在线观看一区二区| 免费不卡在线视频| 国内外成人在线| 成人美女视频在线观看18| 波多野结衣在线一区| av欧美精品.com| 欧美午夜精品电影| 日韩亚洲国产中文字幕欧美| 久久人人97超碰com| 国产精品久久久久久久久免费丝袜| 亚洲欧美日韩在线| 日韩福利视频网| 国产一区二区日韩精品| 波多野洁衣一区| 欧美日韩视频在线第一区| 日韩欧美国产综合| 国产亚洲欧美日韩日本| 最新国产の精品合集bt伙计| 亚洲成av人影院在线观看网| 精品综合久久久久久8888| 国产一区二区在线观看免费| 91亚洲国产成人精品一区二区三 | 日韩欧美国产一区在线观看| 中文字幕第一区综合| 亚洲444eee在线观看| 国产麻豆一精品一av一免费| 色哟哟国产精品免费观看| 91精品国产色综合久久ai换脸| 久久婷婷综合激情| 一区二区三区国产| 久久er99热精品一区二区| 99久久精品免费| 欧美一区二区三区四区五区| 国产精品久久久久久久久免费桃花 | 国产在线国偷精品产拍免费yy| 99精品欧美一区| 精品乱人伦小说| 亚洲综合成人在线视频| 国产乱码一区二区三区| 欧美怡红院视频| 日本一区二区三区四区| 日日夜夜一区二区| 成人精品免费网站| 欧美一级二级三级乱码| 国产精品国产三级国产普通话99| 三级亚洲高清视频| 一本一道综合狠狠老| 久久久久久久久久电影| 天堂蜜桃一区二区三区| 99精品视频在线观看| 欧美精品一区二区在线观看| 亚洲第一福利视频在线| av一本久道久久综合久久鬼色| 91精品国产高清一区二区三区| 综合自拍亚洲综合图不卡区| 国产麻豆欧美日韩一区| 欧美一区二区三区不卡| 伊人色综合久久天天| 成人综合婷婷国产精品久久 | 综合久久国产九一剧情麻豆| 国产精品资源网站| 欧美一级黄色片| 亚洲第一福利视频在线| 日本精品视频一区二区三区| 中文字幕精品一区二区精品绿巨人| 日本色综合中文字幕| 欧美午夜在线观看| 亚洲欧美国产高清| 成人激情电影免费在线观看| 久久影院视频免费| 另类成人小视频在线| 91精品欧美一区二区三区综合在 | 亚洲国产日韩a在线播放 | 国产精品福利一区| 国产成人免费视| 久久久久九九视频| 九色综合国产一区二区三区| 日韩午夜在线观看| 日韩专区在线视频| 欧美精品高清视频| 视频一区中文字幕| 欧美精品第1页| 日日夜夜精品免费视频| 欧美精品 国产精品| 天堂午夜影视日韩欧美一区二区| 欧美少妇xxx| 日本欧美大码aⅴ在线播放| 欧美人伦禁忌dvd放荡欲情| 亚洲一区二区五区| 在线不卡a资源高清| 奇米888四色在线精品| 日韩午夜av一区| 精品亚洲成a人| 久久久久久影视| 成人性视频网站| 亚洲欧美日韩一区二区三区在线观看 | 欧美三级日韩在线| 日韩精品视频网站| 欧美电影免费观看高清完整版在| 日本美女视频一区二区| 精品少妇一区二区三区在线视频| 激情综合网av| 国产精品视频一二三| av电影天堂一区二区在线观看| 国产精品不卡在线观看| 在线观看精品一区| 日韩精品午夜视频| 久久精品人人做人人爽人人| 成人激情视频网站| 夜色激情一区二区| 欧美高清视频一二三区| 国产一区二区三区av电影| 综合婷婷亚洲小说| 欧美日本在线播放| 黑人巨大精品欧美黑白配亚洲| 久久精品一区二区| 不卡的看片网站| 亚洲第一久久影院| 欧美大片一区二区三区| 福利电影一区二区| 亚洲一区二区美女| 欧美精品一区二区久久婷婷| 97se亚洲国产综合自在线| 同产精品九九九| 久久久久久97三级| 欧美色男人天堂| 国产一区二区三区在线观看免费 | 国产成人激情av| 亚洲综合精品自拍| 精品国产乱码久久| 91麻豆精品视频| 天涯成人国产亚洲精品一区av| 久久午夜老司机| 欧美在线看片a免费观看| 国内成人自拍视频| 一区二区三区日韩| 2021久久国产精品不只是精品| 99v久久综合狠狠综合久久| 日本亚洲天堂网| 亚洲精品高清视频在线观看| 精品国产一区二区三区忘忧草| 91国偷自产一区二区三区成为亚洲经典 | 色94色欧美sute亚洲线路一ni| 久久精品国产77777蜜臀| 亚洲三级免费电影| 欧美mv日韩mv国产| 欧美日韩一区二区在线观看视频| 国产精品中文有码| 日韩精品久久久久久| 17c精品麻豆一区二区免费| 日韩精品一区二区三区中文不卡| 91高清视频免费看| 高清国产一区二区| 蜜乳av一区二区三区| 一区二区三区四区激情| 国产精品欧美一区喷水| 日韩午夜在线影院| 欧美日韩三级视频| 91影视在线播放| 国产丶欧美丶日本不卡视频| 日韩avvvv在线播放| 一区二区三区国产精品| 亚洲区小说区图片区qvod| 欧美高清一级片在线观看| 欧美大胆一级视频| 91精品国产综合久久香蕉麻豆| 91亚洲精品一区二区乱码| 成人性色生活片| 国产在线观看免费一区| 免费观看在线综合| 五月激情综合色| 亚洲一区二区三区四区不卡| 成人欧美一区二区三区1314| 国产日韩精品一区| 国产亚洲精品福利| 久久女同互慰一区二区三区| 欧美成人vr18sexvr| 日韩欧美一二区| 欧美一区二区三区日韩视频| 欧美日韩综合在线免费观看| 色综合久久九月婷婷色综合| 色综合天天天天做夜夜夜夜做|