1*a58d3d2aSXin Li /*********************************************************************** 2*a58d3d2aSXin Li Copyright (c) 2006-2011, Skype Limited. All rights reserved. 3*a58d3d2aSXin Li Redistribution and use in source and binary forms, with or without 4*a58d3d2aSXin Li modification, are permitted provided that the following conditions 5*a58d3d2aSXin Li are met: 6*a58d3d2aSXin Li - Redistributions of source code must retain the above copyright notice, 7*a58d3d2aSXin Li this list of conditions and the following disclaimer. 8*a58d3d2aSXin Li - Redistributions in binary form must reproduce the above copyright 9*a58d3d2aSXin Li notice, this list of conditions and the following disclaimer in the 10*a58d3d2aSXin Li documentation and/or other materials provided with the distribution. 11*a58d3d2aSXin Li - Neither the name of Internet Society, IETF or IETF Trust, nor the 12*a58d3d2aSXin Li names of specific contributors, may be used to endorse or promote 13*a58d3d2aSXin Li products derived from this software without specific prior written 14*a58d3d2aSXin Li permission. 15*a58d3d2aSXin Li THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 16*a58d3d2aSXin Li AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17*a58d3d2aSXin Li IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18*a58d3d2aSXin Li ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 19*a58d3d2aSXin Li LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 20*a58d3d2aSXin Li CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 21*a58d3d2aSXin Li SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 22*a58d3d2aSXin Li INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 23*a58d3d2aSXin Li CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 24*a58d3d2aSXin Li ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 25*a58d3d2aSXin Li POSSIBILITY OF SUCH DAMAGE. 26*a58d3d2aSXin Li ***********************************************************************/ 27*a58d3d2aSXin Li 28*a58d3d2aSXin Li #ifdef HAVE_CONFIG_H 29*a58d3d2aSXin Li #include "config.h" 30*a58d3d2aSXin Li #endif 31*a58d3d2aSXin Li 32*a58d3d2aSXin Li #include "typedef.h" 33*a58d3d2aSXin Li #include "pitch_est_defines.h" 34*a58d3d2aSXin Li 35*a58d3d2aSXin Li const opus_int8 silk_CB_lags_stage2_10_ms[ PE_MAX_NB_SUBFR >> 1][ PE_NB_CBKS_STAGE2_10MS ] = 36*a58d3d2aSXin Li { 37*a58d3d2aSXin Li {0, 1, 0}, 38*a58d3d2aSXin Li {0, 0, 1} 39*a58d3d2aSXin Li }; 40*a58d3d2aSXin Li 41*a58d3d2aSXin Li const opus_int8 silk_CB_lags_stage3_10_ms[ PE_MAX_NB_SUBFR >> 1 ][ PE_NB_CBKS_STAGE3_10MS ] = 42*a58d3d2aSXin Li { 43*a58d3d2aSXin Li { 0, 0, 1,-1, 1,-1, 2,-2, 2,-2, 3,-3}, 44*a58d3d2aSXin Li { 0, 1, 0, 1,-1, 2,-1, 2,-2, 3,-2, 3} 45*a58d3d2aSXin Li }; 46*a58d3d2aSXin Li 47*a58d3d2aSXin Li const opus_int8 silk_Lag_range_stage3_10_ms[ PE_MAX_NB_SUBFR >> 1 ][ 2 ] = 48*a58d3d2aSXin Li { 49*a58d3d2aSXin Li {-3, 7}, 50*a58d3d2aSXin Li {-2, 7} 51*a58d3d2aSXin Li }; 52*a58d3d2aSXin Li 53*a58d3d2aSXin Li const opus_int8 silk_CB_lags_stage2[ PE_MAX_NB_SUBFR ][ PE_NB_CBKS_STAGE2_EXT ] = 54*a58d3d2aSXin Li { 55*a58d3d2aSXin Li {0, 2,-1,-1,-1, 0, 0, 1, 1, 0, 1}, 56*a58d3d2aSXin Li {0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0}, 57*a58d3d2aSXin Li {0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0}, 58*a58d3d2aSXin Li {0,-1, 2, 1, 0, 1, 1, 0, 0,-1,-1} 59*a58d3d2aSXin Li }; 60*a58d3d2aSXin Li 61*a58d3d2aSXin Li const opus_int8 silk_CB_lags_stage3[ PE_MAX_NB_SUBFR ][ PE_NB_CBKS_STAGE3_MAX ] = 62*a58d3d2aSXin Li { 63*a58d3d2aSXin Li {0, 0, 1,-1, 0, 1,-1, 0,-1, 1,-2, 2,-2,-2, 2,-3, 2, 3,-3,-4, 3,-4, 4, 4,-5, 5,-6,-5, 6,-7, 6, 5, 8,-9}, 64*a58d3d2aSXin Li {0, 0, 1, 0, 0, 0, 0, 0, 0, 0,-1, 1, 0, 0, 1,-1, 0, 1,-1,-1, 1,-1, 2, 1,-1, 2,-2,-2, 2,-2, 2, 2, 3,-3}, 65*a58d3d2aSXin Li {0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1,-1, 1, 0, 0, 2, 1,-1, 2,-1,-1, 2,-1, 2, 2,-1, 3,-2,-2,-2, 3}, 66*a58d3d2aSXin Li {0, 1, 0, 0, 1, 0, 1,-1, 2,-1, 2,-1, 2, 3,-2, 3,-2,-2, 4, 4,-3, 5,-3,-4, 6,-4, 6, 5,-5, 8,-6,-5,-7, 9} 67*a58d3d2aSXin Li }; 68*a58d3d2aSXin Li 69*a58d3d2aSXin Li const opus_int8 silk_Lag_range_stage3[ SILK_PE_MAX_COMPLEX + 1 ] [ PE_MAX_NB_SUBFR ][ 2 ] = 70*a58d3d2aSXin Li { 71*a58d3d2aSXin Li /* Lags to search for low number of stage3 cbks */ 72*a58d3d2aSXin Li { 73*a58d3d2aSXin Li {-5,8}, 74*a58d3d2aSXin Li {-1,6}, 75*a58d3d2aSXin Li {-1,6}, 76*a58d3d2aSXin Li {-4,10} 77*a58d3d2aSXin Li }, 78*a58d3d2aSXin Li /* Lags to search for middle number of stage3 cbks */ 79*a58d3d2aSXin Li { 80*a58d3d2aSXin Li {-6,10}, 81*a58d3d2aSXin Li {-2,6}, 82*a58d3d2aSXin Li {-1,6}, 83*a58d3d2aSXin Li {-5,10} 84*a58d3d2aSXin Li }, 85*a58d3d2aSXin Li /* Lags to search for max number of stage3 cbks */ 86*a58d3d2aSXin Li { 87*a58d3d2aSXin Li {-9,12}, 88*a58d3d2aSXin Li {-3,7}, 89*a58d3d2aSXin Li {-2,7}, 90*a58d3d2aSXin Li {-7,13} 91*a58d3d2aSXin Li } 92*a58d3d2aSXin Li }; 93*a58d3d2aSXin Li 94*a58d3d2aSXin Li const opus_int8 silk_nb_cbk_searchs_stage3[ SILK_PE_MAX_COMPLEX + 1 ] = 95*a58d3d2aSXin Li { 96*a58d3d2aSXin Li PE_NB_CBKS_STAGE3_MIN, 97*a58d3d2aSXin Li PE_NB_CBKS_STAGE3_MID, 98*a58d3d2aSXin Li PE_NB_CBKS_STAGE3_MAX 99*a58d3d2aSXin Li }; 100