/* * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. * * Use of this source code is governed by a BSD-style license * that can be found in the LICENSE file in the root of the source * tree. An additional intellectual property rights grant can be found * in the file PATENTS. All contributing project authors may * be found in the AUTHORS file in the root of the source tree. */ /* * This file contains the function WebRtcSpl_ReflCoefToLpc(). * The description header can be found in signal_processing_library.h * */ #include "webrtc/common_audio/signal_processing/include/signal_processing_library.h" void WebRtcSpl_ReflCoefToLpc(const int16_t *k, int use_order, int16_t *a) { int16_t any[WEBRTC_SPL_MAX_LPC_ORDER + 1]; int16_t *aptr, *aptr2, *anyptr; const int16_t *kptr; int m, i; kptr = k; *a = 4096; // i.e., (Word16_MAX >> 3)+1. *any = *a; a[1] = WEBRTC_SPL_RSHIFT_W16((*k), 3); for (m = 1; m < use_order; m++) { kptr++; aptr = a; aptr++; aptr2 = &a[m]; anyptr = any; anyptr++; any[m + 1] = WEBRTC_SPL_RSHIFT_W16((*kptr), 3); for (i = 0; i < m; i++) { *anyptr = (*aptr) + (int16_t)WEBRTC_SPL_MUL_16_16_RSFT((*aptr2), (*kptr), 15); anyptr++; aptr++; aptr2--; } aptr = a; anyptr = any; for (i = 0; i < (m + 2); i++) { *aptr = *anyptr; aptr++; anyptr++; } } }