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

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

?? mp-alsa.c

?? linux下的一些小游戲編程
?? C
字號:
/* Sound playback with ALSA. */#include <stdio.h>#include <errno.h>#include <sys/types.h>#include <sys/time.h>#include <sys/asoundlib.h>/* Plays a sound with the Advanced Linux Sound Architecture, ALSA.   Returns 0 on successful playback, nonzero on error. */int PlayerALSA(u_int8_t *samples, unsigned int bits, unsigned int channels,               unsigned int rate, unsigned int bytes){    int i;    /* ALSA is a bit verbose, and it tends to require       lots of structures. */    unsigned int alsa_device = 0, alsa_card = 0;    char *alsa_card_name;    snd_ctl_t *alsa_ctl;    snd_ctl_hw_info_t alsa_hw_info;    snd_pcm_t *alsa_pcm;    snd_pcm_channel_params_t alsa_params;	    /* Playback status variables. */    unsigned int position;    /* Scan for ALSA cards and devices. Each card has an integer ID       less than snd_cards(). We scan for the first available card       in order to demonstrate ALSA's organization, but we could       find the default card and PCM device numbers immediately with       the snd_defaults_pcm_card(), snd_defaults_pcm_device() functions. */    alsa_pcm = NULL;    for (alsa_card = 0; alsa_card < (unsigned)snd_cards(); alsa_card++) {	/* Try to open this card. */	if (snd_ctl_open(&alsa_ctl,alsa_card) < 0)	    continue;			/* Retrieve card info. */	if (snd_ctl_hw_info(alsa_ctl,&alsa_hw_info) < 0) {	    snd_ctl_close(alsa_ctl);	    continue;	}			snd_ctl_close(alsa_ctl);			/* Find a suitable device on this card. */	alsa_pcm = NULL;	for (alsa_device = 0; alsa_device < alsa_hw_info.pcmdevs; alsa_device++) {	    if (snd_pcm_open(&alsa_pcm,alsa_card,			     alsa_device,SND_PCM_OPEN_PLAYBACK) < 0) continue;	    	    /* Device successfully opened. */	    break;	}			if (alsa_pcm != NULL) break;    }	    /* Were we able to open a device? */    if (alsa_card == (unsigned)snd_cards()) {	printf("ALSA player: unable to find a configured device.\n");	return -1;    }	    /* Print info about the device. */    if (snd_card_get_longname(alsa_card,&alsa_card_name) < 0)	alsa_card_name = "(unknown)";    printf("ALSA player: using device %i:%i (%s)\n",	   alsa_card, alsa_device, alsa_card_name);	    /* Configure the device for the loaded sound data. */    memset(&alsa_params,0,sizeof (alsa_params));    alsa_params.channel = SND_PCM_CHANNEL_PLAYBACK;    /* Use stream mode. In this mode, we don't have to give ALSA complete       blocks; we can send it data as we get it. Block mode is needed for       mmap() functionality. Unlike OSS, ALSA's mmap() functionality is       quite reliable, and easily accessible through library functions.       We won't use it here, though; there's no need. */    alsa_params.mode = SND_PCM_MODE_STREAM;    alsa_params.format.interleave = 1;        /* We'll assume little endian samples. You may wish to use the data in       the GNU C Library's endian.h to support other endiannesses. We're       ignoring that case for simplicity. */    if (bits == 8)	alsa_params.format.format = SND_PCM_SFMT_U8;    else if (bits == 16)	alsa_params.format.format = SND_PCM_SFMT_S16_LE;    else {	printf("ALSA player: invalid sample size.\n");	return -1;    }    alsa_params.format.rate = rate;    alsa_params.format.voices = channels;    alsa_params.start_mode = SND_PCM_START_DATA;    alsa_params.stop_mode = SND_PCM_STOP_ROLLOVER;    alsa_params.buf.block.frag_size = 4096;    alsa_params.buf.block.frags_min = 1;    alsa_params.buf.block.frags_max = 2;	    if ((i = snd_pcm_plugin_params(alsa_pcm,&alsa_params)) < 0) {	printf("ALSA player: unable to set parameters.\n");	snd_pcm_close(alsa_pcm);	return -1;    }    if (snd_pcm_plugin_prepare(alsa_pcm, SND_PCM_CHANNEL_PLAYBACK) < 0) {	printf("ALSA player: unable to prepare playback.\n");	snd_pcm_close(alsa_pcm);	return -1;    }	    /* Feed the sound data to ALSA. */    position = 0;    while (position < bytes) {	int written, blocksize;			if (bytes-position < 4096)	    blocksize = bytes-position;	else	    blocksize = 4096;			/* Write to the sound device. */	written = snd_pcm_plugin_write(alsa_pcm, &samples[position], blocksize);	/* If ALSA can't take any more data right now, it'll return -EAGAIN.	   If this were sound code for a game, we'd probably just contine the	   game loop and try to write data the next time around.	   In a game, you'd probably also want to put the device in nonblocking	   mode (see the snd_pcm_nonblock_mode() function). */	if (written == -EAGAIN) {	    /* Waste some time. This keeps us from using 100% CPU. */	    usleep(1000);	    written = 0;	} else {	    if (written < 0) {		perror("\nALSA player: error writing to sound device");		snd_pcm_close(alsa_pcm);		return -1;	    }	}	/* Update the position. */	position += written;	/* Print some information. */	WritePlaybackStatus(position, bytes, channels, bits, rate);	printf("\r");	fflush(stdout);    }    printf("\n");    /* Wait until ALSA's internal buffers are empty, then stop playback.       This will make sure that the entire sound clip has played. */    snd_pcm_channel_flush(alsa_pcm, SND_PCM_CHANNEL_PLAYBACK);    snd_pcm_close(alsa_pcm);    return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美肥妇free| 亚洲欧美综合在线精品| 在线精品观看国产| 91色在线porny| 岛国av在线一区| 国产成人午夜精品影院观看视频| 九色porny丨国产精品| 久久精品国产精品青草| 男人的天堂久久精品| 久久精品国产一区二区三区免费看| 午夜久久久久久久久| 亚洲国产欧美日韩另类综合 | 国产精品久久久久久户外露出| 久久免费看少妇高潮| 日本一区二区三区四区| 国产精品久线在线观看| 亚洲欧洲日韩在线| 亚洲黄色免费电影| 亚洲国产综合视频在线观看| 亚洲妇女屁股眼交7| 石原莉奈在线亚洲二区| 日产精品久久久久久久性色| 免费人成精品欧美精品| 国产在线精品不卡| 成人免费观看男女羞羞视频| 99re成人在线| 欧美日韩成人综合天天影院 | 欧美日韩国产a| 日韩欧美久久一区| 久久精品一区蜜桃臀影院| 国产精品美女久久久久aⅴ | 丝袜亚洲另类欧美| 久久精品国产99国产| 高清日韩电视剧大全免费| 成人h精品动漫一区二区三区| 一本大道综合伊人精品热热| 69久久夜色精品国产69蝌蚪网| 久久婷婷国产综合国色天香| 国产精品久久久久久妇女6080| 亚洲在线成人精品| 麻豆精品新av中文字幕| 成人国产精品免费观看| 欧美午夜一区二区三区免费大片| 欧美草草影院在线视频| 国产精品国产三级国产a| 性欧美疯狂xxxxbbbb| 国产精品中文字幕一区二区三区| 91黄色激情网站| 欧美成人猛片aaaaaaa| 成人黄色电影在线| 成人一区二区三区视频在线观看| 91美女片黄在线观看91美女| 欧美一级二级三级蜜桃| 国产精品第13页| 午夜精品aaa| 成+人+亚洲+综合天堂| 欧美日韩mp4| 国产亚洲制服色| 亚洲成人av免费| 丰满亚洲少妇av| 欧美本精品男人aⅴ天堂| 欧美国产欧美亚州国产日韩mv天天看完整 | 欧美优质美女网站| 欧美经典一区二区三区| 99精品久久免费看蜜臀剧情介绍| 国产乱码精品1区2区3区| 欧美私模裸体表演在线观看| 综合色天天鬼久久鬼色| 91精品国产品国语在线不卡| 免费人成在线不卡| 婷婷综合五月天| 成人高清免费观看| 精品国产乱码久久久久久牛牛 | 久久久一区二区三区捆绑**| 亚洲综合另类小说| 国产成人免费视| 日韩精品一区二区三区中文不卡| 亚洲制服欧美中文字幕中文字幕| 丁香亚洲综合激情啪啪综合| 日韩欧美亚洲国产精品字幕久久久| 亚洲欧美经典视频| 成人福利电影精品一区二区在线观看| 91麻豆精品国产91久久久久久久久| 国产精品国产三级国产有无不卡 | 精品亚洲国内自在自线福利| 欧美日韩一区二区三区四区五区| 中文字幕色av一区二区三区| 国产一区二区三区蝌蚪| 日韩欧美精品三级| 日本三级韩国三级欧美三级| 欧美日韩在线精品一区二区三区激情| 国产精品天干天干在观线| 国产美女久久久久| 欧美xxxx老人做受| 久久不见久久见免费视频1| 欧美精品 日韩| 亚洲国产中文字幕在线视频综合| 一本色道久久综合精品竹菊| 国产精品乱人伦| 成人av电影在线| 国产精品久久午夜| 成人免费精品视频| 国产精品国产三级国产三级人妇| 成人综合日日夜夜| 国产精品天美传媒| 91在线高清观看| 亚洲女爱视频在线| 色一情一乱一乱一91av| 亚洲乱码一区二区三区在线观看| 91在线播放网址| 亚洲综合一区在线| 欧美日韩在线免费视频| 日韩不卡在线观看日韩不卡视频| 777色狠狠一区二区三区| 秋霞电影网一区二区| 欧美大片顶级少妇| 国产精品一区久久久久| 国产欧美综合在线| 波多野结衣在线aⅴ中文字幕不卡| 国产精品欧美久久久久无广告| 成av人片一区二区| 亚洲综合视频在线| 日韩欧美自拍偷拍| 国产在线视频一区二区| 欧美极品少妇xxxxⅹ高跟鞋| 成人av网址在线| 一区二区三区毛片| 欧美一区中文字幕| 国产精品888| 亚洲人亚洲人成电影网站色| 欧美中文字幕一二三区视频| 午夜av电影一区| 久久亚洲一区二区三区四区| 成人av片在线观看| 亚洲国产日韩精品| 精品理论电影在线| 成人av在线一区二区三区| 亚洲丶国产丶欧美一区二区三区| 日韩欧美自拍偷拍| 国产高清无密码一区二区三区| 亚洲人成精品久久久久久| 欧美精品在线一区二区| 国模大尺度一区二区三区| 亚洲区小说区图片区qvod| 欧美精品三级日韩久久| 国产精品99久久久久久有的能看| 亚洲综合男人的天堂| 精品免费国产二区三区| 色综合天天综合色综合av| 日韩电影在线免费看| 中文字幕成人网| 欧美日本一区二区在线观看| 国产乱对白刺激视频不卡| 一区二区三区不卡视频| 亚洲精品一区二区在线观看| 色婷婷久久一区二区三区麻豆| 日韩福利电影在线观看| 欧美国产乱子伦| 91麻豆精品国产| 99re热视频这里只精品| 激情久久久久久久久久久久久久久久| 亚洲日穴在线视频| 精品日韩欧美在线| 91在线云播放| 中文字幕在线不卡| 成人动漫一区二区三区| 久久av资源站| 日韩美女啊v在线免费观看| 精品日产卡一卡二卡麻豆| 成人综合在线观看| 日韩av一区二区三区四区| 日韩女优视频免费观看| 欧美性受极品xxxx喷水| 国产成人综合亚洲网站| 亚洲午夜久久久| 国产精品久久久久久久久免费相片 | 日韩精品亚洲一区| 国产精品狼人久久影院观看方式| 欧美tickling网站挠脚心| 91日韩一区二区三区| 久久精品99久久久| 国产精品久久久久久久久果冻传媒 | 色综合久久久久综合体| 欧美日本国产一区| 大陆成人av片| 美国av一区二区| 亚洲免费观看视频| 久久久久9999亚洲精品| 日韩一区二区三区视频在线观看| 色综合色狠狠综合色| 国产一区二区精品在线观看| 中文久久乱码一区二区| 26uuu国产一区二区三区| 欧美日韩精品一区二区三区蜜桃 | 亚洲精品在线电影| 欧美久久久久久蜜桃| 91视频一区二区| 国产99精品在线观看| 日韩电影在线免费观看| 日本亚洲最大的色成网站www|