]> git.sesse.net Git - casparcg/blob - core/mixer/audio/audio_mixer.h
git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches...
[casparcg] / core / mixer / audio / audio_mixer.h
1 #pragma once\r
2 \r
3 #include <tbb/spin_mutex.h>\r
4 \r
5 namespace caspar { namespace core {\r
6 \r
7 class audio_transform\r
8 {\r
9 public:\r
10         audio_transform();\r
11 \r
12         void set_gain(double value);\r
13         double get_gain() const;\r
14 \r
15         audio_transform& operator*=(const audio_transform &other);\r
16         const audio_transform operator*(const audio_transform &other) const;\r
17 private:\r
18         double gain_;\r
19         mutable tbb::spin_mutex mutex_;\r
20 };\r
21 \r
22 class audio_mixer\r
23 {\r
24 public:\r
25         audio_mixer();\r
26 \r
27         void begin(const audio_transform& transform);\r
28         void process(const std::vector<short>& audio_data);\r
29         void end();\r
30         \r
31         std::vector<short> begin_pass();\r
32         void end_pass();\r
33 \r
34 private:\r
35         struct implementation;\r
36         std::shared_ptr<implementation> impl_;\r
37 };\r
38 \r
39 }}