Search code examples
androidcodectelephonyamrril

Android RIL speech_codec_info


I'm trying to modify the android source code in order to get the voice speech codec which is negotiated in each GSM call.

At the beginning I dived into source files like AudioPolicyManager and some others soc files of the Linux kernel. What you get when you write additional logs into those files is that speaker and microphone are always set to the same frequency (the maximum I guess, 48000Hz in my case with the speakers). I am pretty sure that voice is not transmitted with such frequency, telephony core negotiates a voice compression method before pushing it into the channel. I also tried to retrieve it via AT commands with no success, even when there are some proprietary commands which have no doc.

Finally I had a brief view to the RIL radio log (logcat -b radio) and I found that line:

I/RILQ    (  331): (0/331): RIL[0][event] qcril_qmi_voice_send_unsol_voice_speech_codec_info_htc: android_call_id = 1, codec = 7

I think this will make me sure which speech codec is negotiated before setting up a GSM call, however this source code is not open. It is a *.so compiled library (./vendor/htc/m8/proprietary/blobs/gsm/vendor/lib/libril-qc-qmi-1.so)

I have also disassembled (objdump) that in order to get which voice codec corresponds with 7 but I guess i will waste my time looking that assembly.

So my question is: Does anyone know if there any free open source libril.c in order to make me an idea which speech codes are corresponded with that integer values?. At this moment my telephony operator states that they support AMR-WB in 3g calls. If I found some source file in which codec 7 is corresponded with AMR-WB I will be almost sure that my telephony operator is right.

Note: I'm not looking for HD-Voice over 4G, I already know how to check it out.

Thanks in advance


Solution

  •     CODEC_QCELP13K = 0x0001
        CODEC_EVRC = 0x0002
        CODEC_EVRC_B = 0x0003
        CODEC_EVRC_WB = 0x0004
        CODEC_EVRC_NW = 0x0005
        CODEC_AMR_NB = 0x0006
        CODEC_AMR_WB = 0x0007
        CODEC_GSM_EFR = 0x0008
        CODEC_GSM_FR = 0x0009
        CODEC_GSM_HR = 0x000A
        CODEC_G711U = 0x000B
        CODEC_G723 = 0x000C
        CODEC_G711A = 0x000D
        CODEC_G722 = 0x000E
        CODEC_G711AB = 0x000F
        CODEC_G729 = 0x0010
        CODEC_EVS_NB = 0x0011
        CODEC_EVS_WB = 0x0012
        CODEC_EVS_SWB = 0x0013
        CODEC_EVS_FB = 0x0014
    

    As Chus Muñoz mentioned, 7 represents AMR wideband