Я пытаюсь закодировать необработанные данные PCM как uLaw для экономии полосы пропускания, необходимой для передачи речевых данных.
Я столкнулся с классом UlawEncoderInputStream на Эта страница , но нет документации! (
Конструктор принимает входной поток и значение максимального pcm (что бы это ни было).
/**
* Create an InputStream which takes 16 bit pcm data and produces ulaw data.
* @param in InputStream containing 16 bit pcm data.
* @param max pcm value corresponding to maximum ulaw value.
*/
public UlawEncoderInputStream(InputStream in, int max) {
После просмотра кода я подозреваю, что мне следует рассчитать это «максимальное» значение, используя предоставленную функцию: maxAbsPcm . Проблема в том, что я не совсем понимаю, что я собираюсь передать! Я записываю свой необработанный PCM в файл на SD-карте, поэтому у меня нет одного массива данных, постоянно находящегося в памяти, для передачи на него.
/**
* Compute the maximum of the absolute value of the pcm samples.
* The return value can be used to set ulaw encoder scaling.
* @param pcmBuf array containing 16 bit pcm data.
* @param offset offset of start of 16 bit pcm data.
* @param length number of pcm samples (not number of input bytes)
* @return maximum abs of pcm data values
*/
public static int maxAbsPcm(byte[] pcmBuf, int offset, int length) {
Другая проблема, с которой я сталкиваюсь при использовании этого кода, заключается в том, что я не уверен, какие значения выписать для заголовка для данных uLaw. Как определить, сколько меньше байтовых данных после кодирования с помощью uLaw?
Я прослушал один из (потенциально) кодированных файлов uLaw, который я создал в медиаплеере VLC (единственный плеер, который у меня есть, который будет пытаться прочитать файл), и его звуки противные, сломанные и щелкающие, но все еще можно разобрать голос.
Я пишу свой волновой заголовок, используя код, похожий на класс, который я нашел под названием WaveHeader, который можно найти Здесь !
Если у кого-то есть мысли по этому поводу, я был бы очень признателен, если бы их услышали! :) 1025 *
Большое спасибо
Dexter