]> git.sesse.net Git - casparcg/blob - core/mixer/audio/audio_util.h
git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches...
[casparcg] / core / mixer / audio / audio_util.h
1 #pragma once\r
2 \r
3 #include <vector>\r
4 \r
5 #include <stdint.h>\r
6 \r
7 #include <boost/range/iterator_range.hpp>\r
8 \r
9 namespace caspar { namespace core {\r
10 \r
11 static std::vector<int16_t> audio_32_to_16(const boost::iterator_range<int32_t*>& input)\r
12 {       \r
13         std::vector<int16_t> audio16(input.size());\r
14         auto audio32_ptr = reinterpret_cast<const uint32_t*>(input.begin());\r
15         auto audio16_ptr = reinterpret_cast<uint32_t*>(audio16.data());\r
16         auto size                = input.size();\r
17         for(int n = 0; n < size; ++n)           \r
18                 audio16_ptr[n] = (audio32_ptr[n*2+1] & 0xffff0000) | ((audio32_ptr[n*2+0] >> 16) & 0x0000ffff); \r
19         return audio16;\r
20 }\r
21 \r
22 }}