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