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

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

?? dspinterface.cpp

?? 基于h323協(xié)議的軟phone
?? CPP
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/***************************************************************************
*
*  Module:         DSPInterface.c
*
*  Description:    DSP Interface routines
*
*  Author:         Craig L. Mahananey
*
*  Copyright 1999, Lucent Technologies, Inc., All rights reserved
*
*
*  Change Log:
*
*  Date        By      Description
*  ========    ===     ====================================================
*  11/11/99    CLM     Created
*  09/01/2000  RFG     When a tone is played (not counting DTMF tones), the
*                      input source is forced to be the handset, even if the
*                      speakerphone mode is on.  This is required so tones
*                      do not pass through the AEC.  When the tone is stopped
*                      the input source is switched back to whatever it should be.
*  09/11/2000  RFG     Removed dead code that will not be used with the multi-port
*                      DSP API
*  11/06/2000  mwb     Added INTERFACE_TERSE for quieter output
*
***************************************************************************/



/*
 * Application layer include files
 */

#include "DSPInterface.h"
// #include "NetworkInterface.h"
// #include "TradeShowApp.h"

/*
 * Driver layer include files
 */
#include <vxWorks.h>
#include <logLib.h>
#include <Platform.h>
#include <dspManager.h>
#include "../config/ipt_arm/ipt_arm.h"


/*
 * Standard include files
 */

#include <string.h>
#include <stdio.h>

extern "C"
{
unsigned long sysGetCPUVer(void);
}

/*
 * File-scope variables
 */

static int              volume        = 0;
static int              voice_enabled = FALSE;
int                     tone_enabled  = FALSE;
static int              input_source  = DSP_INPUT_HANDSET;
static int              output_dest   = DSP_AUDIO_TO_HANDSET;
static int				backup_input_source = DSP_INPUT_HANDSET;
static CdspManager      *dspMgr;
int                     muted = FALSE;
/* speaker-handset-tone-switching
 * Stores the current active tone*/
static tone_type cur_tone = null_tone;

/* Type of ring tone */
static unsigned short ring_type = 0;

/* Volume of ring tone */
static unsigned short ring_volume = 10;

//chenguoyin
extern int on_speakerphone;
extern int isPlayRing;
/*
 * External variables
 */
extern tone_type tone_playing;
extern unsigned short gDSPhstvolumeMap[];
extern unsigned short gDSPspkvolumeMap[];

int cadenceOn;

#ifdef CHECKDSP
extern "C"
{
void checkDSP(int sid);
}
#endif

#ifdef PPA
/* PPA Port Numer */
int port0CadOn = 0;
int port1CadOn = 0;
int port2CadOn = 0;
int port3CadOn = 0;
unsigned short  ppaChannelNum = 0x0000;
static void ppaCandenceSwitch (unsigned short ppaPortNumber, unsigned short cadenceEnable);
#endif

/***************************************************************************
 *
 *  InitDSP()
 *
 *  Arguments
 *      Input: Nothing
 *
 *  Returns:   Nothing
 *
 *  Description:
 *  1. Create the dsp managers
 *
 **************************************************************************/

void InitDSP()
{
    /* set dsp Clock */
    setDSPClock();

    CError::CreateErrorObject();

    dspMgr = CdspManager::Instance();

    if( dspMgr == NULLPOINTER ){
        fprintf( stderr, "InitDSP: Failure creating DSP manager.\n" );
        return;
    }
}

/***************************************************************************
 *
 *  StartVoice()
 *
 *  Arguments
 *      Input: Nothing
 *
 *  Returns:   Nothing
 *
 *  Description:
 *  1. Set voice_enabled = TRUE
 *
 **************************************************************************/

void StartVoice()
{
    voice_enabled = TRUE;
}
unsigned int isVoiceStart()
{
	return voice_enabled;
}
/***************************************************************************
 *
 *  StopVoice()
 *
 *  Arguments
 *      Input: Nothing
 *
 *  Returns:   Nothing
 *
 *  Description:
 *
 **************************************************************************/

void StopVoice()
{
    voice_enabled = FALSE;
}

/***************************************************************************
 *
 *  PlayTone( tone_type tone )
 *
 *  Arguments
 *      Input: tone to play
 *
 *  Returns:   Nothing
 *
 *  Description:
 *  1. Send control message to DSP to play requested tone
 *
 **************************************************************************/

void PlayTone( tone_type tone )
{
    ushort dsp_tone;
    ushort dsp_audio_out;
		
    ushort gst1 = 0x1c97;
    ushort gst2 = 0x1c97;
	
	/*
    ushort gst1 = 0x8000;
    ushort gst2 = 0x8000;
    */
    ushort gnet = 0x0000;
    if(tone == ringback_tone)
    {
   	cur_tone = tone;
    	return;
   }
	
    
    printf("PlayTone(%d)\n",tone);	
  
#ifdef CHECKDSP
checkDSP(-1);
#endif

    cadenceOn = 1;
    switch( tone ){ 
        case dial_tone:
            dsp_tone = DSP_TONE_DIAL;
            break;
        case busy_tone:
            dsp_tone = DSP_TONE_BUSY;
            break;
        case ringback_tone:
            /* @@@CLM: What tone goes here??? */
            dsp_tone = DSP_TONE_ALERT_RING;
            break;
        case receiver_off_hook_tone:
            /* @@@CLM: What tone goes here??? */
            dsp_tone = DSP_TONE_COVERAGE;
            break;
        case congestion_tone:
            /* @@@CLM: What tone goes here??? */
            /*WAS: dsp_tone = DSP_TONE_COVERAGE; GTC */
            /* TRY THIS ONE - GTC: */
            dsp_tone = DSP_TONE_REORDER;
            break;
        default:
#ifndef INTERFACE_TERSE
            fprintf( stderr, "PlayTone: Bad tone.\n" );
#endif /* INTERFACE_TERSE */
            return;
            break;
    }
#ifdef PPA
	ppaCandenceSwitch (ppaChannelNum, 1);
	dspMgr->ppaPlayTone( dsp_tone, ppaChannelNum, gst1, gnet);
#else
    if( (input_source == DSP_INPUT_HANDSET) || (input_source == DSP_INPUT_MUTE) ){
		input_source = DSP_INPUT_HANDSET;
        dsp_audio_out = DSP_AUDIO_TO_HANDSET;
		dspMgr->setAudioOutput(DSP_AUDIO_TO_HANDSET);
        dspMgr->setAudioSource(DSP_INPUT_HANDSET);
    }
#ifdef SECONDARY_AUDIO_ARM
	else if( (input_source == DSP_INPUT_SIO) || (input_source == DSP_INPUT_MUTE) ){
		input_source = DSP_INPUT_SIO;
        dsp_audio_out = DSP_AUDIO_TO_SIO;
		dspMgr->setAudioOutput(DSP_AUDIO_TO_SIO);
        dspMgr->setAudioSource(DSP_INPUT_SIO);
    }
#endif
    else {
		/* If we play a tone while the input source is the speakerphone mic., the tone
		   will not sound correct since it will be going through the AEC.  We need to set
		   the input source to be the handset if we are in speakerphone mode */
       dspMgr->setAudioSource(DSP_INPUT_HANDSET);
       dsp_audio_out = DSP_AUDIO_TO_SPEAKERPHONE;
    }

	/* currently we are using default gain value, to select value refer to */
	/* dsptabel.h, right now we have no mechanism (button)to increase gain */
    dspMgr->playTone( dsp_tone, DSP_TONE_TO_STATION, dsp_audio_out, gst1, gst2, gnet);
    /* Store the current active tone.
     * speaker-handset-tone-switching */
#endif /* #ifdef PPA */
    cur_tone = tone;
    tone_enabled = TRUE;
}


//chenguoyin
void firstSetAudio( void )
{
    
   dspMgr->setAudioOutput(DSP_AUDIO_TO_HANDSET);
        
		dspMgr->setAudioDestination( DSP_AUDIO_TO_HANDSET );
        dspMgr->setAudioSource( DSP_INPUT_HANDSET );
		return;
 
}





/***************************************************************************
 *
 *  StopTone()
 *
 *  Arguments
 *      Input: Nothing
 *
 *  Returns:   Nothing
 *
 *  Description:
 *  1. Send control message to DSP to stop tone
 *
 **************************************************************************/

void StopTone()
{
	int error;
	ushort gst1 = 0x1c97;
	ushort gst2 = 0x1c97;
	ushort gnet = 0x0000;
       ushort dsp_audio_out;
	if(cur_tone == ringback_tone)
	{	
		cur_tone = null_tone;
		return;
	}
#ifdef CHECKDSP
checkDSP(-1);
#endif

#ifdef PPA
    dspMgr->ppaPlayTone(DSP_TONE_OFF, ppaChannelNum,gst1,gnet);
	ppaCandenceSwitch (ppaChannelNum, 0);
#else
    if( ((input_source == DSP_INPUT_HANDSET) || (input_source == DSP_INPUT_MUTE)) && (muted==FALSE) ){
        dsp_audio_out = DSP_AUDIO_TO_HANDSET;
		input_source = DSP_INPUT_HANDSET;
        dspMgr->setAudioSource(DSP_INPUT_HANDSET);
    }
    else if( (input_source == DSP_INPUT_SPEAKERPHONE) && (muted==FALSE) ) {
		/* Set the audio source back to the speakerphone */
        dspMgr->setAudioSource( DSP_INPUT_SPEAKERPHONE );
        dsp_audio_out = DSP_AUDIO_TO_SPEAKERPHONE;
    }
#ifdef SECONDARY_AUDIO_ARM
	else if( ((input_source == DSP_INPUT_SIO) || (input_source == DSP_INPUT_MUTE)) && (muted==FALSE) ){
        dsp_audio_out = DSP_AUDIO_TO_SIO;
		input_source = DSP_INPUT_SIO;
        dspMgr->setAudioSource(DSP_INPUT_SIO);
    }
#endif

/*    error = dspMgr->playTone( DSP_TONE_OFF, DSP_TONE_TO_STATION, dsp_audio_out ); */
    error = dspMgr->playTone( DSP_TONE_OFF, DSP_TONE_TO_STATION, DSP_AUDIO_TO_MUTE, gst1, gst2, gnet);

    /* speaker-handset-tone-switching
     * reset the cur_tone when tone is stopped.*/
#endif /* #ifdef PPA */
    cur_tone = null_tone;
    tone_enabled = FALSE;
    tone_playing = null_tone;   /* added GTC - when stopping the tone, make sure it doesn't resume! */
    cadenceOn = 0;
}

/***************************************************************************
 *
 *  PlayDTMF( dtmf_tone_type tone )
 *
 *  Arguments
 *      Input: Nothing
 *
 *  Returns:   Nothing
 *
 *  Description:
 *  1. Send control message to DSP to stop tone
 *
 **************************************************************************/

void PlayDTMF( dtmf_tone_type tone )
{
    ushort  dsp_tone;
    ushort  dsp_tone_dir;
    ushort  dsp_audio_out;
	
    ushort gst1 = 0x1c97;
    ushort gst2 = 0x1c97;
    ushort gnet = 0x0000;
    
#ifdef CHECKDSP
checkDSP(-1);
#endif

    switch( tone ){
        case dtmf_0:
            dsp_tone = DSP_DTMF_0;
            break;
        case dtmf_1:
            dsp_tone = DSP_DTMF_1;
            break;
        case dtmf_2:
            dsp_tone = DSP_DTMF_2;
            break;
        case dtmf_3:
            dsp_tone = DSP_DTMF_3;
            break;
        case dtmf_4:
            dsp_tone = DSP_DTMF_4;
            break;
        case dtmf_5:
            dsp_tone = DSP_DTMF_5;
            break;
        case dtmf_6:
            dsp_tone = DSP_DTMF_6;
            break;
        case dtmf_7:
            dsp_tone = DSP_DTMF_7;
            break;
        case dtmf_8:
            dsp_tone = DSP_DTMF_8;
            break;
        case dtmf_9:
            dsp_tone = DSP_DTMF_9;
            break;
        case dtmf_star:
            dsp_tone = DSP_DTMF_STAR;
            break;
        case dtmf_hash:
            dsp_tone = DSP_DTMF_POUND;
            break;
        case dtmf_a:
            dsp_tone = DSP_DTMF_A;
            break;
        case dtmf_b:
            dsp_tone = DSP_DTMF_B;
            break;
        case dtmf_c:
            dsp_tone = DSP_DTMF_C;
            break;
        case dtmf_d:
            dsp_tone = DSP_DTMF_D;
            break;
        case dtmf_e:
            dsp_tone = DSP_DTMF_E;
            break;
        case dtmf_f:
            dsp_tone = DSP_DTMF_F;
            break;
        default:
#ifndef INTERFACE_TERSE
            printf(" PlayDTMF: Bad tone.\n" );
#endif /* INTERFACE_TERSE */
            return;
    }

    if( voice_enabled ){
        dsp_tone_dir = DSP_TONE_TO_BOTH;
/* slm: MR7049 remove bogus pragma
/* #pragma "Missing DSP_TONE_TO_BOTH in DSP API" */
    }
    else {
        dsp_tone_dir = DSP_TONE_TO_STATION;
    }

    if( (input_source == DSP_INPUT_HANDSET) || (input_source == DSP_INPUT_MUTE) ){
		input_source = DSP_INPUT_HANDSET;
        dsp_audio_out = DSP_AUDIO_TO_HANDSET;
    }
#ifdef SECONDARY_AUDIO_ARM
	else if ( (input_source == DSP_INPUT_SIO) || (input_source == DSP_INPUT_MUTE) ){
		input_source = DSP_INPUT_SIO;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区高清免费观看影视大全 | 欧洲国产伦久久久久久久| 色综合天天综合网国产成人综合天 | 91黄视频在线观看| 日韩精品一区在线观看| 亚洲伦理在线免费看| 精品一区二区国语对白| 在线观看亚洲一区| 国产精品毛片a∨一区二区三区| 日本中文字幕一区二区视频| 97久久人人超碰| 2023国产一二三区日本精品2022| 一区二区三区精品视频| 福利视频网站一区二区三区| 日韩欧美一区二区三区在线| 亚洲午夜日本在线观看| 99久久伊人网影院| 久久美女艺术照精彩视频福利播放| 亚洲一区二区精品久久av| 成人app下载| 久久久久久电影| 玖玖九九国产精品| 日韩色视频在线观看| 日韩一区精品字幕| 欧美另类变人与禽xxxxx| 亚洲精品国产无天堂网2021| 99精品国产热久久91蜜凸| 中文字幕免费不卡在线| 国产高清无密码一区二区三区| 日韩写真欧美这视频| 日韩av一区二区三区四区| 欧美日韩综合在线免费观看| 亚洲无线码一区二区三区| 色婷婷亚洲婷婷| 亚洲女同一区二区| 91国偷自产一区二区三区观看| 国产精品美女一区二区在线观看| 国产精品一区二区免费不卡| 国产亚洲精品aa午夜观看| 国产资源在线一区| 国产亚洲污的网站| 成人性视频免费网站| 国产精品久久久一本精品| 不卡区在线中文字幕| 亚洲欧洲性图库| 欧美在线观看视频在线| 亚洲线精品一区二区三区| 91麻豆精品国产自产在线| 美女www一区二区| 久久婷婷国产综合精品青草| 国产成人精品www牛牛影视| 欧美激情综合五月色丁香小说| 国产999精品久久| 亚洲人精品午夜| 欧美三级中文字幕在线观看| 日本不卡视频在线观看| 亚洲精品一线二线三线无人区| 国产精品91xxx| 亚洲精品v日韩精品| 日韩一区二区三区视频在线 | 狠狠色丁香婷婷综合久久片| 国产日韩欧美精品综合| 在线免费亚洲电影| 免费高清成人在线| 中文字幕中文乱码欧美一区二区| 欧美在线综合视频| 国内外成人在线视频| 日韩久久一区二区| 在线不卡免费欧美| 成人午夜av电影| 午夜av电影一区| 久久久久久久久岛国免费| 色婷婷国产精品| 久久99精品久久久久久动态图| 中文字幕高清不卡| 欧美日韩成人综合天天影院| 国产一区在线观看视频| 一区二区三区国产精华| 欧美成人在线直播| 日本韩国欧美一区二区三区| 九色porny丨国产精品| 亚洲精品国产一区二区精华液| 日韩一区二区免费在线观看| 91美女片黄在线| 国产精品一区专区| 午夜激情综合网| 1024成人网| 国产日产欧美一区| 91精品国产色综合久久| 91亚洲精品久久久蜜桃网站| 久久99在线观看| 亚洲成人免费在线观看| 国产精品天天看| 久久一夜天堂av一区二区三区| 欧美日韩一区国产| 色综合久久中文字幕| 国产成人午夜精品5599| 美日韩一区二区| 视频精品一区二区| 亚洲精品日日夜夜| 日韩一区欧美一区| 欧美激情一区二区三区四区| 精品免费一区二区三区| 91精品国产一区二区三区蜜臀| 日本高清不卡视频| 91免费看片在线观看| 波多野结衣在线一区| 国产不卡视频在线播放| 国精产品一区一区三区mba视频| 日韩高清不卡一区二区| 午夜精品福利在线| 日日摸夜夜添夜夜添国产精品| 亚洲欧美日本韩国| 亚洲精品亚洲人成人网| 亚洲人被黑人高潮完整版| 国产精品久久久久久户外露出 | 爽爽淫人综合网网站 | 国产欧美一区二区精品秋霞影院 | 蜜桃精品视频在线| 久久不见久久见中文字幕免费| 视频一区视频二区在线观看| 日韩二区三区在线观看| 日本免费在线视频不卡一不卡二| 亚洲成av人片观看| 日韩激情视频网站| 看电影不卡的网站| 国产精品一二三区在线| 顶级嫩模精品视频在线看| 不卡av在线免费观看| 91麻豆文化传媒在线观看| 色香蕉久久蜜桃| 欧美日韩国产大片| 精品少妇一区二区三区视频免付费 | 8v天堂国产在线一区二区| 这里是久久伊人| 久久久噜噜噜久久中文字幕色伊伊| 久久久天堂av| 亚洲精选视频在线| 日本亚洲天堂网| 国产在线视频一区二区三区| 国产馆精品极品| 91免费在线看| 欧美成人欧美edvon| 中文字幕欧美国产| 亚洲综合成人在线| 九色|91porny| 色狠狠一区二区三区香蕉| 3d成人h动漫网站入口| 久久久精品免费观看| 亚洲女与黑人做爰| 麻豆精品视频在线观看| 成人免费视频免费观看| 欧美三级日韩在线| 久久精品一区二区三区不卡| 依依成人综合视频| 国产老妇另类xxxxx| 欧洲一区二区av| wwwwww.欧美系列| 亚洲在线视频一区| 久久精品二区亚洲w码| 91色乱码一区二区三区| 欧美mv日韩mv国产网站app| 亚洲丝袜美腿综合| 韩国精品在线观看| 欧美日韩精品是欧美日韩精品| 亚洲精品一区二区三区香蕉| 一区二区三区在线视频播放| 国产在线精品国自产拍免费| 欧美性色欧美a在线播放| 久久精品亚洲精品国产欧美| 天天爽夜夜爽夜夜爽精品视频| 成人性生交大合| 精品国精品国产尤物美女| 亚洲国产成人va在线观看天堂| 国产高清精品在线| 日韩欧美国产成人一区二区| 一区二区三区中文字幕| 成人福利视频在线看| 精品国产一区二区亚洲人成毛片| 亚洲视频一区在线| 国产91丝袜在线播放| 精品欧美乱码久久久久久1区2区| 一级做a爱片久久| av一区二区三区| 国产欧美一区二区在线观看| 裸体在线国模精品偷拍| 欧美久久久久久蜜桃| 一区二区三区中文在线| 色综合久久久网| 国产精品国产馆在线真实露脸| 精品一区二区免费视频| 日韩欧美国产综合在线一区二区三区| 亚洲六月丁香色婷婷综合久久| 国产成人精品免费一区二区| 久久婷婷国产综合精品青草| 国产自产v一区二区三区c| 精品99一区二区| 韩国视频一区二区| 久久综合狠狠综合久久综合88| 久久99久久精品欧美|