1 #include "audio_content.h"
2 #include "dcpomatic_time.h"
3 #include <boost/noncopyable.hpp>
4 #include <boost/shared_ptr.hpp>
5 #include <boost/weak_ptr.hpp>
15 class ResamplerManager
18 ResamplerManager (std::weak_ptr<const Film> film)
22 ResamplerManager (ResamplerManager const&) = delete;
23 ResamplerManager& operator= (ResamplerManager const&) = delete;
25 void add (dcpomatic::DCPTime start, dcpomatic::DCPTime end, std::shared_ptr<AudioContent> content, std::shared_ptr<AudioDecoder> decoder);
26 std::shared_ptr<Resampler> get (AudioDecoder* decoder, AudioStreamPtr stream, bool fast);
29 friend struct resampler_manager_setup_test;
34 Group (dcpomatic::DCPTime start_, dcpomatic::DCPTime end_, std::shared_ptr<AudioContent> content, std::shared_ptr<AudioDecoder> decoder)
38 contents.push_back (content);
39 decoders.push_back (decoder);
40 resamplers.resize (content->streams().size());
43 dcpomatic::DCPTime start;
44 dcpomatic::DCPTime end;
45 std::vector<std::shared_ptr<AudioContent>> contents;
46 std::vector<std::shared_ptr<AudioDecoder>> decoders;
47 std::vector<std::shared_ptr<Resampler>> resamplers;
50 bool can_share (Group const& a, Group const& b) const;
52 bool coalesce_pass ();
54 std::weak_ptr<const Film> _film;
55 std::vector<Group> _groups;