Search code examples
androidrtppcmaudiorecordandroid-audiorecord

Android AudioRecord send over RTP


Background

I am creating a VoIP app. I know that there are plenty of ones out already, but I have my reasons. Due to commercial implications I cannot just fork SipDroid, although it is a quality app. This app is aimed at Level 10 Gingerbread 2.3.3.

Problem

I have created a simple Activity which creates an AudioRecord instance, and then begins a loop:

int timestamp = 0;
int seqNr = 12;
while(true) {
    byte[] buffer = new byte[bufferSize];

    int num = recorder.read(buffer, 0, bufferSize);
    try {
        byte[] pcm = new byte[bufferSize];
        //
        // presumably here I convert the byte[] from PCM into G711??
        //
        RTPStream.Write(pcm,seqNr,timestamp);
        timestamp += num;
        seqNr++;
    } catch (IOException e) {
        e.printStackTrace();
    }
}

Question

How do I turn the PCM 44KHz 16bit Mono byte[]'s into G711u/a byte[]'s??


Solution

  • AudioGroup is available internally. That is what Native SipAudioCall is using. There is a a way to use internal API. Knowing that the class will be available in API 12. You should use it.