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

📄 wvout.cpp

📁 Mobile STK for Symbian OS V0.1
💻 CPP
字号:
/***************************************************//*! \class WvOut    \brief STK audio output abstract base class.    This class provides common functionality for a variety of audio    data output subclasses.    WvOut supports multi-channel data.  It is important to distinguish    the tick() methods, which output single samples to all channels in    a sample frame, from the tickFrame() methods, which take a pointer    or reference to multi-channel sample frame data.    Both interleaved and non-interleaved data is supported via the use    of StkFrames objects.    Currently, WvOut is non-interpolating and the output rate is    always Stk::sampleRate().    by Perry R. Cook and Gary P. Scavone, 1995 - 2005.*//***************************************************/#include "WvOut.h"//#if !defined(SYMBIAN)WvOut :: WvOut()  : frameCounter_(0), clipping_(false){}WvOut :: ~WvOut(){}unsigned long WvOut :: getFrameCount( void ) const{  return frameCounter_;}StkFloat WvOut :: getTime( void ) const{  return (StkFloat) frameCounter_ / Stk::sampleRate();}StkFloat& WvOut :: clipTest( StkFloat& sample ){  bool clip = false;  if ( sample > 1.0 ) {    sample = 1.0;    clip = true;  }  else if ( sample < -1.0 ) {    sample = -1.0;    clip = true;  }  if ( clip == true && clipping_ == false ) {    // First occurrence of clipping since instantiation or reset.    clipping_ = true;#if !defined(SYMBIAN)    errorString_ << "WvOut: data value(s) outside +-1.0 detected ... clamping at outer bound!";    handleError( StkError::WARNING );#endif  }  return sample;}void WvOut :: tick( const StkFloat sample ){  this->computeSample( sample );}void WvOut :: tick( const StkFrames& frames, unsigned int channel ){  if ( channel >= frames.channels() ) {#if !defined(SYMBIAN)    errorString_ << "WvOut::tick(): channel argument (" << channel << ") is incompatible with StkFrames argument!";    handleError( StkError::FUNCTION_ARGUMENT );#endif  }  if ( frames.channels() == 1 ) {    for ( unsigned int i=0; i<frames.frames(); i++ )      computeSample( frames[i] );  }  else if ( frames.interleaved() ) {    unsigned int hop = frames.channels();    unsigned int index = channel;    for ( unsigned int i=0; i<frames.frames(); i++ ) {      computeSample( frames[index] );      index += hop;    }  }  else {    unsigned int iStart = channel * frames.frames();    for ( unsigned int i=0; i<frames.frames(); i++ )      computeSample( frames[iStart++] );  }}void WvOut :: tickFrame( const StkFrames& frames ){  this->computeFrames( frames );}//#endif // SYMBIAN

⌨️ 快捷键说明

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