150b2efef6ecb51a9d5818345c58533c5d236ec29andrew@webrtc.org/* 250b2efef6ecb51a9d5818345c58533c5d236ec29andrew@webrtc.org * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. 350b2efef6ecb51a9d5818345c58533c5d236ec29andrew@webrtc.org * 450b2efef6ecb51a9d5818345c58533c5d236ec29andrew@webrtc.org * Use of this source code is governed by a BSD-style license 550b2efef6ecb51a9d5818345c58533c5d236ec29andrew@webrtc.org * that can be found in the LICENSE file in the root of the source 650b2efef6ecb51a9d5818345c58533c5d236ec29andrew@webrtc.org * tree. An additional intellectual property rights grant can be found 750b2efef6ecb51a9d5818345c58533c5d236ec29andrew@webrtc.org * in the file PATENTS. All contributing project authors may 850b2efef6ecb51a9d5818345c58533c5d236ec29andrew@webrtc.org * be found in the AUTHORS file in the root of the source tree. 950b2efef6ecb51a9d5818345c58533c5d236ec29andrew@webrtc.org */ 1050b2efef6ecb51a9d5818345c58533c5d236ec29andrew@webrtc.org 1150b2efef6ecb51a9d5818345c58533c5d236ec29andrew@webrtc.org#include "webrtc/common_audio/include/audio_util.h" 1250b2efef6ecb51a9d5818345c58533c5d236ec29andrew@webrtc.org 1350b2efef6ecb51a9d5818345c58533c5d236ec29andrew@webrtc.org#include "webrtc/typedefs.h" 1450b2efef6ecb51a9d5818345c58533c5d236ec29andrew@webrtc.org 1550b2efef6ecb51a9d5818345c58533c5d236ec29andrew@webrtc.orgnamespace webrtc { 1650b2efef6ecb51a9d5818345c58533c5d236ec29andrew@webrtc.org 174fc4addc815379c6cc1d04f4853a528390fe09baandrew@webrtc.orgvoid FloatToS16(const float* src, size_t size, int16_t* dest) { 18efb81d8d1f6510ff10ca34a2ee243a7ab5fbd2cdkwiberg@webrtc.org for (size_t i = 0; i < size; ++i) 194fc4addc815379c6cc1d04f4853a528390fe09baandrew@webrtc.org dest[i] = FloatToS16(src[i]); 2050b2efef6ecb51a9d5818345c58533c5d236ec29andrew@webrtc.org} 2150b2efef6ecb51a9d5818345c58533c5d236ec29andrew@webrtc.org 224fc4addc815379c6cc1d04f4853a528390fe09baandrew@webrtc.orgvoid S16ToFloat(const int16_t* src, size_t size, float* dest) { 23efb81d8d1f6510ff10ca34a2ee243a7ab5fbd2cdkwiberg@webrtc.org for (size_t i = 0; i < size; ++i) 244fc4addc815379c6cc1d04f4853a528390fe09baandrew@webrtc.org dest[i] = S16ToFloat(src[i]); 2517e40641b30559602e26382e500bd9708bad37e3andrew@webrtc.org} 2617e40641b30559602e26382e500bd9708bad37e3andrew@webrtc.org 274fc4addc815379c6cc1d04f4853a528390fe09baandrew@webrtc.orgvoid FloatS16ToS16(const float* src, size_t size, int16_t* dest) { 28efb81d8d1f6510ff10ca34a2ee243a7ab5fbd2cdkwiberg@webrtc.org for (size_t i = 0; i < size; ++i) 294fc4addc815379c6cc1d04f4853a528390fe09baandrew@webrtc.org dest[i] = FloatS16ToS16(src[i]); 304fc4addc815379c6cc1d04f4853a528390fe09baandrew@webrtc.org} 314fc4addc815379c6cc1d04f4853a528390fe09baandrew@webrtc.org 324fc4addc815379c6cc1d04f4853a528390fe09baandrew@webrtc.orgvoid FloatToFloatS16(const float* src, size_t size, float* dest) { 334fc4addc815379c6cc1d04f4853a528390fe09baandrew@webrtc.org for (size_t i = 0; i < size; ++i) 344fc4addc815379c6cc1d04f4853a528390fe09baandrew@webrtc.org dest[i] = FloatToFloatS16(src[i]); 354fc4addc815379c6cc1d04f4853a528390fe09baandrew@webrtc.org} 364fc4addc815379c6cc1d04f4853a528390fe09baandrew@webrtc.org 374fc4addc815379c6cc1d04f4853a528390fe09baandrew@webrtc.orgvoid FloatS16ToFloat(const float* src, size_t size, float* dest) { 384fc4addc815379c6cc1d04f4853a528390fe09baandrew@webrtc.org for (size_t i = 0; i < size; ++i) 394fc4addc815379c6cc1d04f4853a528390fe09baandrew@webrtc.org dest[i] = FloatS16ToFloat(src[i]); 4050b2efef6ecb51a9d5818345c58533c5d236ec29andrew@webrtc.org} 4150b2efef6ecb51a9d5818345c58533c5d236ec29andrew@webrtc.org 4286c6d33aec684d08189d498912e47cbc17c4d2dbMichael Graczyktemplate <> 4386c6d33aec684d08189d498912e47cbc17c4d2dbMichael Graczykvoid DownmixInterleavedToMono<int16_t>(const int16_t* interleaved, 44dce40cf804019a9898b6ab8d8262466b697c56e0Peter Kasting size_t num_frames, 4586c6d33aec684d08189d498912e47cbc17c4d2dbMichael Graczyk int num_channels, 4686c6d33aec684d08189d498912e47cbc17c4d2dbMichael Graczyk int16_t* deinterleaved) { 477a1c24fce5d8cfaa56d548fe72b496a8c6e4e99eandrew DownmixInterleavedToMonoImpl<int16_t, int32_t>(interleaved, num_frames, 487a1c24fce5d8cfaa56d548fe72b496a8c6e4e99eandrew num_channels, deinterleaved); 4986c6d33aec684d08189d498912e47cbc17c4d2dbMichael Graczyk} 5086c6d33aec684d08189d498912e47cbc17c4d2dbMichael Graczyk 5150b2efef6ecb51a9d5818345c58533c5d236ec29andrew@webrtc.org} // namespace webrtc 52