Mercurial > audlegacy-plugins
comparison src/console/Dual_Resampler.h @ 12:3da1b8942b8b trunk
[svn] - remove src/Input src/Output src/Effect src/General src/Visualization src/Container
author | nenolod |
---|---|
date | Mon, 18 Sep 2006 03:14:20 -0700 |
parents | src/Input/console/Dual_Resampler.h@13389e613d67 |
children | fb513e10174e |
comparison
equal
deleted
inserted
replaced
11:cff1d04026ae | 12:3da1b8942b8b |
---|---|
1 | |
2 // Combination of Fir_Resampler and Blip_Buffer mixing. Used by Sega FM emulators. | |
3 | |
4 // Game_Music_Emu 0.3.0 | |
5 | |
6 #ifndef DUAL_RESAMPLER_H | |
7 #define DUAL_RESAMPLER_H | |
8 | |
9 #include "Fir_Resampler.h" | |
10 #include "Blip_Buffer.h" | |
11 | |
12 class Dual_Resampler { | |
13 public: | |
14 Dual_Resampler(); | |
15 virtual ~Dual_Resampler(); | |
16 | |
17 typedef short sample_t; | |
18 | |
19 double setup( double oversample, double rolloff, double gain ); | |
20 blargg_err_t resize( int pairs ); | |
21 void clear(); | |
22 | |
23 void play( long count, sample_t* out, Blip_Buffer& ); | |
24 | |
25 protected: | |
26 virtual int play_frame( blip_time_t, int pcm_count, sample_t* pcm_out ) = 0; | |
27 private: | |
28 | |
29 blargg_vector<sample_t> sample_buf; | |
30 int oversamples_per_frame; | |
31 int buf_pos; | |
32 Fir_Resampler<12> resampler; | |
33 void mix_samples( Blip_Buffer&, sample_t* ); | |
34 void play_frame_( Blip_Buffer&, sample_t* ); | |
35 }; | |
36 | |
37 inline double Dual_Resampler::setup( double oversample, double rolloff, double gain ) | |
38 { | |
39 return resampler.time_ratio( oversample, rolloff, gain * 0.5 ); | |
40 } | |
41 | |
42 inline void Dual_Resampler::clear() | |
43 { | |
44 buf_pos = sample_buf.size(); | |
45 resampler.clear(); | |
46 } | |
47 | |
48 #endif | |
49 |