7 #include <boost/range/iterator_range.hpp>
\r
9 namespace caspar { namespace core {
\r
11 static std::vector<int16_t> audio_32_to_16(const boost::iterator_range<int32_t*>& input)
\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