blob: 3a7400b010fbd9716b10d91bd7d37ee915ddce0c [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
bjornv@webrtc.org7270a6b2011-12-28 08:44:17 +000011#ifndef WEBRTC_MODULES_AUDIO_PROCESSING_AEC_AEC_RESAMPLER_H_
12#define WEBRTC_MODULES_AUDIO_PROCESSING_AEC_AEC_RESAMPLER_H_
13
pbos@webrtc.org7fad4b82013-05-28 08:11:59 +000014#include "webrtc/modules/audio_processing/aec/aec_core.h"
niklase@google.com470e71d2011-07-07 08:21:25 +000015
peah50e21bd2016-03-05 08:39:21 -080016namespace webrtc {
17
peahff63ed22016-01-29 07:46:13 -080018enum { kResamplingDelay = 1 };
19enum { kResamplerBufferSize = FRAME_LEN * 4 };
niklase@google.com470e71d2011-07-07 08:21:25 +000020
Bjorn Volcker9345e862015-06-10 21:43:36 +020021// Unless otherwise specified, functions return 0 on success and -1 on error.
22void* WebRtcAec_CreateResampler(); // Returns NULL on error.
andrew@webrtc.org13b2d462013-10-08 23:41:42 +000023int WebRtcAec_InitResampler(void* resampInst, int deviceSampleRateHz);
Bjorn Volckerf6a99e62015-04-10 07:56:57 +020024void WebRtcAec_FreeResampler(void* resampInst);
niklase@google.com470e71d2011-07-07 08:21:25 +000025
26// Estimates skew from raw measurement.
andrew@webrtc.org13b2d462013-10-08 23:41:42 +000027int WebRtcAec_GetSkew(void* resampInst, int rawSkew, float* skewEst);
niklase@google.com470e71d2011-07-07 08:21:25 +000028
29// Resamples input using linear interpolation.
andrew@webrtc.org13b2d462013-10-08 23:41:42 +000030void WebRtcAec_ResampleLinear(void* resampInst,
kwiberg@webrtc.org38214d52014-07-03 09:47:33 +000031 const float* inspeech,
Peter Kastingdce40cf2015-08-24 14:52:23 -070032 size_t size,
bjornv@webrtc.org281b7982012-05-30 07:41:57 +000033 float skew,
kwiberg@webrtc.org38214d52014-07-03 09:47:33 +000034 float* outspeech,
Peter Kastingdce40cf2015-08-24 14:52:23 -070035 size_t* size_out);
niklase@google.com470e71d2011-07-07 08:21:25 +000036
peah50e21bd2016-03-05 08:39:21 -080037} // namespace webrtc
38
bjornv@webrtc.org7270a6b2011-12-28 08:44:17 +000039#endif // WEBRTC_MODULES_AUDIO_PROCESSING_AEC_AEC_RESAMPLER_H_