1*d9f75844SAndroid Build Coastguard Worker /* 2*d9f75844SAndroid Build Coastguard Worker * Copyright (c) 2012 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 #ifndef AUDIO_REMIX_RESAMPLE_H_ 12*d9f75844SAndroid Build Coastguard Worker #define AUDIO_REMIX_RESAMPLE_H_ 13*d9f75844SAndroid Build Coastguard Worker 14*d9f75844SAndroid Build Coastguard Worker #include "api/audio/audio_frame.h" 15*d9f75844SAndroid Build Coastguard Worker #include "common_audio/resampler/include/push_resampler.h" 16*d9f75844SAndroid Build Coastguard Worker 17*d9f75844SAndroid Build Coastguard Worker namespace webrtc { 18*d9f75844SAndroid Build Coastguard Worker namespace voe { 19*d9f75844SAndroid Build Coastguard Worker 20*d9f75844SAndroid Build Coastguard Worker // Upmix or downmix and resample the audio to `dst_frame`. Expects `dst_frame` 21*d9f75844SAndroid Build Coastguard Worker // to have its sample rate and channels members set to the desired values. 22*d9f75844SAndroid Build Coastguard Worker // Updates the `samples_per_channel_` member accordingly. 23*d9f75844SAndroid Build Coastguard Worker // 24*d9f75844SAndroid Build Coastguard Worker // This version has an AudioFrame `src_frame` as input and sets the output 25*d9f75844SAndroid Build Coastguard Worker // `timestamp_`, `elapsed_time_ms_` and `ntp_time_ms_` members equals to the 26*d9f75844SAndroid Build Coastguard Worker // input ones. 27*d9f75844SAndroid Build Coastguard Worker void RemixAndResample(const AudioFrame& src_frame, 28*d9f75844SAndroid Build Coastguard Worker PushResampler<int16_t>* resampler, 29*d9f75844SAndroid Build Coastguard Worker AudioFrame* dst_frame); 30*d9f75844SAndroid Build Coastguard Worker 31*d9f75844SAndroid Build Coastguard Worker // This version has a pointer to the samples `src_data` as input and receives 32*d9f75844SAndroid Build Coastguard Worker // `samples_per_channel`, `num_channels` and `sample_rate_hz` of the data as 33*d9f75844SAndroid Build Coastguard Worker // parameters. 34*d9f75844SAndroid Build Coastguard Worker void RemixAndResample(const int16_t* src_data, 35*d9f75844SAndroid Build Coastguard Worker size_t samples_per_channel, 36*d9f75844SAndroid Build Coastguard Worker size_t num_channels, 37*d9f75844SAndroid Build Coastguard Worker int sample_rate_hz, 38*d9f75844SAndroid Build Coastguard Worker PushResampler<int16_t>* resampler, 39*d9f75844SAndroid Build Coastguard Worker AudioFrame* dst_frame); 40*d9f75844SAndroid Build Coastguard Worker 41*d9f75844SAndroid Build Coastguard Worker } // namespace voe 42*d9f75844SAndroid Build Coastguard Worker } // namespace webrtc 43*d9f75844SAndroid Build Coastguard Worker 44*d9f75844SAndroid Build Coastguard Worker #endif // AUDIO_REMIX_RESAMPLE_H_ 45