os/mm/devsound/devsoundrefplugin/src/codec/sbcencoder/SBCConst.h
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
     1 // Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
     2 // All rights reserved.
     3 // This component and the accompanying materials are made available
     4 // under the terms of "Eclipse Public License v1.0"
     5 // which accompanies this distribution, and is available
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
     7 //
     8 // Initial Contributors:
     9 // Nokia Corporation - initial contribution.
    10 //
    11 // Contributors:
    12 //
    13 // Description:
    14 //
    15 
    16 #ifndef __SBCCONST_H__
    17 #define __SBCCONST_H__
    18 
    19 /**
    20 SBC Syncword, used in the begin of each sbc frame to identify sbc frame, 
    21 it's value is always 0x9c
    22 */
    23 const TUint8 KSBCFrameSyncWord = 0x9c;
    24 
    25 /**
    26 This table is used to calculate bit allocation for 4 subbands sbc frame 
    27 with Loudness allocation method
    28 */
    29 const TInt8 KSBCOffset4[4][4] =	
    30 	{
    31 		{-1, 0, 0, 0}, 	// fs = 16000
    32 		{-2, 0, 0, 1}, 	// fs = 32000
    33 		{-2, 0, 0, 1}, 	// fs = 44100
    34 		{-2, 0, 0, 1}	// fs = 48000
    35 	};
    36 		
    37 /**
    38 This table is used to calculate bit allocation for 8 subbands sbc frame 
    39 with Loudness allocation method
    40 */
    41 const TInt8 KSBCOffset8[4][8] =	
    42 	{
    43 		{-2, 0, 0, 0, 0, 0, 0, 1}, 	// fs = 16000
    44 		{-3, 0, 0, 0, 0, 0, 1, 2}, 	// fs = 32000
    45 		{-4, 0, 0, 0, 0, 0, 1, 2}, 	// fs = 44100
    46 		{-4, 0, 0, 0, 0, 0, 1, 2}	// fs = 48000
    47 	};
    48 
    49 /**
    50 2^32, scale value of Table KSBCProto4 and KSBCProto8.
    51 */
    52 const TUint8 KSBCProtoBitsShift = 32;
    53 
    54 /**
    55 Table KSBCProto4 is derived form Table Proto_4_40 (see A2DP spec for detail) 
    56 by scaling up by 2^32, it is for the Analysis process for 4 subbands sbc frames, 
    57 we are using integer numbers for high speed, after the calculation the results 
    58 will be scaled down by the same value.  
    59 */
    60 const TInt32 KSBCProto4[40] = 
    61 	{
    62 	           0,     2304460,     6407591,    11741191, 
    63 	    16480657,    16716234,     8013623,   -13143128, 
    64 	    46874251,    87782726,   124020356,   138271872, 
    65 	   111139929,    26338680,  -123788377,  -333488531, 
    66 	   582368677,   837466400,  1059296397,  1210442915, 
    67 	  1264074726,  1210442915,  1059296397,   837466400, 
    68 	  -582368677,  -333488531,  -123788377,    26338680, 
    69 	   111139929,   138271872,   124020356,    87782726, 
    70 	   -46874251,   -13143128,     8013623,    16716234, 
    71 	    16480657,    11741191,     6407591,     2304460
    72 	};
    73 
    74 /**
    75 Table KSBCProto8 is derived form Table Proto_8_80 (see A2DP spec for detail) 
    76 by scaling up by 2^32, it is for the Analysis process for 8 subbands sbc frames, 
    77 we are using integer numbers for high speed, after the calculation the results 
    78 will be scaled down by the same value.  
    79 */
    80 const TInt32 KSBCProto8[80] = 
    81 	{
    82 	           0,      672486,     1474275,     2382076, 
    83 	     3538707,     4895941,     6341097,     7661007, 
    84 	     8640724,     9035408,     8566508,     6943084, 
    85 	     3874724,     -767963,    -7085541,   -15020250, 
    86 	    24307345,    34486060,    44918676,    54748951, 
    87 	    62932121,    68309566,    69668008,    65792073, 
    88 	    55564768,    38042997,    12558847,   -21113115, 
    89 	   -62880072,  -112141060,  -167826440,  -228437728, 
    90 	   292053237,   356416821,   419083117,   477586143, 
    91 	   529417202,   572366304,   604531701,   624444638, 
    92 	   631167211,   624444638,   604531701,   572366304, 
    93 	   529417202,   477586143,   419083117,   356416821, 
    94 	  -292053237,  -228437728,  -167826440,  -112141060, 
    95 	   -62880072,   -21113115,    12558847,    38042997, 
    96 	    55564768,    65792073,    69668008,    68309566, 
    97 	    62932121,    54748951,    44918676,    34486060, 
    98 	   -24307345,   -15020250,    -7085541,     -767963, 
    99 	     3874724,     6943084,     8566508,     9035408, 
   100 	     8640724,     7661007,     6341097,     4895941, 
   101 	     3538707,     2382076,     1474275,      672486
   102 	};
   103 
   104 
   105 /**
   106 2^30, scale value of Table KSBCAnalysisMatrix4 and KSBCAnalysisMatrix8.
   107 */
   108 const TUint8 KSBCAnalysisMatrixBitsShift = 30;
   109 
   110 /**
   111 Table of cos((i + 0.5) * (k - 2) * PI / 4) * 2^30
   112 This table is used in Analysis process for 4 subbands, here we are using 
   113 integer values instead of real values for high speed, the values are scaled 
   114 up by 2^30, after calculation the results will be scaled down by the same value.  
   115 */
   116 const TInt32 KSBCAnalysisMatrix4[4][8] =
   117 	{
   118 		{  759250125,   992008094,  1073741824,   992008094, 
   119 		   759250125,   410903207,           0,  -410903207 },
   120 		   
   121 		{ -759250125,   410903207,  1073741824,   410903207, 
   122 		  -759250125,  -992008094,           0,   992008094 },
   123 		  
   124 		{ -759250125,  -410903207,  1073741824,  -410903207, 
   125 		  -759250125,   992008094,           0,  -992008094 },
   126 		  
   127 		{  759250125,  -992008094,  1073741824,  -992008094, 
   128 		   759250125,  -410903207,           0,   410903207 }
   129 	};
   130 
   131 /**
   132 Table of cos((i + 0.5) * (k - 4) * PI / 8) * 2^30
   133 This table is used in Analysis process for 8 subbands, here we are using 
   134 integer values instead of real values for high speed, the values are scaled 
   135 up by 2^30, after calculation the results will be scaled down by the same value.  
   136 */
   137 const TInt32 KSBCAnalysisMatrix8[8][16] =
   138 	{
   139 		{  759250125,   892783698,   992008094,  1053110176, 
   140 		  1073741824,  1053110176,   992008094,   892783698, 
   141 		   759250125,   596538995,   410903207,   209476638, 
   142 		           0,  -209476638,  -410903207,  -596538995 },
   143 		           
   144 		{ -759250125,  -209476638,   410903207,   892783698, 
   145 		  1073741824,   892783698,   410903207,  -209476638, 
   146 		  -759250125, -1053110176,  -992008094,  -596538995, 
   147 		           0,   596538995,   992008094,  1053110176 },
   148 		          
   149 		{ -759250125, -1053110176,  -410903207,   596538995, 
   150 		  1073741824,   596538995,  -410903207, -1053110176, 
   151 		  -759250125,   209476638,   992008094,   892783698, 
   152 		           0,  -892783698,  -992008094,  -209476638 },
   153 		           
   154 		{  759250125,  -596538995,  -992008094,   209476638, 
   155 		  1073741824,   209476638,  -992008094,  -596538995, 
   156 		   759250125,   892783698,  -410903207, -1053110176, 
   157 		           0,  1053110176,   410903207,  -892783698 },
   158 		          
   159 		{  759250125,   596538995,  -992008094,  -209476638, 
   160 		  1073741824,  -209476638,  -992008094,   596538995, 
   161 		   759250125,  -892783698,  -410903207,  1053110176, 
   162 		           0, -1053110176,   410903207,   892783698 },
   163 		           
   164 		{ -759250125,  1053110176,  -410903207,  -596538995, 
   165 		  1073741824,  -596538995,  -410903207,  1053110176, 
   166 		  -759250125,  -209476638,   992008094,  -892783698, 
   167 		           0,   892783698,  -992008094,   209476638 },
   168 		          
   169 		{ -759250125,   209476638,   410903207,  -892783698, 
   170 		  1073741824,  -892783698,   410903207,   209476638, 
   171 		  -759250125,  1053110176,  -992008094,   596538995, 
   172 		           0,  -596538995,   992008094, -1053110176 },
   173 		          
   174 		{  759250125,  -892783698,   992008094, -1053110176, 
   175 		  1073741824, -1053110176,   992008094,  -892783698, 
   176 		   759250125,  -596538995,   410903207,  -209476638, 
   177 		           0,   209476638,  -410903207,   596538995 }
   178 	};
   179 		
   180 #endif // __SBCCONST_H__