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

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

?? speaker.c

?? 語音Email/語音Modem程序包
?? C
字號:
/* -*- C++ -*- * Speaker.C - source file for class Speaker * Copyright (c) 1998 Joe Yandle <joe@wlcg.com> *  * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. *  * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. *  * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. *  */#include "Speaker.h"#include "GtkView.h"#include <sys/soundcard.h>#include <sys/types.h>#include <sys/stat.h>#include <sys/ioctl.h>#include <stdio.h>#include <fcntl.h>#include <string.h>#include <unistd.h>Speaker::Speaker(GtkView* v){  view = v;}void Speaker::playWav(const String& wavFile){  FILE* fp;  char chunkID[5];  long chunkSize;  short wFormatTag;  unsigned short wChannels;  unsigned long dwSamplesPerSec;  unsigned long dwAvgBytesPerSec;  unsigned short wBlockAlign;  unsigned short wBitsPerSample;  char groupID[8], riffType[5];  unsigned char* wavBuf;  int bufSize;  int dsp;  long startData;  if((dsp=open(DEV,O_WRONLY))==-1) {    view->display("Error opening device", DEV, true, 10);    return;  }  if (ioctl(dsp, SNDCTL_DSP_SYNC, 0)==-1) {    view->display("Error syncing device", DEV, true, 10);    close(dsp);    return;  }  if(!(fp = fopen(wavFile.cstr(), "r"))) {    close(dsp);    return;  }  fread(groupID,sizeof(char),8,fp);  fread(riffType,sizeof(char),4,fp);  groupID[4]=0;  riffType[4]=0;  chunkID[4]=0;  fread(chunkID,sizeof(char),4,fp);  fread(&chunkSize,sizeof(long),1,fp);  fread(&wFormatTag,sizeof(short),1,fp);  fread(&wChannels,sizeof(unsigned short),1,fp);  fread(&dwSamplesPerSec,sizeof(unsigned long),1,fp);  fread(&dwAvgBytesPerSec,sizeof(unsigned long),1,fp);  fread(&wBlockAlign,sizeof(unsigned short),1,fp);  fread(&wBitsPerSample,sizeof(unsigned short),1,fp);  bufSize = dwSamplesPerSec*wBlockAlign/4;  wavBuf = new unsigned char[bufSize];  int bits = wBitsPerSample;  int samples = dwSamplesPerSec;  int channels = wChannels;  ioctl(dsp, SOUND_PCM_WRITE_BITS, &bits);  ioctl(dsp, SOUND_PCM_WRITE_RATE, &samples);  ioctl(dsp, SOUND_PCM_WRITE_CHANNELS, &channels);#ifdef SOUND_DEBUG  printf("Sample size: %d bits\n", bits);  printf("Sample rate: %d Hz\n", samples);  if(channels == 1)    printf("Sample mode: mono\n");  else if(channels == 2)    printf("Sample mode: stereo\n");#endif  if(wBitsPerSample == 16) {    int format = AFMT_S16_LE;    ioctl(dsp, SOUND_PCM_SETFMT, &format);  }  else if(wBitsPerSample == 8) {    int format = AFMT_U8;    ioctl(dsp, SOUND_PCM_SETFMT, &format);  }  while(!strstr(chunkID, "data")) {    fread(&chunkID,sizeof(char),4,fp);    chunkID[4]=0;    fread(&chunkSize,sizeof(long),1,fp);    if(!strstr(chunkID,"data")) {      fseek(fp, chunkSize, SEEK_CUR);    }  }  startData = ftell(fp);    struct stat s;  stat(wavFile.cstr(),&s);  long fileSize = s.st_size;    int bufs;  int lastBufSize;  if(startData+chunkSize > fileSize) {    bufs = (fileSize-startData)/bufSize;    lastBufSize = (fileSize-startData)%bufSize;  }  else {    bufs = chunkSize/bufSize;    lastBufSize = chunkSize%bufSize;  }  for(int i=0; i<bufs; i++) {    view->handleEvents();    fread(wavBuf, sizeof(unsigned char), bufSize, fp);    write(dsp,wavBuf,bufSize);  }  fread(wavBuf, sizeof(unsigned char), lastBufSize, fp);  write(dsp,wavBuf,lastBufSize);  fclose(fp);  close(dsp);}void Speaker::recWav(const String& wavFile){  char recFile[256];  char tempRecFile[256];  int recBitsPerSample = 16;  int recSamplesPerSec = 8000;  int recNumChannels = 1;  double recSecFraction = 0.25;  strcpy(recFile, wavFile.cstr());  sprintf(tempRecFile, "%s.raw", recFile);  FILE* fp;  FILE* recfp;  int numRead = 0;  int dsp;      char groupID[8], riffType[5], chunkID[5];  long chunkSize;  short wFormatTag;  unsigned short wChannels;  unsigned long dwSamplesPerSec;  unsigned long dwAvgBytesPerSec;  unsigned short wBlockAlign;  unsigned short wBitsPerSample;  int arg;  if(view->getRecOn())    return;    if((fp = fopen(tempRecFile, "w+")) == NULL)    return;    if((dsp = open(DEV, O_RDONLY)) == -1)    return;    arg = recBitsPerSample;  ioctl(dsp, SOUND_PCM_WRITE_BITS, &arg);  arg = recSamplesPerSec;  ioctl(dsp, SOUND_PCM_WRITE_RATE, &arg);  arg = recNumChannels;  ioctl(dsp, SOUND_PCM_WRITE_CHANNELS, &arg);      view->setRecOn(true);  int bufSize = (int)(recSecFraction*recSamplesPerSec*recNumChannels*recBitsPerSample/8);  unsigned char* recBuf = new unsigned char[bufSize];      while(view->getRecOn()) {    view->handleEvents();    read(dsp, recBuf, bufSize);    fwrite(recBuf, sizeof(unsigned char), bufSize, fp);    numRead += bufSize;  }    fclose(fp);    fp = fopen(tempRecFile, "r+");  recfp = fopen(recFile, "w+");  strcpy(groupID, "RIFF");  strcpy(riffType, "WAVE");  strcpy(chunkID, "fmt ");  chunkSize = 16;  wFormatTag = 1;  wChannels = recNumChannels;  dwSamplesPerSec = recSamplesPerSec;  wBlockAlign = recNumChannels*recBitsPerSample/8;  dwAvgBytesPerSec = recSamplesPerSec*wBlockAlign;  wBitsPerSample = recBitsPerSample;  fwrite(groupID,sizeof(char),8,recfp);  fwrite(riffType,sizeof(char),4,recfp);  fwrite(chunkID,sizeof(char),4,recfp);  fwrite(&chunkSize,sizeof(long),1,recfp);  fwrite(&wFormatTag,sizeof(short),1,recfp);  fwrite(&wChannels,sizeof(unsigned short),1,recfp);  fwrite(&dwSamplesPerSec,sizeof(unsigned long),1,recfp);  fwrite(&dwAvgBytesPerSec,sizeof(unsigned long),1,recfp);  fwrite(&wBlockAlign,sizeof(unsigned short),1,recfp);  fwrite(&wBitsPerSample,sizeof(unsigned short),1,recfp);  strcpy(chunkID, "data");  chunkSize = numRead;    fwrite(chunkID,sizeof(char),4,recfp);  fwrite(&chunkSize,sizeof(long),1,recfp);    for(int i=0; i< numRead; i+= bufSize) {    fread(recBuf, sizeof(char), bufSize, fp);    fwrite(recBuf, sizeof(char), bufSize, recfp);  }  fclose(fp);  fclose(recfp);  //remove(tempRecFile);  char temp1[256];  sprintf(temp1, "Finished recording: %d bytes", numRead);  view->display(temp1, NULL, true, 0);  close(dsp);  }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品无圣光一区二区| 欧美国产激情二区三区| 久久看人人爽人人| 亚洲三级免费观看| 日韩av不卡在线观看| 国产成人丝袜美腿| 欧美日韩精品一区二区在线播放| www国产亚洲精品久久麻豆| 日韩美女久久久| 狠狠色丁香久久婷婷综| 91福利在线免费观看| 久久精品夜色噜噜亚洲a∨| 亚洲一区二区三区影院| 国产盗摄精品一区二区三区在线 | 欧美羞羞免费网站| 久久这里只有精品首页| 午夜久久电影网| 99国产精品久久久| 国产丝袜在线精品| 奇米色777欧美一区二区| 色婷婷亚洲综合| 国产精品美女久久久久久久网站| 免费看日韩a级影片| 欧美视频在线播放| 亚洲欧洲av在线| 国产91精品入口| 2023国产精华国产精品| 日日摸夜夜添夜夜添国产精品 | 免费人成在线不卡| 色噜噜夜夜夜综合网| 亚洲视频在线一区观看| 粉嫩aⅴ一区二区三区四区| 久久亚洲二区三区| 免费久久精品视频| 日韩免费观看高清完整版在线观看| 亚洲制服欧美中文字幕中文字幕| 99久久精品国产网站| 国产精品青草综合久久久久99| 国产精品一线二线三线| 欧美精品一区二区高清在线观看| 免费的国产精品| 日韩精品一区二区三区在线播放 | 国产丝袜美腿一区二区三区| 久久99精品久久久久婷婷| 欧美一区二区成人| 免费在线成人网| 精品入口麻豆88视频| 毛片不卡一区二区| 精品美女一区二区三区| 久久99精品久久久久久| 欧美精品一区二区在线播放| 国产美女av一区二区三区| 精品91自产拍在线观看一区| 国产麻豆9l精品三级站| 国产精品毛片大码女人| 日本高清不卡一区| 天堂在线一区二区| 欧美变态凌虐bdsm| 高清不卡一区二区在线| 亚洲日本欧美天堂| 欧美色网一区二区| 精品在线亚洲视频| 国产亚洲欧洲997久久综合| www.在线成人| 中文字幕一区二区三区蜜月| 在线亚洲一区观看| 日韩成人av影视| 久久久国产午夜精品| av电影在线观看一区| 午夜精品久久久久久| 精品国产乱码久久久久久老虎| 国产成人av电影免费在线观看| 国产精品成人在线观看| 欧美日韩mp4| 国产精品自拍一区| 亚洲综合色自拍一区| 欧美不卡一区二区| 91在线国产福利| 美女网站在线免费欧美精品| 国产精品成人一区二区艾草| 欧美日本在线视频| 国产大陆a不卡| 丝袜美腿亚洲一区| 国产日韩视频一区二区三区| 欧美在线你懂得| 国产乱子伦视频一区二区三区| 亚洲综合久久久久| 久久久91精品国产一区二区三区| 欧洲av一区二区嗯嗯嗯啊| 日韩成人精品在线| 亚洲日本一区二区| 久久久久久久久岛国免费| 欧美亚洲图片小说| 成人听书哪个软件好| 日本不卡的三区四区五区| 日韩一区在线播放| 欧美大片免费久久精品三p | 国产一区二区精品久久99| 亚洲欧美电影一区二区| 国产亚洲综合性久久久影院| 欧美精品18+| 91传媒视频在线播放| 丰满放荡岳乱妇91ww| 亚洲成人一区在线| 亚洲欧洲日韩在线| 精品久久一区二区三区| 欧美日韩一区二区三区高清| 99免费精品在线观看| 国产乱人伦精品一区二区在线观看| 日韩激情视频在线观看| 夜夜嗨av一区二区三区四季av| 国产精品色一区二区三区| 久久日韩粉嫩一区二区三区| 精品免费视频.| 91精品国产乱| 这里是久久伊人| 欧美日韩一区二区三区在线| 91久久国产综合久久| 91丨九色丨黑人外教| 99re热这里只有精品免费视频| 国产激情一区二区三区桃花岛亚洲| 日本aⅴ精品一区二区三区| 亚洲主播在线播放| 亚洲精品国产精品乱码不99| 亚洲三级久久久| 亚洲精品国产无套在线观| 一区二区视频在线看| 亚洲天堂免费看| 亚洲色图欧美在线| 一区二区三区波多野结衣在线观看| 亚洲伦理在线精品| 亚洲一区二区三区四区中文字幕| 亚洲影院免费观看| 五月天久久比比资源色| 日韩不卡免费视频| 韩国成人精品a∨在线观看| 国产一区二区在线观看视频| 国产不卡高清在线观看视频| av中文字幕一区| 欧美三级日韩在线| 91麻豆精品国产无毒不卡在线观看| 精品三级av在线| 久久久久国产一区二区三区四区| 国产嫩草影院久久久久| 亚洲精品乱码久久久久久黑人 | 精品免费日韩av| 国产精品欧美久久久久一区二区| 国产精品久久久久影院亚瑟| 最新日韩av在线| 日本三级韩国三级欧美三级| 国产美女一区二区| 91论坛在线播放| 日韩欧美国产高清| 亚洲国产精华液网站w | 久久亚洲一区二区三区明星换脸| 国产欧美精品在线观看| 一区二区三区日本| 蜜桃精品视频在线观看| 国产成人免费高清| 欧美在线free| 久久久久久久久久看片| 亚洲美女淫视频| 蜜桃av噜噜一区| 91丨九色丨蝌蚪丨老版| 91精品国产综合久久香蕉麻豆| 亚洲视频一区二区在线观看| 日本最新不卡在线| 丁香网亚洲国际| 日韩欧美色综合网站| 亚洲图片欧美激情| 精品亚洲成a人| 欧美亚洲国产bt| 国产精品全国免费观看高清| 日本不卡在线视频| 91黄色免费网站| 国产午夜三级一区二区三| 亚洲第一精品在线| 成人激情电影免费在线观看| 这里是久久伊人| 亚洲午夜久久久久| 国产成人精品免费在线| 9191久久久久久久久久久| 国产精品网站一区| 狠狠v欧美v日韩v亚洲ⅴ| 欧美在线短视频| 亚洲欧美偷拍三级| 国产乱码精品1区2区3区| 欧美精品vⅰdeose4hd| 亚洲免费观看高清完整版在线| 激情五月播播久久久精品| 欧美日韩日本视频| 亚洲人成精品久久久久久 | 日日摸夜夜添夜夜添国产精品 | 亚洲网友自拍偷拍| 不卡一区二区三区四区| 337p日本欧洲亚洲大胆色噜噜| 麻豆一区二区三区| 欧美一区二区三区在线| 亚洲亚洲精品在线观看| 亚洲成va人在线观看|