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

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

?? ms_create.c

?? DSP 播放語音文件例子
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include "common.h"#ifndef NO_VOXPROMPT#define VOXPROMPTS_MAX 12#define VOXPROMPT_INIT_POS -1int _nPlayIPAddr = FALSE;LONG PlayIPAddress(char *szInStr, DWORD dwInit) {  int adwNumIndex[VOXPROMPTS_MAX] = {       0 /*1*/,  2979 /*2*/,  5846 /*3*/,  8720 /*4*/, 11916 /*5*/,   14518 /*6*/, 18091 /*7*/, 21504 /*8*/, 23937 /*9*/, 27727 /*0*/,   30979 /*.*/, 32977 /*end*/  }; // 32978 byte buffer conversion: seconds * 8029.705  static FILE *fpIn;  static int bFileOpened=FALSE;  static SHORT *asVoiceBuffer;  static int bBufferAllocated=FALSE;  static int bPCMStreamCreated=FALSE;  static int nCurrBuf=VOXPROMPT_INIT_POS;  static int nStart=0, nEnd=0, nSize=0;  static char szLocalString[16];  static int nCurrChar=0;  static int nDelayTimer=0;  static int nMaxBuffer=0;  static H_SYS_BUFFER hAudioStream = 0;  // struct timespec tsTime;  OCTET oData;  int i=0;  uAudioStreamParam uParam;  LONG lCreateErrCode;  AUDIO_OOB_SIGNAL xOOB;  extern void HandsetGenerateTone(OCTET ,                         DWORD ,                         BOOL );  if (dwInit && _nPlayIPAddr) { // don't re-init while playing      return AUDIO_CHANNEL_MESSAGE_ERROR_DEV_MULTIPLE;  }  if (dwInit) {    if (szInStr != NULL) {      strncpy (szLocalString, szInStr, 16);      szLocalString[15]='\0'; // make sure it's null terminated    }    else {      printf ("ERR: invalid string\n");      return AUDIO_CHANNEL_MESSAGE_ERROR_GENERAL;    }    HandsetGenerateTone(1, AUDIO_DIALTONE, OFF);    nCurrBuf = 0; // -1 is off state, 0 is on state    nCurrChar = 0;    _nPlayIPAddr = TRUE;  }  if (nCurrBuf == VOXPROMPT_INIT_POS) return AUDIO_CHANNEL_MESSAGE_NOERR;  if (!bFileOpened) {    fpIn = fopen ("voxprmts.pcm", "rb");    if (!fpIn) {      printf ("ERR: Error opening voxprmpt.pcm\n");      return AUDIO_CHANNEL_MESSAGE_ERROR_GENERAL;    }    bFileOpened=TRUE;  }  if (!bBufferAllocated) {    for (i=0; i<VOXPROMPTS_MAX-1; i++) {      if (adwNumIndex[i+1]-adwNumIndex[i] > nMaxBuffer)        nMaxBuffer = adwNumIndex[i+1]-adwNumIndex[i];    }    printf ("DBG: max voxprompt buffer: %d\n", nMaxBuffer);    asVoiceBuffer = (SHORT *) calloc (nMaxBuffer+1, sizeof(SHORT));    if (!asVoiceBuffer) {      printf ("ERR: Error getting buffer\n");      return AUDIO_CHANNEL_MESSAGE_ERROR_GENERAL;    }    else {      bBufferAllocated = TRUE;    }  }  // check vcx_lPrintProcessChannel for  0 channel  if (!bPCMStreamCreated) {    /* Create Audio Decoder Instance */    uParam.xDecoder.eCodecType = AUDIO_CODEC_PCM;    uParam.xDecoder.dwPacketDuration = 10;      uParam.xDecoder.dwJitterBufferDuration = DEFAULT_AUDIO_RX_JITTER;    lCreateErrCode =  AudioStreamCreate(&hAudioStream, AUDIO_STREAM_DECODE, &uParam);    if (lCreateErrCode != AUDIO_CHANNEL_MESSAGE_NOERR) {      printf ("ERR: Unable to create PCM stream, err code: %ld\n", lCreateErrCode);      return AUDIO_CHANNEL_MESSAGE_ERROR_GENERAL;    }    /* Associate Audio Decoder Instance */    lCreateErrCode = AudioStreamAssocChannel(hAudioStream, 1);    if (lCreateErrCode != AUDIO_CHANNEL_MESSAGE_NOERR) {      printf ("ERR: Unable to associate PCM stream, err code: %ld\n", lCreateErrCode);      return AUDIO_CHANNEL_MESSAGE_ERROR_GENERAL;    }    /* Activate Audio Decoder Instance */    lCreateErrCode = AudioStreamUpdStatus(hAudioStream, TRUE);    if (lCreateErrCode != AUDIO_CHANNEL_MESSAGE_NOERR) {      printf ("ERR: Unable to activate PCM stream, err code: %ld\n", lCreateErrCode);      return AUDIO_CHANNEL_MESSAGE_ERROR_GENERAL;    }    bPCMStreamCreated=TRUE;  }  if ((nCurrBuf > nSize) ||      (nCurrBuf == 0)) { // character done or new string    if (szLocalString[nCurrChar] != '\0') { // next char case      int nIdx;      if ((nDelayTimer-=10) > 0) { // play first 80 samples (of bg noise)        return AUDIO_CHANNEL_MESSAGE_ERROR_GENERAL;      }      nDelayTimer = 150; // in milliseconds      nCurrBuf = 0; // next char case      nIdx = szLocalString[nCurrChar] - '1';      if (nIdx == -1) nIdx = 9; /* 0 case */      else if (nIdx < 0) nIdx = 10; /* dot */        printf ("DBG: voxprompt digit %c\n", szLocalString[nCurrChar]);      nStart = adwNumIndex[nIdx];      nEnd = adwNumIndex[nIdx+1];      nSize = nEnd - nStart;      // printf ("DBG: nStart is %d, nEnd is %d, nSize is %d\n", nStart, nEnd, nSize);      if (fseek(fpIn, nStart, SEEK_SET)==-1) {        printf ("ERR: fseek err: nStart is %d\n", nStart);        return AUDIO_CHANNEL_MESSAGE_ERROR_GENERAL;      }      bzero(asVoiceBuffer, (nMaxBuffer+1)<<1); // clear trailing      for (i=0; i<nSize; i++) {        if (!fread(&oData, 1, 1, fpIn)) {          return AUDIO_CHANNEL_MESSAGE_ERROR_GENERAL;        }        asVoiceBuffer[i]= ((SHORT)oData)<<6; // volume here      } // fill buffer        nCurrChar++;    }    else { // free resources, last char done case      nCurrBuf = VOXPROMPT_INIT_POS;      _nPlayIPAddr = FALSE;        /* Deactivate Audio Decoder Instance */      lCreateErrCode = AudioStreamUpdStatus(hAudioStream, FALSE);      if (lCreateErrCode != AUDIO_CHANNEL_MESSAGE_NOERR) {        printf ("ERR: Unable to deactivate PCM stream, err code: %ld\n", lCreateErrCode);        return AUDIO_CHANNEL_MESSAGE_ERROR_GENERAL;      }        /* Destroy Audio Decoder Instance */      lCreateErrCode =  AudioStreamDestroy(hAudioStream);      if (lCreateErrCode != AUDIO_CHANNEL_MESSAGE_NOERR) {        printf ("ERR: Unable to destroy PCM stream, err code: %ld\n", lCreateErrCode);        return AUDIO_CHANNEL_MESSAGE_ERROR_GENERAL;      }        bPCMStreamCreated = FALSE;      free(asVoiceBuffer);      bBufferAllocated = FALSE;      fclose (fpIn);      bFileOpened=FALSE;      return AUDIO_CHANNEL_MESSAGE_NOERR;    }  }   xOOB.dwTimeStamp = 0; // dont care  xOOB.wSeqNum = 0; // dont care  xOOB.wTSI = 0; // dont care  AudioPutDecodeData(hAudioStream,    &(asVoiceBuffer[nCurrBuf]),    160,    &xOOB);  nCurrBuf+=80;  return AUDIO_CHANNEL_MESSAGE_NOERR;}#endif // NO_VOXPROMPTH_MEDIA_STREAM MediaStreamCreate(E_PROTOCOL_MEDIA eType, DWORD dwReferenceId){  MEDIA_STREAM *pStream;  ASSERT(dwReferenceId != 0);  pStream = MediaStreamFind(dwReferenceId);  if (pStream != NULL) {    MS_LOG("MediaStreamCreate(): Stream %lx exists\n", dwReferenceId);    pStream = NULL;  } else {    pStream = calloc(1, sizeof(MEDIA_STREAM));    pStream->dwId = dwReferenceId;    pStream->eType = eType;    if (pStream) {      ASSERT(g_pdllStream);      MS_LOG("MediaStreamCreate(): %lx, ID %lx\n",             (DWORD)pStream, dwReferenceId);      MS_LOCK();      DLLIST_append(g_pdllStream, pStream);      MS_UNLOCK();    }  }    return (H_MEDIA_STREAM)pStream;}void _MS_Destroy(void *pMS){  MEDIA_STREAM *pStream = (MEDIA_STREAM*)pMS;  switch (pStream->eType) {  case PROTOCOL_MEDIA_AUDIO:    MediaStreamDestroyAudInstance(pStream->pTx);    MediaStreamDestroyAudInstance(pStream->pRx);    pStream->pTx = NULL;    pStream->pRx = NULL;    break;#ifdef MEDIASTREAM_T38_SUPPORT  case PROTOCOL_MEDIA_DATA:    ASSERT(pStream->pT38);    close(pStream->pT38->nSocket);    AudioStreamDestroy(pStream->pT38->hTxStream);    AudioStreamDestroy(pStream->pT38->hRxStream);    break;#endif  default:    break;  }  free(pStream);}voidMediaStreamDestroy(H_MEDIA_STREAM pStream){  H_MEDIA_STREAM hStream;  MS_LOCK();  MS_LOG("MediaStreamDestroy() %lx, total number %ld\n",          pStream->dwId, DLLIST_count(g_pdllStream));    ProtocolReleaseResource(pStream->dwId, PROTOCOL_TXRX_TXRX);  DLLIST_head(g_pdllStream);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91国产精品成人| 欧美肥大bbwbbw高潮| 欧美无人高清视频在线观看| 日韩午夜精品视频| 亚洲色图视频网站| 国产美女精品在线| 日韩一区二区三区精品视频 | 久久免费国产精品| 欧美一区二区三区播放老司机| 亚洲午夜久久久久久久久电影网 | 欧美无砖砖区免费| 久久99国产精品久久99| 中文字幕乱码日本亚洲一区二区| 久久久国产综合精品女国产盗摄| 午夜激情久久久| 99热在这里有精品免费| 国产三级一区二区| 日韩电影一区二区三区四区| 一本大道久久精品懂色aⅴ| 久久久精品国产免大香伊| 欧美aⅴ一区二区三区视频| 欧美视频第二页| 一区二区三国产精华液| 91视视频在线观看入口直接观看www| 久久嫩草精品久久久精品一| 久久精品国产在热久久| 777亚洲妇女| 日韩中文字幕麻豆| 欧美一区二区三区婷婷月色| 午夜av区久久| 7777精品伊人久久久大香线蕉超级流畅 | 欧美三级电影一区| 一区二区在线看| 色哦色哦哦色天天综合| 亚洲色图制服诱惑| 在线一区二区视频| 亚洲第一激情av| 欧美日韩免费电影| 久久99久久久久久久久久久| 日韩欧美色综合| 国产一区二区在线看| 久久色中文字幕| 成人动漫在线一区| 曰韩精品一区二区| 欧美三级中文字幕在线观看| 午夜av一区二区| 精品欧美一区二区在线观看| 国产成人超碰人人澡人人澡| 国产精品色眯眯| 在线观看三级视频欧美| 三级久久三级久久久| 精品日韩av一区二区| 成人午夜私人影院| 亚洲一区在线播放| 日韩小视频在线观看专区| 国产乱人伦精品一区二区在线观看| 亚洲精品在线观看视频| 免费在线观看精品| 国产一区二区三区精品视频| 国产校园另类小说区| 男人的天堂亚洲一区| 99久久伊人网影院| 欧美一级黄色录像| 亚洲综合免费观看高清完整版在线 | 91久久精品国产91性色tv| 久久久影视传媒| aaa亚洲精品| 亚洲成人黄色影院| 久久先锋影音av| 色94色欧美sute亚洲线路一久 | 中文字幕电影一区| 欧美在线综合视频| 国产一区二区伦理| 亚洲午夜久久久久久久久电影网| 欧美大片在线观看一区| 色八戒一区二区三区| 美女视频免费一区| 一区二区国产视频| 久久亚洲精品小早川怜子| 欧美专区日韩专区| av在线不卡观看免费观看| 日本中文字幕一区| 亚洲最大成人网4388xx| 日本一区二区三区在线不卡| 91精品国产综合久久精品app| 粉嫩av一区二区三区在线播放 | 午夜天堂影视香蕉久久| 国产欧美一区二区三区沐欲| 在线观看一区二区精品视频| 成人av手机在线观看| 久久成人免费网站| 午夜在线电影亚洲一区| 亚洲欧美国产高清| 国产精品伦一区二区三级视频| 制服.丝袜.亚洲.中文.综合| 91黄色免费网站| 99免费精品在线观看| 成人午夜电影小说| 国内国产精品久久| 免费在线观看精品| 日韩在线一区二区三区| 亚洲综合男人的天堂| 亚洲欧洲制服丝袜| 亚洲欧美日韩国产综合| 国产精品久久久久久亚洲毛片| 久久影院视频免费| ww亚洲ww在线观看国产| 日韩美女视频一区二区在线观看| 欧美丰满少妇xxxxx高潮对白| 欧美少妇性性性| 欧美影视一区在线| 在线观看日韩毛片| 欧美网站一区二区| 欧美一区二区三区播放老司机| 亚洲最大成人网4388xx| 日韩av一区二区三区四区| 亚洲3atv精品一区二区三区| 国产精品每日更新| 欧美videos大乳护士334| 91视频一区二区| 麻豆精品视频在线观看免费| 亚洲视频一区二区在线| 久久影院电视剧免费观看| 日韩一区二区免费高清| 欧美伊人久久大香线蕉综合69| 丰满少妇久久久久久久| 91一区二区三区在线观看| 成人免费观看视频| 99久久免费视频.com| 色一区在线观看| 欧美乱妇23p| 日韩一区二区视频| 久久天堂av综合合色蜜桃网| 中文一区在线播放| 亚洲乱码国产乱码精品精的特点| 亚洲精品国产高清久久伦理二区| 亚洲国产一区二区a毛片| 美女看a上一区| 国产激情视频一区二区在线观看| av不卡一区二区三区| 欧美午夜宅男影院| 日韩欧美三级在线| 中文字幕一区二区三区不卡在线| 亚洲精品中文字幕乱码三区| 免费精品视频最新在线| 成人夜色视频网站在线观看| 一本色道久久加勒比精品| 91麻豆精品国产91久久久更新时间 | 中文字幕在线观看一区二区| 亚洲一卡二卡三卡四卡| 久久99精品久久久久婷婷| 不卡视频在线观看| 欧美日韩dvd在线观看| 国产日产精品一区| 日韩福利视频网| gogo大胆日本视频一区| 91精品国产免费久久综合| 国产精品丝袜91| 免费成人小视频| 色一区在线观看| 久久精品一区四区| 亚洲成人午夜电影| 国产成人一区二区精品非洲| 欧美日韩国产成人在线免费| 中文一区在线播放| 蜜臀91精品一区二区三区| 91啪亚洲精品| 国产亚洲精品aa| 视频一区二区中文字幕| youjizz国产精品| 久久久亚洲国产美女国产盗摄| 亚洲国产裸拍裸体视频在线观看乱了| 国产一区二区主播在线| 91精品国产色综合久久ai换脸 | 亚洲另类在线视频| 国产精品一区二区在线观看不卡| 国产日韩欧美精品一区| 国产精品综合久久| 韩国精品主播一区二区在线观看 | 欧美电影在线免费观看| 国产欧美一区二区三区在线老狼| 国产精品久久久久aaaa| 精品影院一区二区久久久| 久久久噜噜噜久久中文字幕色伊伊| 久久99精品一区二区三区三区| 欧美卡1卡2卡| 色婷婷亚洲婷婷| 91污在线观看| 欧美高清视频一二三区 | 国产成人在线观看免费网站| 日韩一区二区三区电影| 亚洲小说欧美激情另类| 91精彩视频在线观看| 亚洲日本欧美天堂| 91蝌蚪国产九色| 樱花影视一区二区| 色一情一伦一子一伦一区| 一区精品在线播放| 99在线精品视频| 亚洲美女在线一区|