annotate src/opus-1.3/silk/sigm_Q15.c @ 169:223a55898ab9 tip default

Add null config files
author Chris Cannam <cannam@all-day-breakfast.com>
date Mon, 02 Mar 2020 14:03:47 +0000
parents 4664ac0c1032
children
rev   line source
cannam@154 1 /***********************************************************************
cannam@154 2 Copyright (c) 2006-2011, Skype Limited. All rights reserved.
cannam@154 3 Redistribution and use in source and binary forms, with or without
cannam@154 4 modification, are permitted provided that the following conditions
cannam@154 5 are met:
cannam@154 6 - Redistributions of source code must retain the above copyright notice,
cannam@154 7 this list of conditions and the following disclaimer.
cannam@154 8 - Redistributions in binary form must reproduce the above copyright
cannam@154 9 notice, this list of conditions and the following disclaimer in the
cannam@154 10 documentation and/or other materials provided with the distribution.
cannam@154 11 - Neither the name of Internet Society, IETF or IETF Trust, nor the
cannam@154 12 names of specific contributors, may be used to endorse or promote
cannam@154 13 products derived from this software without specific prior written
cannam@154 14 permission.
cannam@154 15 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
cannam@154 16 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
cannam@154 17 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
cannam@154 18 ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
cannam@154 19 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
cannam@154 20 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
cannam@154 21 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
cannam@154 22 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
cannam@154 23 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
cannam@154 24 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
cannam@154 25 POSSIBILITY OF SUCH DAMAGE.
cannam@154 26 ***********************************************************************/
cannam@154 27
cannam@154 28 #ifdef HAVE_CONFIG_H
cannam@154 29 #include "config.h"
cannam@154 30 #endif
cannam@154 31
cannam@154 32 /* Approximate sigmoid function */
cannam@154 33
cannam@154 34 #include "SigProc_FIX.h"
cannam@154 35
cannam@154 36 /* fprintf(1, '%d, ', round(1024 * ([1 ./ (1 + exp(-(1:5))), 1] - 1 ./ (1 + exp(-(0:5)))))); */
cannam@154 37 static const opus_int32 sigm_LUT_slope_Q10[ 6 ] = {
cannam@154 38 237, 153, 73, 30, 12, 7
cannam@154 39 };
cannam@154 40 /* fprintf(1, '%d, ', round(32767 * 1 ./ (1 + exp(-(0:5))))); */
cannam@154 41 static const opus_int32 sigm_LUT_pos_Q15[ 6 ] = {
cannam@154 42 16384, 23955, 28861, 31213, 32178, 32548
cannam@154 43 };
cannam@154 44 /* fprintf(1, '%d, ', round(32767 * 1 ./ (1 + exp((0:5))))); */
cannam@154 45 static const opus_int32 sigm_LUT_neg_Q15[ 6 ] = {
cannam@154 46 16384, 8812, 3906, 1554, 589, 219
cannam@154 47 };
cannam@154 48
cannam@154 49 opus_int silk_sigm_Q15(
cannam@154 50 opus_int in_Q5 /* I */
cannam@154 51 )
cannam@154 52 {
cannam@154 53 opus_int ind;
cannam@154 54
cannam@154 55 if( in_Q5 < 0 ) {
cannam@154 56 /* Negative input */
cannam@154 57 in_Q5 = -in_Q5;
cannam@154 58 if( in_Q5 >= 6 * 32 ) {
cannam@154 59 return 0; /* Clip */
cannam@154 60 } else {
cannam@154 61 /* Linear interpolation of look up table */
cannam@154 62 ind = silk_RSHIFT( in_Q5, 5 );
cannam@154 63 return( sigm_LUT_neg_Q15[ ind ] - silk_SMULBB( sigm_LUT_slope_Q10[ ind ], in_Q5 & 0x1F ) );
cannam@154 64 }
cannam@154 65 } else {
cannam@154 66 /* Positive input */
cannam@154 67 if( in_Q5 >= 6 * 32 ) {
cannam@154 68 return 32767; /* clip */
cannam@154 69 } else {
cannam@154 70 /* Linear interpolation of look up table */
cannam@154 71 ind = silk_RSHIFT( in_Q5, 5 );
cannam@154 72 return( sigm_LUT_pos_Q15[ ind ] + silk_SMULBB( sigm_LUT_slope_Q10[ ind ], in_Q5 & 0x1F ) );
cannam@154 73 }
cannam@154 74 }
cannam@154 75 }
cannam@154 76