У меня возникли некоторые проблемы с переносом аудиоданных, хранящихся в байтовом массиве, преобразованием их в короткий массив с прямым порядком байтов, кодированием, а затем преобразованием обратно в байтовый массив.Вот что у меня есть.Исходные аудиоданные хранятся в audioBytes2.Я использую тот же формат для декодирования с минусом вместо функции cos.К сожалению, изменение байта и коротких типов данных не подлежит обсуждению.
short[] audioData = null;
int nlengthInSamples = audioBytes2.length / 2;
audioData = new short[nlengthInSamples];
for (int i = 0; i < nlengthInSamples; i++) {
short MSB = (short) audioBytes2[2*i+1];
short LSB = (short) audioBytes2[2*i];
audioData[i] = (short) (MSB << 8 | (255 & LSB));
}
int i = 0;
while (i < audioData.length) {
audioData[i] = (short)(audioData[i] + (short)5*Math.cos(2*Math.PI*i/(((Number)EncodeBox.getValue()).intValue())));
i++;
}
short x = 0;
i = 0;
while (i < audioData.length) {
x = audioData[i];
audioBytes2[2*i+1] = (byte)(x >>> 0);
audioBytes2[2*i] = (byte)(x >>> 8);
i++;
}
Я сделал все, что мог придумать, чтобы сделать эту работу, но самое близкое, что я получил, это заставить его работать каждыйдругие кодируют / декодируют, и я понятия не имею, почему.Спасибо за любую помощь.