1 #ifndef _resampler__hpp__included__
2 #define _resampler__hpp__included__
4 #include "digital-filter.hpp"
5 #include "newpacket.hpp"
7 uint64_t next_sample_time(uint64_t time
, uint32_t rate
);
12 virtual sample_number_t
nextsample() = 0;
13 virtual void sendpacket(struct packet
& p
) = 0;
16 struct resampler_pcm
: public resampler
18 resampler_pcm(uint32_t rate
);
19 sample_number_t
nextsample();
20 void sendpacket(struct packet
& p
);
24 uint64_t last_read_time
;
25 uint64_t last_write_time
;
26 npair
<int64_t> accumulator
;
27 npair
<short> current_levels
;
30 struct resampler_fm
: public resampler
32 resampler_fm(uint32_t rate
);
33 sample_number_t
nextsample();
34 void sendpacket(struct packet
& p
);
39 packet_demux(mixer
& mix
, uint32_t rate
);
41 sample_number_t
nextsample();
42 void sendpacket(struct packet
& p
);
43 void sendoption(const std::string
& option
);
45 void do_volume_change(struct packet
& p
);
48 std::map
<uint32_t, resampler
*> resamplers
;
49 composite_filter
* output_filter
;
50 std::map
<std::string
, composite_filter
*> input_filters
;
53 void print_audio_resampler_help(const std::string
& prefix
);
54 void process_audio_resampler_options(packet_demux
& d
, const std::string
& prefix
, int argc
, char** argv
);