Skip to content
This repository was archived by the owner on Jan 6, 2023. It is now read-only.

Commit c2a77e4

Browse files
committed
starts layer III work
1 parent 3650af0 commit c2a77e4

1 file changed

Lines changed: 15 additions & 5 deletions

File tree

src/main/java/fr/delthas/javamp3/Decoder.java

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -107,12 +107,16 @@ public static Sound decode(InputStream inputStream) throws IOException {
107107
if (stereo == -1) {
108108
if (mode == 0b11 /* single_channel */) {
109109
stereo = 0;
110-
synthOffset = new int[]{64};
111-
synthBuffer = new float[1024];
110+
if (layer != 0b01 /* layer III */) {
111+
synthOffset = new int[]{64};
112+
synthBuffer = new float[1024];
113+
}
112114
} else {
113115
stereo = 1;
114-
synthOffset = new int[]{64, 64};
115-
synthBuffer = new float[2 * 1024];
116+
if (layer != 0b01 /* layer III */) {
117+
synthOffset = new int[]{64, 64};
118+
synthBuffer = new float[2 * 1024];
119+
}
116120
}
117121
}
118122

@@ -153,7 +157,13 @@ public static Sound decode(InputStream inputStream) throws IOException {
153157
samples += synth(baos, sampleDecoded, synthOffset, synthBuffer, 2);
154158
}
155159
} else if (layer == 0b01 /* layer III */) {
156-
// TODO
160+
if (mode == 0b11 /* single_channel */) {
161+
sampleDecoded = samples_II(buffer, 1, -1, bitrate, frequency);
162+
} else if (mode == 0b0 /* stereo */ || mode == 0b10 /* dual_channel */) {
163+
sampleDecoded = samples_II(buffer, 2, -1, bitrate, frequency);
164+
} else if (mode == 0b01 /* intensity_stereo */) {
165+
sampleDecoded = samples_II(buffer, 2, bound, bitrate, frequency);
166+
}
157167
}
158168

159169
if (buffer.current != 0) {

0 commit comments

Comments
 (0)