blob: a112c434d0bc91ba1a9d56ebf1ae31b3618f0feb [file] [log] [blame]
niklase@google.com470e71d2011-07-07 08:21:25 +00001/*
bjornv@webrtc.org281b7982012-05-30 07:41:57 +00002 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
niklase@google.com470e71d2011-07-07 08:21:25 +00003 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020011#ifndef MODULES_AUDIO_PROCESSING_AEC_AEC_RESAMPLER_H_
12#define MODULES_AUDIO_PROCESSING_AEC_AEC_RESAMPLER_H_
bjornv@webrtc.org7270a6b2011-12-28 08:44:17 +000013
Yves Gerey988cc082018-10-23 12:03:01 +020014#include <stddef.h>
15
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020016#include "modules/audio_processing/aec/aec_core.h"
niklase@google.com470e71d2011-07-07 08:21:25 +000017
peah50e21bd2016-03-05 08:39:21 -080018namespace webrtc {
19
peahff63ed22016-01-29 07:46:13 -080020enum { kResamplingDelay = 1 };
21enum { kResamplerBufferSize = FRAME_LEN * 4 };
niklase@google.com470e71d2011-07-07 08:21:25 +000022
Bjorn Volcker9345e862015-06-10 21:43:36 +020023// Unless otherwise specified, functions return 0 on success and -1 on error.
24void* WebRtcAec_CreateResampler(); // Returns NULL on error.
andrew@webrtc.org13b2d462013-10-08 23:41:42 +000025int WebRtcAec_InitResampler(void* resampInst, int deviceSampleRateHz);
Bjorn Volckerf6a99e62015-04-10 07:56:57 +020026void WebRtcAec_FreeResampler(void* resampInst);
niklase@google.com470e71d2011-07-07 08:21:25 +000027
28// Estimates skew from raw measurement.
andrew@webrtc.org13b2d462013-10-08 23:41:42 +000029int WebRtcAec_GetSkew(void* resampInst, int rawSkew, float* skewEst);
niklase@google.com470e71d2011-07-07 08:21:25 +000030
31// Resamples input using linear interpolation.
andrew@webrtc.org13b2d462013-10-08 23:41:42 +000032void WebRtcAec_ResampleLinear(void* resampInst,
kwiberg@webrtc.org38214d52014-07-03 09:47:33 +000033 const float* inspeech,
Peter Kastingdce40cf2015-08-24 14:52:23 -070034 size_t size,
bjornv@webrtc.org281b7982012-05-30 07:41:57 +000035 float skew,
kwiberg@webrtc.org38214d52014-07-03 09:47:33 +000036 float* outspeech,
Peter Kastingdce40cf2015-08-24 14:52:23 -070037 size_t* size_out);
niklase@google.com470e71d2011-07-07 08:21:25 +000038
peah50e21bd2016-03-05 08:39:21 -080039} // namespace webrtc
40
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020041#endif // MODULES_AUDIO_PROCESSING_AEC_AEC_RESAMPLER_H_