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

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

?? sunaudio.cpp

?? 一個KDE下的錄音程序
?? CPP
字號:
#ifdef HAVE_SUN_AUDIOIO_H/* * Soundcard class for Solaris */#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#include <fcntl.h>#include <errno.h>#include <sys/ioctl.h>#include <sys/audioio.h>/* for ioctl(I_FLUSH) */#include <stropts.h>#include <sys/conf.h>#include "sound.h"#include "sunaudio.h"#include "sunaudio.moc"/* ---------------------------------------------------------------------- */Soundcard::Soundcard(char *dev){    if (dev)	strcpy(devname,dev);    else	strcpy(devname,"/dev/audio");        strcpy(driver_name,"sunaudio");    get_capabilities();    channels = 1;    rate = 16000;    afmt = AUDIO_ENCODING_LINEAR;    precision = 16;    fd = -1;    stat = STATUS_CLOSED;}Soundcard::~Soundcard(){    stop();}intSoundcard::start_record(){    switch (stat) {    case STATUS_CLOSED:	if (!init_done)	    get_capabilities();	if (!init_done)	    return -1;	return open_dev(TRUE);    case STATUS_RECORD:	return 0;    case STATUS_PLAYBACK:	close_dev();	return open_dev(TRUE);    }    return -1;}intSoundcard::start_playback(){    switch (stat) {    case STATUS_CLOSED:	if (!init_done)	    get_capabilities();	if (!init_done)	    return -1;	return open_dev(FALSE);    case STATUS_RECORD:	close_dev();	return open_dev(FALSE);    case STATUS_PLAYBACK:	return 0;    }    return -1;}intSoundcard::kill_buffer(){    if(ioctl(fd, I_FLUSH, FLUSHRW)<0) {	fprintf(stderr,"Sun audio error: could not flush queues: %s\n",strerror(errno));	return errno;    }    return 0;}intSoundcard::stop(){    if (stat != STATUS_CLOSED)	close_dev();    return 0;}/* ---------------------------------------------------------------------- */voidSoundcard::get_capabilities(){    int dsp;    audio_device_t audiotype;	       if (-1 != (dsp = open(devname, O_RDONLY))) {	afmt_hw = -1; 	if (ioctl(dsp,AUDIO_GETDEV,&audiotype)<0) {	    fprintf(stderr,"Sun driver warning: could not determine audio device type\n");	} else {	    sprintf(driver_name,audiotype.name);	    DEBUG(printf("Sound driver recognized as ,,%s''\n",driver_name));	}	if (!strcmp(audiotype.name,"SUNW,am79c30")) {		// AMD 79C30 		// 8bit mono ulaw 8kHz 		channels_hw = 1;		afmt_hw = AUDIO_ENCODING_ULAW;		precision_hw = 8;		rate_hw = 8000;		/*		// if (tmp_precision==8)&&(tmp_channel==1)&&(tmp_rate==8000))			tmp_encoding=AUDIO_ENCODING_ULAW;			fprintf(stderr,"ERROR: this program needs better soundcard\n");		else {			fprintf(stderr,"Sound init error");			return 1;		}		*/	} else	  if ((!strcmp(audiotype.name,"SUNW,CS4231"))||	      (!strcmp(audiotype.name,"SUNW,dbri"))||	      (!strcmp(audiotype.name,"speakerbox"))) {		// CS 4231 or DBRI or speaker box		// 16bit mono/stereo linear 8kHz - 48kHz		channels_hw = 2;		afmt_hw = AUDIO_ENCODING_LINEAR | AUDIO_ENCODING_ULAW;		precision_hw = 16 | 8;		rate_hw = 48000;		/*		if(tmp_precision==16)			tmp_encoding=AUDIO_ENCODING_LINEAR;		// 8bit mono ulaw 8kHz - 48kHz		else if((tmp_precision==8)&&(tmp_channels==1))			tmp_encoding=AUDIO_ENCODING_ULAW;		else {			fprintf(stderr,"Sound init error");			return 1;		}		*/	}			if(afmt_hw==-1) {	//	if((tmp_precision==8)&&(tmp_stereo==1)&&(tmp_rate<=8000))	//		play_encoding = AUDIO_ENCODING_ULAW;	//	else		channels_hw = 2;		precision_hw = 16 | 8;		afmt_hw = AUDIO_ENCODING_LINEAR | AUDIO_ENCODING_ULAW;		rate_hw = 48000;	}        close(dsp);	init_done = 1;    } else {	init_done = 0;    }}intSoundcard::has_channels(){    if (!init_done)	return -1;    return channels_hw;}intSoundcard::has_format(int f){    if (!init_done)	return -1;    switch (f) {    case FMT_8BIT:        return (afmt_hw & AUDIO_ENCODING_ULAW) ? 1 : 0;	break;    case FMT_16BIT:        return (afmt_hw & AUDIO_ENCODING_LINEAR) ? 1 : 0;    case FMT_MULAW:    case FMT_ALAW:    default:	return 0;    }}char*Soundcard::driver(){    return driver_name;}intSoundcard::open_dev(int record){    struct SOUNDPARAMS		p;    struct audio_info_t		audioinfo;    struct audio_prinfo_t	*audiotype;    if (-1 == (fd = open(devname,record ? O_RDONLY : O_WRONLY)))        goto err;    fcntl(fd,F_SETFD,FD_CLOEXEC);        AUDIO_INITINFO(&audioinfo);    audiotype = record ? &audioinfo.record : &audioinfo.play;        audiotype->precision	= precision;    audiotype->channels		= channels;    audiotype->sample_rate	= rate;    audiotype->encoding		= afmt;    if (record)	audiotype->port=AUDIO_MICROPHONE; // could be AUDIO_LINE_IN    if(ioctl(fd,AUDIO_SETINFO,&audioinfo)<0) {	fprintf(stderr,"Sun audio error: could not set info: %s\n",strerror(errno));	goto err;    }    if(ioctl(fd,AUDIO_GETINFO,&audioinfo)<0) {	fprintf(stderr,"Sun audio error: could not get info: %s\n",strerror(errno));	goto err;    }    if ((audiotype->precision	!= (uint_t)precision) ||	(audiotype->channels	!= (uint_t)channels) ||	(audiotype->sample_rate	!= (uint_t)rate) ||	(audiotype->encoding	!= (uint_t)afmt)) {	fprintf(stderr,"Sun audio error: could not set info properly\n");	goto err;    }    /* If would not flush, data has MAX input level at 99 */    if(ioctl(fd, I_FLUSH, FLUSHRW)<0) {	fprintf(stderr,"Sun audio error: could not flush queues: %s\n",strerror(errno));	goto err;    }    telmi = new QSocketNotifier(fd, record ? QSocketNotifier::Read : QSocketNotifier::Write);    QObject::connect(telmi,SIGNAL(activated(int)), this, SLOT(sounddata(int)));      stat = record ? STATUS_RECORD : STATUS_PLAYBACK;    p.channels  = audiotype->channels;    p.rate      = audiotype->sample_rate;    p.blocksize = audiotype->buffer_size;    p.latency = p.blocksize * 1000 / p.channels / p.rate;    switch (afmt)    {    case AUDIO_ENCODING_ULAW:	p.format = FMT_8BIT;	break;    case AUDIO_ENCODING_LINEAR:	p.latency /= 2;	p.format = FMT_16BIT;	break;    default:	fprintf(stderr,"oops(open): unsupported sound format\n");	exit(1);    }    emit newparams(&p);     rate     = p.rate;    channels = p.channels;    blocksize = p.blocksize;    latency = p.latency;    DEBUG(printf("%s (format=%d, %s, rate=%d, blocksize=%d, latency=%d ms)\n",    	  record ? "recording" : "playback",    	  afmt, (p.channels == 2) ? "stereo" : "mono",    	  p.rate, p.blocksize, p.latency));    DEBUG(printf("Sound driver opened\n"));    return 0;err:    if (-1 != fd)        close(fd);    stat = STATUS_CLOSED;    fd = -1;    return -1;}voidSoundcard::close_dev(){    close(fd);    fd = -1;    stat = STATUS_CLOSED;    if (telmi) {        delete telmi;	telmi = NULL;    }    DEBUG(printf("Sound driver closed\n"));    return;}voidSoundcard::setparams(struct SOUNDPARAMS *p){    rate     = p->rate;    channels = p->channels;    switch (p->format) {    case FMT_8BIT:   afmt = AUDIO_ENCODING_ULAW;      break;    case FMT_16BIT:  afmt = AUDIO_ENCODING_LINEAR;    break;    default: fprintf(stderr,"oops(set): unsupported sound %d format\n",p->format); exit(1);    }        switch (stat) {    case STATUS_RECORD:    	close_dev();	open_dev(TRUE);	break;    case STATUS_PLAYBACK:	close_dev();	open_dev(FALSE);	break;    case STATUS_CLOSED:	if (!init_done)	    get_capabilities();	if (!init_done)	    return;	if (0 == open_dev(TRUE))	    close_dev();	break;    }}voidSoundcard::sounddata(int s){    switch (stat) {    case STATUS_RECORD:	read(fd,buffer,blocksize);	emit senddata((void*)buffer);	break;    case STATUS_PLAYBACK:	emit receivedata((void*)buffer);	write(fd,buffer,blocksize);	emit senddata((void*)buffer); /* fft :-) */	break;    }}#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产露脸91国语对白| 亚洲一区电影777| 国产成人午夜片在线观看高清观看| 日韩视频一区二区在线观看| 全部av―极品视觉盛宴亚洲| 日韩精品中文字幕在线不卡尤物| 久久成人av少妇免费| 久久久久高清精品| 成人av午夜影院| 一区二区国产盗摄色噜噜| 欧美日韩在线三级| 麻豆精品一区二区综合av| 国产肉丝袜一区二区| 一本久久a久久精品亚洲| 五月婷婷久久丁香| 久久精品视频一区二区三区| 波多野结衣在线aⅴ中文字幕不卡 波多野结衣在线一区 | 国产精品欧美精品| 91小视频在线免费看| 五月婷婷另类国产| 久久久久97国产精华液好用吗| 99免费精品视频| 99re这里只有精品首页| 一区二区三区视频在线观看| 日韩精品中文字幕在线不卡尤物 | 国产永久精品大片wwwapp| 成人欧美一区二区三区小说| 欧美日韩精品电影| 国产成人免费视| 午夜一区二区三区视频| 国产欧美日韩在线| 欧美男女性生活在线直播观看| 国产河南妇女毛片精品久久久| 一区二区三区毛片| 久久精品一区二区三区不卡牛牛| 欧美性三三影院| 国产999精品久久| 日韩成人dvd| 亚洲欧美日韩国产手机在线| 精品久久久三级丝袜| 在线一区二区三区四区| 大白屁股一区二区视频| 奇米精品一区二区三区在线观看 | 国产成人综合亚洲网站| 天天色 色综合| 日韩毛片一二三区| 久久嫩草精品久久久久| 欧美美女一区二区在线观看| 91香蕉视频黄| 成人av电影免费观看| 激情综合色综合久久综合| 亚洲超碰97人人做人人爱| 国产精品久久久久久久久久免费看| 日韩免费在线观看| 欧美乱妇一区二区三区不卡视频| 91在线无精精品入口| 成人午夜精品一区二区三区| 经典三级视频一区| 免费成人在线影院| 天堂av在线一区| 一区二区三区在线播| 亚洲欧洲三级电影| 国产精品高清亚洲| 国产日韩精品一区| 久久久久九九视频| 久久一留热品黄| 久久综合久久综合亚洲| 26uuu精品一区二区| 日韩美女视频一区二区在线观看| 777久久久精品| 欧美一级免费大片| 91麻豆精品国产91久久久使用方法 | 欧美亚洲图片小说| 色欧美88888久久久久久影院| 成人美女视频在线观看| 粉嫩欧美一区二区三区高清影视| 韩国在线一区二区| 国产一区久久久| 国产乱理伦片在线观看夜一区| 国产剧情一区二区三区| 国产盗摄视频一区二区三区| 久久精品999| 久久国产夜色精品鲁鲁99| 黄色日韩网站视频| 国产乱码精品一区二区三区五月婷 | 视频一区中文字幕国产| 天天色综合成人网| 久久精品国产免费| 福利电影一区二区三区| 91亚洲男人天堂| 在线欧美日韩精品| 91精品久久久久久蜜臀| 欧美精品一区二区三区视频 | 成人美女视频在线看| 91亚洲精品一区二区乱码| 欧洲一区在线电影| 91精品国产一区二区三区蜜臀 | 国产视频911| 亚洲欧美一区二区三区极速播放| 亚洲va欧美va人人爽| 国产一区二区在线电影| 99精品国产99久久久久久白柏| 在线亚洲欧美专区二区| 精品久久久久香蕉网| 成人免费小视频| 日本不卡一区二区三区高清视频| 国产在线精品一区二区夜色 | 欧美日韩一区三区| 欧美成人精品二区三区99精品| 国产精品视频看| 日韩在线观看一区二区| 国产高清无密码一区二区三区| 色噜噜狠狠色综合中国| 日韩一级在线观看| 一区视频在线播放| 另类小说综合欧美亚洲| 91在线丨porny丨国产| 日韩片之四级片| 亚洲欧美日韩人成在线播放| 秋霞午夜av一区二区三区| 不卡欧美aaaaa| 精品毛片乱码1区2区3区| 亚洲日本丝袜连裤袜办公室| 日韩av中文字幕一区二区| 99精品热视频| 国产日韩欧美激情| 日韩av在线播放中文字幕| 99久久久国产精品免费蜜臀| 日韩久久免费av| 亚洲国产成人91porn| 不卡的av电影| 久久亚洲精品国产精品紫薇| 亚洲第一综合色| 91亚洲男人天堂| 国产女同互慰高潮91漫画| 日本人妖一区二区| 91久久精品一区二区三区| 国产欧美一区在线| 韩国午夜理伦三级不卡影院| 在线观看亚洲a| 亚洲欧洲综合另类在线| 粉嫩蜜臀av国产精品网站| 精品国产区一区| 日韩电影在线观看网站| 欧美在线短视频| 国产精品久久久久久妇女6080| 精品亚洲porn| 精品国产一区二区三区四区四| 午夜私人影院久久久久| 久久久91精品国产一区二区精品 | 一区二区三区在线免费播放| 成人黄色软件下载| 2021国产精品久久精品| 精品亚洲国内自在自线福利| 欧美乱妇15p| 亚洲成av人片观看| 欧美日韩国产精品自在自线| 亚洲免费高清视频在线| 99久久精品费精品国产一区二区| 国产亚洲一区字幕| 国产一区 二区| 欧美xxxx在线观看| 激情综合亚洲精品| 久久亚洲精精品中文字幕早川悠里| 免费不卡在线视频| 日韩一区二区在线观看| 日韩电影在线免费看| 555www色欧美视频| 奇米色777欧美一区二区| 日韩欧美电影在线| 精品综合免费视频观看| 欧美v国产在线一区二区三区| 精品一区二区免费在线观看| 久久精品视频一区二区| 国产99久久久国产精品免费看| 国产亚洲欧洲997久久综合| 国产精品伊人色| 国产精品入口麻豆原神| 91在线视频观看| 亚洲电影第三页| 日韩免费视频一区| 高清成人在线观看| 日韩毛片视频在线看| 欧美性猛片aaaaaaa做受| 日本视频中文字幕一区二区三区| 日韩欧美中文字幕制服| 国产精品自在在线| 亚洲青青青在线视频| 欧美日韩激情一区二区| 黄色精品一二区| 国产精品久久久久久妇女6080| 91黄色免费观看| 久草这里只有精品视频| 国产精品视频在线看| 欧美无砖专区一中文字| 久久av资源网| 亚洲精品视频观看| 日韩精品一区二区三区在线观看| 成人午夜激情视频| 亚洲成人av一区二区|