|
1 /* |
|
2 * Copyright (c) 2010 Ixonos Plc. |
|
3 * All rights reserved. |
|
4 * This component and the accompanying materials are made available |
|
5 * under the terms of the "Eclipse Public License v1.0" |
|
6 * which accompanies this distribution, and is available |
|
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
8 * |
|
9 * Initial Contributors: |
|
10 * Nokia Corporation - Initial contribution |
|
11 * |
|
12 * Contributors: |
|
13 * Ixonos Plc |
|
14 * |
|
15 * Description: |
|
16 * |
|
17 */ |
|
18 |
|
19 |
|
20 /************************************************************************** |
|
21 dec_huftables.cpp - Huffman tables for AAC decoder. |
|
22 |
|
23 Author(s): Juha Ojanpera |
|
24 Copyright (c) 2000-2004 by Nokia Research Center, Speech and Audio Systems. |
|
25 *************************************************************************/ |
|
26 |
|
27 /*-- Project Headers. --*/ |
|
28 #include "dec_huf.h" |
|
29 #include "defines.h" |
|
30 #include "dec_const.h" |
|
31 |
|
32 /************************************************************************** |
|
33 Internal Objects |
|
34 *************************************************************************/ |
|
35 |
|
36 /* |
|
37 Purpose: Number of Huffman items within each codebook. |
|
38 Explanation: - */ |
|
39 |
|
40 |
|
41 /* |
|
42 * Deletes resources allocated to the Huffman codebooks. |
|
43 */ |
|
44 void |
|
45 CloseHuffmanDecTables(Huffman_DecInfo **huf) |
|
46 { |
|
47 if(huf) |
|
48 { |
|
49 int16 i; |
|
50 |
|
51 for(i = 0; i < MAX_AAC_QHUFTABLES; i++) |
|
52 { |
|
53 if(huf[i] != 0) |
|
54 delete huf[i]; |
|
55 huf[i] = NULL; |
|
56 } |
|
57 |
|
58 delete[] huf; |
|
59 huf = NULL; |
|
60 } |
|
61 } |
|
62 |
|
63 /************************************************************************** |
|
64 Title: LoadHuffmanDecTablesL |
|
65 |
|
66 Purpose: Loads Huffman spectral codebooks for AAC decoder. |
|
67 |
|
68 Usage: y = LoadHuffmanDecTablesL() |
|
69 |
|
70 Output: y - spectral codebooks |
|
71 |
|
72 Author(s): Juha Ojanpera |
|
73 *************************************************************************/ |
|
74 |
|
75 Huffman_DecInfo ** |
|
76 LoadHuffmanDecTablesL(void) |
|
77 { |
|
78 |
|
79 /* |
|
80 Purpose: Array holding the AAC Huffman decoding codebooks. |
|
81 Explanation: - */ |
|
82 const Huffman_DecCode *dec_huffman_tables[] = { |
|
83 dec_hftable1, dec_hftable2, dec_hftable3, dec_hftable4, dec_hftable5, |
|
84 dec_hftable6, dec_hftable7, dec_hftable8, dec_hftable9, dec_hftable10, |
|
85 dec_hftable11 |
|
86 }; |
|
87 |
|
88 |
|
89 int16 i; |
|
90 Huffman_DecInfo **huf; |
|
91 const Huffman_DecCode **hf_code; |
|
92 |
|
93 huf = (Huffman_DecInfo **) new (ELeave) Huffman_DecInfo*[MAX_AAC_QHUFTABLES]; |
|
94 CleanupStack::PushL(huf); |
|
95 |
|
96 ZERO_MEMORY(huf, MAX_AAC_QHUFTABLES * sizeof(Huffman_DecInfo *)); |
|
97 |
|
98 hf_code = dec_huffman_tables; |
|
99 for(i = 0; i < MAX_AAC_QHUFTABLES; i++) |
|
100 { |
|
101 huf[i] = (Huffman_DecInfo *) new (ELeave) Huffman_DecInfo[1]; |
|
102 CleanupStack::PushL(huf[i]); |
|
103 |
|
104 ZERO_MEMORY(huf[i], sizeof(Huffman_DecInfo)); |
|
105 |
|
106 huf[i]->huf = hf_code[i]; |
|
107 |
|
108 huf[i]->cb_len = cb_len[i]; |
|
109 } |
|
110 |
|
111 CleanupStack::Pop(MAX_AAC_QHUFTABLES + 1); |
|
112 |
|
113 return (huf); |
|
114 } |
|
115 |
|
116 /* |
|
117 * Deletes resources allocated to the Huffman scalefactor codebook. |
|
118 */ |
|
119 void |
|
120 CloseSfHuffmanTable(Huffman_DecSfInfo *sfHuf) |
|
121 { |
|
122 if(sfHuf) |
|
123 { |
|
124 delete sfHuf; |
|
125 sfHuf = NULL; |
|
126 } |
|
127 } |
|
128 |
|
129 /************************************************************************** |
|
130 Title: LoadSfHuffmanTableL |
|
131 |
|
132 Purpose: Loads Huffman scalefactor codebook for AAC decoder. |
|
133 |
|
134 Usage: y = LoadSfHuffmanTableL() |
|
135 |
|
136 Output: y - scalefactor codebook |
|
137 |
|
138 Author(s): Juha Ojanpera |
|
139 *************************************************************************/ |
|
140 |
|
141 Huffman_DecSfInfo * |
|
142 LoadSfHuffmanTableL(void) |
|
143 { |
|
144 Huffman_DecSfInfo *huf; |
|
145 |
|
146 huf = (Huffman_DecSfInfo *) new (ELeave) Huffman_DecSfInfo[1]; |
|
147 |
|
148 ZERO_MEMORY(huf, sizeof(Huffman_DecSfInfo)); |
|
149 |
|
150 huf->cb_len = cb_len[11]; |
|
151 |
|
152 huf->sf_param = dec_hftable12; |
|
153 |
|
154 return (huf); |
|
155 } |