1 #ifndef _resampler__hpp__included__
2 #define _resampler__hpp__included__
4 #include "digital-filter.hpp"
5 #include "newpacket.hpp"
8 uint64_t next_sample_time(uint64_t time
, uint32_t rate
);
13 virtual sample_number_t
nextsample() = 0;
14 virtual void sendpacket(struct packet
& p
) = 0;
17 struct resampler_pcm
: public resampler
19 resampler_pcm(uint32_t rate
);
20 sample_number_t
nextsample();
21 void sendpacket(struct packet
& p
);
25 uint64_t last_read_time
;
26 uint64_t last_write_time
;
27 npair
<int64_t> accumulator
;
28 npair
<short> current_levels
;
31 struct resampler_fm
: public resampler
33 resampler_fm(uint32_t rate
);
34 sample_number_t
nextsample();
35 void sendpacket(struct packet
& p
);
42 packet_demux(mixer
& mix
, uint32_t rate
);
44 sample_number_t
nextsample();
45 void sendpacket(struct packet
& p
);
46 void sendoption(const std::string
& option
);
48 void do_volume_change(struct packet
& p
);
51 std::map
<uint32_t, resampler
*> resamplers
;
52 composite_filter
* output_filter
;
53 std::map
<std::string
, composite_filter
*> input_filters
;
56 void print_audio_resampler_help(const std::string
& prefix
);
57 void process_audio_resampler_options(packet_demux
& d
, const std::string
& prefix
, int argc
, char** argv
);