Android PCM для Файл wav кодирования ulaw

Я пытаюсь закодировать необработанные данные 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 . Проблема в том, что я действительно не понимаю, что мне нужно передать в него! Я записываю свой необработанный ПКМ в файл на 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, который можно найти Здесь !

Если у кого-нибудь есть какие-либо мысли по этому поводу, я был бы очень благодарен их выслушать! :)

Большое спасибо Декстер

6
задан Chris Birch 3 November 2011 в 10:42
поделиться