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

📄 taudiofilterheadphone.h.svn-base

📁 ffshow源码
💻 SVN-BASE
字号:
#ifndef _TAUDIOFILTERHEADPHONE_H_#define _TAUDIOFILTERHEADPHONE_H_#include "TaudioFilter.h"#include "TsampleFormat.h"struct TmixerSettings;DECLARE_FILTER(TaudioFilterHeadphone,public,TaudioFilter)private: TsampleFormat oldfmt;int olddim; Tbuffer buf; typedef uint8_t byte_t; struct atomic_operation_t  {   int i_source_channel_offset;   int i_dest_channel_offset;   unsigned int i_delay;/* in sample unit */   double d_amplitude_factor;  }; struct aout_filter_sys_t  {  private:   void ComputeChannelOperations (unsigned int i_rate , unsigned int i_next_atomic_operation                                  , int i_source_channel_offset , double d_x , double d_z                                  , double d_channel_amplitude_factor );  public:   size_t i_overflow_buffer_size;/* in bytes */   byte_t * p_overflow_buffer;   unsigned int i_nb_atomic_operations;   atomic_operation_t * p_atomic_operations;   int Init(const TsampleFormat &fmt,const TmixerSettings *cfg);  } *p_sys; bool inited; protected: virtual int getSupportedFormats(const TfilterSettingsAudio *cfg,bool *honourPreferred) const {return TsampleFormat::SF_FLOAT32;}public: TaudioFilterHeadphone(IffdshowBase *Ideci,Tfilters *Iparent); virtual bool getOutputFmt(TsampleFormat &fmt,const TfilterSettingsAudio *cfg); virtual HRESULT process(TfilterQueue::iterator it,TsampleFormat &fmt,void *samples,size_t numsamples,const TfilterSettingsAudio *cfg0); virtual void done(void); virtual void onSeek(void);};DECLARE_FILTER(TaudioFilterHeadphone2,public,TaudioFilter)private: TsampleFormat oldfmt; int indexes[6]; float in[6]; Tbuffer buf; struct af_hrtf_s   {  public:   af_hrtf_s(const TsampleFormat &fmt);   ~af_hrtf_s();   void update_ch(const float *in, const int k);      /* Lengths */   int dlbuflen, hrflen;   unsigned int basslen;   /* L, C, R, Ls, Rs channels */   std::vector<float> lf,rf,lr,rr,cf,cr;   const float *cf_ir, *af_ir, *of_ir, *ar_ir, *or_ir, *cr_ir;   int cf_o, af_o, of_o, ar_o, or_o, cr_o;   /* Bass */   std::vector<float> ba_l,ba_r;   float *ba_ir;   /* Cyclic position on the ring buffer */   int cyc_pos;  } *s; static float passive_lock(float x); static float conv(const int nx, const int nk, const float *sx, const float *sk,const int offset);   static const int DELAYBUFLEN=1024;	/* Length of the delay buffer */ static const int HRTFFILTLEN=64;	/* HRTF filter length */ static const int BASSFILTFREQ=180;	/* Bass compensation filter cut (Hz) */ static const int BASSFILTLEN=193;	/* Bass compensation filter length */ static const float BASSGAIN;       	/* Bass compensation gain */ static const float BASSCROSS;    	/* Bass cross talk */  static const float IRTHRESH;	/* Impulse response pruning thresh. */  static const float M17_0DB; static const float M9_03DB; static const float M6_99DB; static const float M4_77DB; static const float M3_01DB; static const float M1_76DB;  static const int CFECHODELAY=360;	/* Center front echo delay (samples) */  static const float STEXPAND2;	/* Stereo expansion / 2 */  static const float cf_filt[128],af_filt[128],of_filt[128],ar_filt[128],or_filt[128],cr_filt[128];  static int pulse_detect(const float *sx);protected: virtual int getSupportedFormats(const TfilterSettingsAudio *cfg,bool *honourPreferred) const {return TsampleFormat::SF_FLOAT32;}public: TaudioFilterHeadphone2(IffdshowBase *Ideci,Tfilters *Iparent); virtual bool getOutputFmt(TsampleFormat &fmt,const TfilterSettingsAudio *cfg); virtual HRESULT process(TfilterQueue::iterator it,TsampleFormat &fmt,void *samples,size_t numsamples,const TfilterSettingsAudio *cfg0); virtual void done(void);};#endif

⌨️ 快捷键说明

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