Hi, I have developed a UMTS core network using a home nodeB (HNB) which the mobile phones (or UEs) can register on my network and get the required services such as call service. I have implemented all the required procedures for call service and I can establish a successful call for my connected UEs.

In one of the most important procedures, i.e **Call Proceeding**, I have identified the coding of speech transferred between UEs and core. Here is my coding options (in wireshark):

    GSM A-I/F DTAP - Call Proceeding
        Protocol Discriminator: Call Control; call related SS messages (3)
            .... 0011 = Protocol discriminator: Call Control; call related SS messages (0x3)
            1... .... = TI flag: allocated by receiver
            .000 .... = TIO: 0
        00.. .... = Sequence number: 0
        ..00 0010 = DTAP Call Control Message Type: Call Proceeding (0x02)
        Bearer Capability 1 - (Spare)
            Element ID: 0x04
            Length: 6
            Octet 3
                0... .... = Extension: Extended
                .11. .... = Radio channel requirement: Spare
                ...0 .... = Coding standard: GSM standardized coding
                .... 0... = Transfer mode: circuit
                .... .000 = Information transfer capability: Speech (0x0)
            Octets 3a - Speech Versions
                0... .... = Extension: Extended
                .0.. .... = Coding: octet used for extension of information transfer capability
                ..00 .... = Spare bit(s): 0
                .... 0010 = Speech version indication: GSM full rate speech version 2(GSM EFR) (0x2)
                0... .... = Extension: Extended
                .0.. .... = Coding: octet used for extension of information transfer capability
                ..00 .... = Spare bit(s): 0
                .... 1000 = Speech version indication: GSM full rate speech version 5(FR AMR-WB) (0x8)
                0... .... = Extension: Extended
                .0.. .... = Coding: octet used for extension of information transfer capability
                ..00 .... = Spare bit(s): 0
                .... 0100 = Speech version indication: GSM full rate speech version 3(FR AMR) (0x4)
                0... .... = Extension: Extended
                .0.. .... = Coding: octet used for extension of information transfer capability
                ..00 .... = Spare bit(s): 0
                .... 0101 = Speech version indication: GSM half rate speech version 3(HR AMR) (0x5)
                1... .... = Extension: No Extension
                .0.. .... = Coding: octet used for extension of information transfer capability
                ..00 .... = Spare bit(s): 0
                .... 0001 = Speech version indication: GSM half rate speech version 1(GSM HR) (0x1)

So I can see the RTP packets transferred between UE and core. An instance is mentioned here (in wireshark):

    Real-Time Transport Protocol
        [Stream setup by RANAP (frame 2950)]
        10.. .... = Version: RFC 1889 Version (2)
        ..0. .... = Padding: False
        ...0 .... = Extension: False
        .... 0000 = Contributing source identifiers count: 0
        0... .... = Marker: False
        Payload type: DynamicRTP-Type-96 (96)
        Sequence number: 56611
        [Extended sequence number: 56611]
        Timestamp: 424448575
        Synchronization Source identifier: 0x5c260101 (1545994497)
    RFC 2198: Redundant Audio Data
        Header 1: PT=ITU-T G.728
            0... .... = Follow: Not set
            .000 1111 = Payload type: ITU-T G.728 (15)
        Payload: 0028ba44776b3eee7a050039cdaa521cc20ac08d2bcf1818…

I have aggregated all RTP packets payload. How can I convert the aggregated bytes to a hearable audio?



--
When there is much light, The shadow is deep...