1b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/* 2b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. 3b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * 4b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Use of this source code is governed by a BSD-style license 5b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * that can be found in the LICENSE file in the root of the source 6b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * tree. An additional intellectual property rights grant can be found 7b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * in the file PATENTS. All contributing project authors may 8b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * be found in the AUTHORS file in the root of the source tree. 9b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */ 10b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 11b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 12b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/* 13b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * This file contains the function WebRtcSpl_GetHanningWindow(). 14b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * The description header can be found in signal_processing_library.h 15b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * 16b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */ 17b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 18f24ac5923cbe5e806fac59a0d15e32567553ce8epbos@webrtc.org#include "webrtc/common_audio/signal_processing/include/signal_processing_library.h" 19b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 20b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// Hanning table with 256 entries 21c49ec1327c1d956c6c889cf1f32a7f9920d76149pbos@webrtc.orgstatic const int16_t kHanningTable[] = { 22b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 1, 2, 6, 10, 15, 22, 30, 39, 23b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 50, 62, 75, 89, 104, 121, 138, 157, 24b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 178, 199, 222, 246, 271, 297, 324, 353, 25b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 383, 413, 446, 479, 513, 549, 586, 624, 26b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 663, 703, 744, 787, 830, 875, 920, 967, 27b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 1015, 1064, 1114, 1165, 1218, 1271, 1325, 1381, 28b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 1437, 1494, 1553, 1612, 1673, 1734, 1796, 1859, 29b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 1924, 1989, 2055, 2122, 2190, 2259, 2329, 2399, 30b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 2471, 2543, 2617, 2691, 2765, 2841, 2918, 2995, 31b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 3073, 3152, 3232, 3312, 3393, 3475, 3558, 3641, 32b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 3725, 3809, 3895, 3980, 4067, 4154, 4242, 4330, 33b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 4419, 4509, 4599, 4689, 4781, 4872, 4964, 5057, 34b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 5150, 5244, 5338, 5432, 5527, 5622, 5718, 5814, 35b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 5910, 6007, 6104, 6202, 6299, 6397, 6495, 6594, 36b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 6693, 6791, 6891, 6990, 7090, 7189, 7289, 7389, 37b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 7489, 7589, 7690, 7790, 7890, 7991, 8091, 8192, 38b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 8293, 8393, 8494, 8594, 8694, 8795, 8895, 8995, 39b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 9095, 9195, 9294, 9394, 9493, 9593, 9691, 9790, 40b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 9889, 9987, 10085, 10182, 10280, 10377, 10474, 10570, 41b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org10666, 10762, 10857, 10952, 11046, 11140, 11234, 11327, 42b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org11420, 11512, 11603, 11695, 11785, 11875, 11965, 12054, 43b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org12142, 12230, 12317, 12404, 12489, 12575, 12659, 12743, 44b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org12826, 12909, 12991, 13072, 13152, 13232, 13311, 13389, 45b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org13466, 13543, 13619, 13693, 13767, 13841, 13913, 13985, 46b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org14055, 14125, 14194, 14262, 14329, 14395, 14460, 14525, 47b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org14588, 14650, 14711, 14772, 14831, 14890, 14947, 15003, 48b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org15059, 15113, 15166, 15219, 15270, 15320, 15369, 15417, 49b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org15464, 15509, 15554, 15597, 15640, 15681, 15721, 15760, 50b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org15798, 15835, 15871, 15905, 15938, 15971, 16001, 16031, 51b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org16060, 16087, 16113, 16138, 16162, 16185, 16206, 16227, 52b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org16246, 16263, 16280, 16295, 16309, 16322, 16334, 16345, 53b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org16354, 16362, 16369, 16374, 16378, 16382, 16383, 16384 54b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}; 55b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 56c49ec1327c1d956c6c889cf1f32a7f9920d76149pbos@webrtc.orgvoid WebRtcSpl_GetHanningWindow(int16_t *v, int16_t size) 57b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{ 58b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org int jj; 59c49ec1327c1d956c6c889cf1f32a7f9920d76149pbos@webrtc.org int16_t *vptr1; 60b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 61c49ec1327c1d956c6c889cf1f32a7f9920d76149pbos@webrtc.org int32_t index; 62c49ec1327c1d956c6c889cf1f32a7f9920d76149pbos@webrtc.org int32_t factor = ((int32_t)0x40000000); 63b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 64b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org factor = WebRtcSpl_DivW32W16(factor, size); 65b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org if (size < 513) 66c49ec1327c1d956c6c889cf1f32a7f9920d76149pbos@webrtc.org index = (int32_t)-0x200000; 67b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org else 68c49ec1327c1d956c6c889cf1f32a7f9920d76149pbos@webrtc.org index = (int32_t)-0x100000; 69b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org vptr1 = v; 70b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 71b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org for (jj = 0; jj < size; jj++) 72b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org { 73b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org index += factor; 74b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org (*vptr1++) = kHanningTable[index >> 22]; 75b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org } 76b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 77b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org} 78