⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dspaudio.cpp

📁 KphoneSI (kpsi) is a SIP (Session Initiation Protocol) user agent for Linux, with which you can in
💻 CPP
字号:
#include <stdio.h>#include <assert.h>#include <unistd.h>#include "../config.h"#include "audiobuffer.h"#include "dspout.h"#include "dspoutrtp.h"#include "dspaudio.h"DspAudio::DspAudio( DspOut *in, DspOut *out )	: input( in ), output( out ){	broken = false;	cancel = false;	copybuffer.resize( out->getBuffer().getSize() );	newTone = 0;	currentTone = 0;	input->getBuffer().resize( 0 );	dtmfSamples = 0;#ifndef QT_THREAD_SUPPORT	timer = 0;#endif}DspAudio::~DspAudio( void ){	if( input )  delete input;		if( output ) delete output;#ifndef QT_THREAD_SUPPORT	if( timer ) delete timer;#endif}#ifdef QT_THREAD_SUPPORTvoid DspAudio::run( void ){	for(;;) {		if( isCanceled() ) break;		timerTick();		usleep( 1 );	}#ifdef QTHREAD_TERMINATE	terminate();  // use this function only if absolutely necessary. (e.g. Redhat9)#else	QThread::exit();#endif}#endifvoid DspAudio::startTone(char code){	newTone = code;}void DspAudio::stopTone(void){	newTone = 0;}bool DspAudio::generateDTMF(short* buffer, size_t n){	if (!buffer) return false;	if (currentTone != 0) {		// Currently generating a DTMF tone		if (currentTone == newTone) {			// Continue generating the same tone			dtmf.getNextSamples(buffer, n);			return true;		} else if (newTone != 0) {			// New tone requested			dtmf.getSamples(buffer, n, newTone);			currentTone = newTone;			return true;		} else {			// Stop requested			currentTone = newTone;			return false;		}	} else {		// Not generating any DTMF tone		if (newTone) {			// Requested to generate a DTMF tone			dtmf.getSamples(buffer, n, newTone);			currentTone = newTone;			return true;		}		return false;	}}void DspAudio::setCodec( const codecType newCodec, int newCodecNum ){	((DspOutRtp *)input)->setCodec( newCodec, newCodecNum );}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -