+#pragma once\r
+\r
+#include <vector>\r
+\r
+#include <stdint.h>\r
+\r
+#include <boost/range/iterator_range.hpp>\r
+\r
+namespace caspar { namespace core {\r
+\r
+static std::vector<int16_t> audio_32_to_16(const boost::iterator_range<int32_t*>& input)\r
+{ \r
+ std::vector<int16_t> audio16(input.size());\r
+ auto audio32_ptr = reinterpret_cast<const uint32_t*>(input.begin());\r
+ auto audio16_ptr = reinterpret_cast<uint32_t*>(audio16.data());\r
+ auto size = input.size();\r
+ for(int n = 0; n < size; ++n) \r
+ audio16_ptr[n] = (audio32_ptr[n*2+1] & 0xffff0000) | ((audio32_ptr[n*2+0] >> 16) & 0x0000ffff); \r
+ return audio16;\r
+}\r
+\r
+}}
\ No newline at end of file