summaryrefslogtreecommitdiff
path: root/songdbj/javazoom/spi/vorbis/sampled/convert/VorbisFormatConversionProvider.java
diff options
context:
space:
mode:
authorMichiel Van Der Kolk <not.valid@email.address>2005-07-11 15:42:37 +0000
committerMichiel Van Der Kolk <not.valid@email.address>2005-07-11 15:42:37 +0000
commit9fee0ec4ca0c5b7a334cc29dbb58e76c7a4c736e (patch)
tree4c304cd4151020bd5494d279ee68a105ae3a5a3a /songdbj/javazoom/spi/vorbis/sampled/convert/VorbisFormatConversionProvider.java
parentdfa8ecbe609ca8ea194d08560a44fb9a92e94b4b (diff)
downloadrockbox-9fee0ec4ca0c5b7a334cc29dbb58e76c7a4c736e.tar.gz
rockbox-9fee0ec4ca0c5b7a334cc29dbb58e76c7a4c736e.zip
Songdb java version, source. only 1.5 compatible
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7101 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'songdbj/javazoom/spi/vorbis/sampled/convert/VorbisFormatConversionProvider.java')
-rw-r--r--songdbj/javazoom/spi/vorbis/sampled/convert/VorbisFormatConversionProvider.java244
1 files changed, 244 insertions, 0 deletions
diff --git a/songdbj/javazoom/spi/vorbis/sampled/convert/VorbisFormatConversionProvider.java b/songdbj/javazoom/spi/vorbis/sampled/convert/VorbisFormatConversionProvider.java
new file mode 100644
index 0000000000..d1321f2590
--- /dev/null
+++ b/songdbj/javazoom/spi/vorbis/sampled/convert/VorbisFormatConversionProvider.java
@@ -0,0 +1,244 @@
1/*
2 * VorbisFormatConversionProvider.
3 *
4 * JavaZOOM : vorbisspi@javazoom.net
5 * http://www.javazoom.net
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU Library General Public License as published
9 * by the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU Library General Public License for more details.
16 *
17 * You should have received a copy of the GNU Library General Public
18 * License along with this program; if not, write to the Free Software
19 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20 *
21 */
22
23package javazoom.spi.vorbis.sampled.convert;
24
25import java.util.Arrays;
26import javazoom.spi.vorbis.sampled.file.VorbisEncoding;
27import javax.sound.sampled.AudioFormat;
28import javax.sound.sampled.AudioInputStream;
29
30import org.tritonus.share.sampled.convert.TMatrixFormatConversionProvider;
31
32/**
33 * ConversionProvider for VORBIS files.
34 */
35public class VorbisFormatConversionProvider extends TMatrixFormatConversionProvider
36{
37 private static final AudioFormat[] INPUT_FORMATS =
38 {
39 new AudioFormat(VorbisEncoding.VORBISENC, 32000.0F, -1, 1, -1, -1, false), // 0
40 new AudioFormat(VorbisEncoding.VORBISENC, 32000.0F, -1, 2, -1, -1, false), // 1
41 new AudioFormat(VorbisEncoding.VORBISENC, 44100.0F, -1, 1, -1, -1, false), // 2
42 new AudioFormat(VorbisEncoding.VORBISENC, 44100.0F, -1, 2, -1, -1, false), // 3
43 new AudioFormat(VorbisEncoding.VORBISENC, 48000.0F, -1, 1, -1, -1, false), // 4
44 new AudioFormat(VorbisEncoding.VORBISENC, 48000.0F, -1, 2, -1, -1, false), // 5
45
46 new AudioFormat(VorbisEncoding.VORBISENC, 16000.0F, -1, 1, -1, -1, false), // 18
47 new AudioFormat(VorbisEncoding.VORBISENC, 16000.0F, -1, 2, -1, -1, false), // 19
48 new AudioFormat(VorbisEncoding.VORBISENC, 22050.0F, -1, 1, -1, -1, false), // 20
49 new AudioFormat(VorbisEncoding.VORBISENC, 22050.0F, -1, 2, -1, -1, false), // 21
50 new AudioFormat(VorbisEncoding.VORBISENC, 24000.0F, -1, 1, -1, -1, false), // 22
51 new AudioFormat(VorbisEncoding.VORBISENC, 24000.0F, -1, 2, -1, -1, false), // 23
52
53 new AudioFormat(VorbisEncoding.VORBISENC, 8000.0F, -1, 1, -1, -1, false), // 36
54 new AudioFormat(VorbisEncoding.VORBISENC, 8000.0F, -1, 2, -1, -1, false), // 37
55 new AudioFormat(VorbisEncoding.VORBISENC, 11025.0F, -1, 1, -1, -1, false), // 38
56 new AudioFormat(VorbisEncoding.VORBISENC, 11025.0F, -1, 2, -1, -1, false), // 39
57 new AudioFormat(VorbisEncoding.VORBISENC, 12000.0F, -1, 1, -1, -1, false), // 40
58 new AudioFormat(VorbisEncoding.VORBISENC, 12000.0F, -1, 2, -1, -1, false), // 41
59 };
60
61 private static final AudioFormat[] OUTPUT_FORMATS =
62 {
63 new AudioFormat(8000.0F, 16, 1, true, false), // 0
64 new AudioFormat(8000.0F, 16, 1, true, true), // 1
65 new AudioFormat(8000.0F, 16, 2, true, false), // 2
66 new AudioFormat(8000.0F, 16, 2, true, true), // 3
67 /* 24 and 32 bit not yet possible
68 new AudioFormat(8000.0F, 24, 1, true, false),
69 new AudioFormat(8000.0F, 24, 1, true, true),
70 new AudioFormat(8000.0F, 24, 2, true, false),
71 new AudioFormat(8000.0F, 24, 2, true, true),
72 new AudioFormat(8000.0F, 32, 1, true, false),
73 new AudioFormat(8000.0F, 32, 1, true, true),
74 new AudioFormat(8000.0F, 32, 2, true, false),
75 new AudioFormat(8000.0F, 32, 2, true, true),
76 */
77 new AudioFormat(11025.0F, 16, 1, true, false), // 4
78 new AudioFormat(11025.0F, 16, 1, true, true), // 5
79 new AudioFormat(11025.0F, 16, 2, true, false), // 6
80 new AudioFormat(11025.0F, 16, 2, true, true), // 7
81 /* 24 and 32 bit not yet possible
82 new AudioFormat(11025.0F, 24, 1, true, false),
83 new AudioFormat(11025.0F, 24, 1, true, true),
84 new AudioFormat(11025.0F, 24, 2, true, false),
85 new AudioFormat(11025.0F, 24, 2, true, true),
86 new AudioFormat(11025.0F, 32, 1, true, false),
87 new AudioFormat(11025.0F, 32, 1, true, true),
88 new AudioFormat(11025.0F, 32, 2, true, false),
89 new AudioFormat(11025.0F, 32, 2, true, true),
90 */
91 new AudioFormat(12000.0F, 16, 1, true, false), // 8
92 new AudioFormat(12000.0F, 16, 1, true, true), // 9
93 new AudioFormat(12000.0F, 16, 2, true, false), // 10
94 new AudioFormat(12000.0F, 16, 2, true, true), // 11
95 /* 24 and 32 bit not yet possible
96 new AudioFormat(12000.0F, 24, 1, true, false),
97 new AudioFormat(12000.0F, 24, 1, true, true),
98 new AudioFormat(12000.0F, 24, 2, true, false),
99 new AudioFormat(12000.0F, 24, 2, true, true),
100 new AudioFormat(12000.0F, 32, 1, true, false),
101 new AudioFormat(12000.0F, 32, 1, true, true),
102 new AudioFormat(12000.0F, 32, 2, true, false),
103 new AudioFormat(12000.0F, 32, 2, true, true),
104 */
105 new AudioFormat(16000.0F, 16, 1, true, false), // 12
106 new AudioFormat(16000.0F, 16, 1, true, true), // 13
107 new AudioFormat(16000.0F, 16, 2, true, false), // 14
108 new AudioFormat(16000.0F, 16, 2, true, true), // 15
109 /* 24 and 32 bit not yet possible
110 new AudioFormat(16000.0F, 24, 1, true, false),
111 new AudioFormat(16000.0F, 24, 1, true, true),
112 new AudioFormat(16000.0F, 24, 2, true, false),
113 new AudioFormat(16000.0F, 24, 2, true, true),
114 new AudioFormat(16000.0F, 32, 1, true, false),
115 new AudioFormat(16000.0F, 32, 1, true, true),
116 new AudioFormat(16000.0F, 32, 2, true, false),
117 new AudioFormat(16000.0F, 32, 2, true, true),
118 */
119 new AudioFormat(22050.0F, 16, 1, true, false), // 16
120 new AudioFormat(22050.0F, 16, 1, true, true), // 17
121 new AudioFormat(22050.0F, 16, 2, true, false), // 18
122 new AudioFormat(22050.0F, 16, 2, true, true), // 19
123 /* 24 and 32 bit not yet possible
124 new AudioFormat(22050.0F, 24, 1, true, false),
125 new AudioFormat(22050.0F, 24, 1, true, true),
126 new AudioFormat(22050.0F, 24, 2, true, false),
127 new AudioFormat(22050.0F, 24, 2, true, true),
128 new AudioFormat(22050.0F, 32, 1, true, false),
129 new AudioFormat(22050.0F, 32, 1, true, true),
130 new AudioFormat(22050.0F, 32, 2, true, false),
131 new AudioFormat(22050.0F, 32, 2, true, true),
132 */
133 new AudioFormat(24000.0F, 16, 1, true, false), // 20
134 new AudioFormat(24000.0F, 16, 1, true, true), // 21
135 new AudioFormat(24000.0F, 16, 2, true, false), // 22
136 new AudioFormat(24000.0F, 16, 2, true, true), // 23
137 /* 24 and 32 bit not yet possible
138 new AudioFormat(24000.0F, 24, 1, true, false),
139 new AudioFormat(24000.0F, 24, 1, true, true),
140 new AudioFormat(24000.0F, 24, 2, true, false),
141 new AudioFormat(24000.0F, 24, 2, true, true),
142 new AudioFormat(24000.0F, 32, 1, true, false),
143 new AudioFormat(24000.0F, 32, 1, true, true),
144 new AudioFormat(24000.0F, 32, 2, true, false),
145 new AudioFormat(24000.0F, 32, 2, true, true),
146 */
147 new AudioFormat(32000.0F, 16, 1, true, false), // 24
148 new AudioFormat(32000.0F, 16, 1, true, true), // 25
149 new AudioFormat(32000.0F, 16, 2, true, false), // 26
150 new AudioFormat(32000.0F, 16, 2, true, true), // 27
151 /* 24 and 32 bit not yet possible
152 new AudioFormat(32000.0F, 24, 1, true, false),
153 new AudioFormat(32000.0F, 24, 1, true, true),
154 new AudioFormat(32000.0F, 24, 2, true, false),
155 new AudioFormat(32000.0F, 24, 2, true, true),
156 new AudioFormat(32000.0F, 32, 1, true, false),
157 new AudioFormat(32000.0F, 32, 1, true, true),
158 new AudioFormat(32000.0F, 32, 2, true, false),
159 new AudioFormat(32000.0F, 32, 2, true, true),
160 */
161 new AudioFormat(44100.0F, 16, 1, true, false), // 28
162 new AudioFormat(44100.0F, 16, 1, true, true), // 29
163 new AudioFormat(44100.0F, 16, 2, true, false), // 30
164 new AudioFormat(44100.0F, 16, 2, true, true), // 31
165 /* 24 and 32 bit not yet possible
166 new AudioFormat(44100.0F, 24, 1, true, false),
167 new AudioFormat(44100.0F, 24, 1, true, true),
168 new AudioFormat(44100.0F, 24, 2, true, false),
169 new AudioFormat(44100.0F, 24, 2, true, true),
170 new AudioFormat(44100.0F, 32, 1, true, false),
171 new AudioFormat(44100.0F, 32, 1, true, true),
172 new AudioFormat(44100.0F, 32, 2, true, false),
173 new AudioFormat(44100.0F, 32, 2, true, true),
174 */
175 new AudioFormat(48000.0F, 16, 1, true, false), // 32
176 new AudioFormat(48000.0F, 16, 1, true, true), // 33
177 new AudioFormat(48000.0F, 16, 2, true, false), // 34
178 new AudioFormat(48000.0F, 16, 2, true, true), // 35
179 /* 24 and 32 bit not yet possible
180 new AudioFormat(48000.0F, 24, 1, true, false),
181 new AudioFormat(48000.0F, 24, 1, true, true),
182 new AudioFormat(48000.0F, 24, 2, true, false),
183 new AudioFormat(48000.0F, 24, 2, true, true),
184 new AudioFormat(48000.0F, 32, 1, true, false),
185 new AudioFormat(48000.0F, 32, 1, true, true),
186 new AudioFormat(48000.0F, 32, 2, true, false),
187 new AudioFormat(48000.0F, 32, 2, true, true),
188 */
189 };
190
191 private static final boolean t = true;
192 private static final boolean f = false;
193
194 /*
195 * One row for each source format.
196 */
197 private static final boolean[][] CONVERSIONS =
198 {
199 {f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,t,t,f,f,f,f, f,f,f,f,f,f}, // 0
200 {f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,t,t,f,f, f,f,f,f,f,f}, // 1
201 {f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,t,t, f,f,f,f,f,f}, // 2
202 {f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, t,t,f,f,f,f}, // 3
203 {f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,t,t,f,f}, // 4
204 {f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,t,t}, // 5
205
206 {f,f,f,f,f,f,f,f,f,f, f,f,t,t,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f}, // 18
207 {f,f,f,f,f,f,f,f,f,f, f,f,f,f,t,t,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f}, // 19
208 {f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,t,t,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f}, // 20
209 {f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,t,t, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f}, // 21
210 {f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, t,t,f,f,f,f,f,f,f,f, f,f,f,f,f,f}, // 22
211 {f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,t,t,f,f,f,f,f,f, f,f,f,f,f,f}, // 23
212
213 {t,t,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f}, // 36
214 {f,f,t,t,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f}, // 37
215 {f,f,f,f,t,t,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f}, // 38
216 {f,f,f,f,f,f,t,t,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f}, // 39
217 {f,f,f,f,f,f,f,f,t,t, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f}, // 40
218 {f,f,f,f,f,f,f,f,f,f, t,t,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f}, // 41
219
220 };
221
222 /**
223 * Constructor.
224 */
225 public VorbisFormatConversionProvider()
226 {
227 super(Arrays.asList(INPUT_FORMATS), Arrays.asList(OUTPUT_FORMATS), CONVERSIONS);
228 }
229
230 /**
231 * Returns converted AudioInputStream.
232 */
233 public AudioInputStream getAudioInputStream(AudioFormat targetFormat, AudioInputStream audioInputStream)
234 {
235 if (isConversionSupported(targetFormat, audioInputStream.getFormat()))
236 {
237 return new DecodedVorbisAudioInputStream(targetFormat, audioInputStream);
238 }
239 else
240 {
241 throw new IllegalArgumentException("conversion not supported");
242 }
243 }
244}