xref: /aosp_15_r20/external/webrtc/common_audio/audio_util.cc (revision d9f758449e529ab9291ac668be2861e7a55c2422)
1*d9f75844SAndroid Build Coastguard Worker /*
2*d9f75844SAndroid Build Coastguard Worker  *  Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
3*d9f75844SAndroid Build Coastguard Worker  *
4*d9f75844SAndroid Build Coastguard Worker  *  Use of this source code is governed by a BSD-style license
5*d9f75844SAndroid Build Coastguard Worker  *  that can be found in the LICENSE file in the root of the source
6*d9f75844SAndroid Build Coastguard Worker  *  tree. An additional intellectual property rights grant can be found
7*d9f75844SAndroid Build Coastguard Worker  *  in the file PATENTS.  All contributing project authors may
8*d9f75844SAndroid Build Coastguard Worker  *  be found in the AUTHORS file in the root of the source tree.
9*d9f75844SAndroid Build Coastguard Worker  */
10*d9f75844SAndroid Build Coastguard Worker 
11*d9f75844SAndroid Build Coastguard Worker #include "common_audio/include/audio_util.h"
12*d9f75844SAndroid Build Coastguard Worker 
13*d9f75844SAndroid Build Coastguard Worker namespace webrtc {
14*d9f75844SAndroid Build Coastguard Worker 
FloatToS16(const float * src,size_t size,int16_t * dest)15*d9f75844SAndroid Build Coastguard Worker void FloatToS16(const float* src, size_t size, int16_t* dest) {
16*d9f75844SAndroid Build Coastguard Worker   for (size_t i = 0; i < size; ++i)
17*d9f75844SAndroid Build Coastguard Worker     dest[i] = FloatToS16(src[i]);
18*d9f75844SAndroid Build Coastguard Worker }
19*d9f75844SAndroid Build Coastguard Worker 
S16ToFloat(const int16_t * src,size_t size,float * dest)20*d9f75844SAndroid Build Coastguard Worker void S16ToFloat(const int16_t* src, size_t size, float* dest) {
21*d9f75844SAndroid Build Coastguard Worker   for (size_t i = 0; i < size; ++i)
22*d9f75844SAndroid Build Coastguard Worker     dest[i] = S16ToFloat(src[i]);
23*d9f75844SAndroid Build Coastguard Worker }
24*d9f75844SAndroid Build Coastguard Worker 
S16ToFloatS16(const int16_t * src,size_t size,float * dest)25*d9f75844SAndroid Build Coastguard Worker void S16ToFloatS16(const int16_t* src, size_t size, float* dest) {
26*d9f75844SAndroid Build Coastguard Worker   for (size_t i = 0; i < size; ++i)
27*d9f75844SAndroid Build Coastguard Worker     dest[i] = src[i];
28*d9f75844SAndroid Build Coastguard Worker }
29*d9f75844SAndroid Build Coastguard Worker 
FloatS16ToS16(const float * src,size_t size,int16_t * dest)30*d9f75844SAndroid Build Coastguard Worker void FloatS16ToS16(const float* src, size_t size, int16_t* dest) {
31*d9f75844SAndroid Build Coastguard Worker   for (size_t i = 0; i < size; ++i)
32*d9f75844SAndroid Build Coastguard Worker     dest[i] = FloatS16ToS16(src[i]);
33*d9f75844SAndroid Build Coastguard Worker }
34*d9f75844SAndroid Build Coastguard Worker 
FloatToFloatS16(const float * src,size_t size,float * dest)35*d9f75844SAndroid Build Coastguard Worker void FloatToFloatS16(const float* src, size_t size, float* dest) {
36*d9f75844SAndroid Build Coastguard Worker   for (size_t i = 0; i < size; ++i)
37*d9f75844SAndroid Build Coastguard Worker     dest[i] = FloatToFloatS16(src[i]);
38*d9f75844SAndroid Build Coastguard Worker }
39*d9f75844SAndroid Build Coastguard Worker 
FloatS16ToFloat(const float * src,size_t size,float * dest)40*d9f75844SAndroid Build Coastguard Worker void FloatS16ToFloat(const float* src, size_t size, float* dest) {
41*d9f75844SAndroid Build Coastguard Worker   for (size_t i = 0; i < size; ++i)
42*d9f75844SAndroid Build Coastguard Worker     dest[i] = FloatS16ToFloat(src[i]);
43*d9f75844SAndroid Build Coastguard Worker }
44*d9f75844SAndroid Build Coastguard Worker 
45*d9f75844SAndroid Build Coastguard Worker template <>
DownmixInterleavedToMono(const int16_t * interleaved,size_t num_frames,int num_channels,int16_t * deinterleaved)46*d9f75844SAndroid Build Coastguard Worker void DownmixInterleavedToMono<int16_t>(const int16_t* interleaved,
47*d9f75844SAndroid Build Coastguard Worker                                        size_t num_frames,
48*d9f75844SAndroid Build Coastguard Worker                                        int num_channels,
49*d9f75844SAndroid Build Coastguard Worker                                        int16_t* deinterleaved) {
50*d9f75844SAndroid Build Coastguard Worker   DownmixInterleavedToMonoImpl<int16_t, int32_t>(interleaved, num_frames,
51*d9f75844SAndroid Build Coastguard Worker                                                  num_channels, deinterleaved);
52*d9f75844SAndroid Build Coastguard Worker }
53*d9f75844SAndroid Build Coastguard Worker 
54*d9f75844SAndroid Build Coastguard Worker }  // namespace webrtc
55