# G.726

G.726 é um codec de fala baseado em Modulação por Código de Pulso Adaptivo e Diferencial (ADPCM) padronizado pela Setor de Normatização das Telecomunicações (ITU-T), capaz de transmitir sinais de voz nas taxas de 16, 24, 32 e 40 kbit/s. Foi introduzido para substituir o G.721, que cobria ADPCM em 32 kbit/s, e o G.723, que descrevia ADPCM para 24 e 40 kbit/s. O G.726 também introduziu uma nova taxa de 16 kbit/s. As quatro taxas de transferência associadas ao G.726 são frequentemente referidas pelo tamanho de bit de uma amostra, que são 2, 3, 4 e 5 bits, respectivamente. O codec de banda larga correspondente baseado na mesma tecnologia é G.722 .
O modo mais comumente utilizado é o de 32 kbit/s, que dobra a capacidade de rede utilizável usando metade da taxa do G.711. É usado principalmente em troncos internacionais na rede telefônica e é o codec padrão usado nos sistemas de telefonia sem fio DECT. A principal aplicação dos canais de 24 e 16 kbit/s é em canais de sobrecarga que transmitem voz em equipamentos de multiplicação de circuitos digitais (DCME). A principal aplicação dos canais de 40 kbit/s é transportar sinais de modem de dados no DCME, especialmente para modems que operam a mais de 4.8 kbits/s.

## História

O G.726 foi introduzido em 1990 para unificar os codecs G.721 (1984) e G.723 (1988) em uma única especificação.
O G.727 foi introduzido ao mesmo tempo que o G.726 e inclui as mesmas taxas de bits, porém é otimizado para o ambientes com equipamentos multiplexadores de circuitos de pacotes (PCME).

## Características

* Frequências de amostragem: 8 kHz
* Taxas de transmissão: 8, 16, 24, 32 ou 40 kbit/s
* Gera um fluxo de bits; portanto, o comprimento do quadro é determinado pelo tempo de empacotamento (geralmente 80 amostras por quadro de 10 ms)
* O atraso algorítmico típico é 0,125 ms, sem atraso antecipado
* Baseado em ADPCM
* O teste de medição perceptual da qualidade de fala (PSQM) em condições ideais produz pontuação média de opinião (MOS) de 4,30 para G.726 (32 kbit/s), comparado a 4,45 para G.711 (μ-law) $^[$
* O teste de PSQM sob estresse de rede gera pontuação média de 3,79 para G.726 (32 kbit/s), comparado a 4.13 para G.711 (μ-law)

## Endianness e tipo de carga

Como a ordem de bytes para protocolos de dados no contexto da Internet era geralmente definida como big endian e denominada simplesmente ordem de bytes de rede, como declarado pela RFC 1700, a RFC 1890 não definiu explicitamente a endianidade da predecessor de G.726, G.721, no protocolo de transmissão em tempo real (RTP) também. Em vez disso, a RFC 1890 define o uso de big endian pelo termo ordem de bytes de rede foi geralmente indicado para todos os codecs mencionados novamente:
   IETF, RFC1890, Seção 4.2 (em inglês)
O tipo de carga para G.721 foi definido pelo RFC 1890 como 2, portanto, a=rtpmap:2 G721/8000 . Nos rascunhos da versão mais recente deste RFC, o mesmo tipo de carga foi reutilizado para o G.726, ou seja, a=rtpmap:2 G726-32/8000.
Contradições nas recomendações produzidas pela ITU para o G.726, ou para o ADPCM, resultaram em diferenças de implementação entre os vários fabricantes, pois alguns optaram por seguir a Recomendação X.420 (little endian) e outros por seguir a Recomendação I.366.2 Anexo E (big endian). Por conseqüência essas implementações eram incompatíveis, pois a decodificação usando a ordem de bytes incorreta resulta em um sinal de áudio altamente distorcido. Eventualmente, esta contradição foi removida pela RFC 3551, que substitui a RFC 1890. A Seção 4.5.4 na RFC 3551 define os tipos MIME clássicos G726-16, 24, 32 e 40 como little endian e introduz novos tipos MIME para as variações big endian, que são AAL2-G726-16, 24, 32 e 40. O tipo de carga foi alterado para dinâmico, a fim de evitar confusão. Em vez da carga útil tipo 2, deve ser utilizada uma carga dinâmica na faixa de 96 a 127:
   IETF, RFC3551, Seção 4.5.4 (em inglês)
   IETF, RFC3551, Seção 6 (em inglês)
| little endian (X.420 e RFC 3551 ) | big endian (Anexo I.366.2 E e RFC 3551 ) | RFC 1890 |
| G726-16 a=rtpmap:{from 96 to 127} G726-16/8000 | AAL2-G726-16 a=rtpmap:{from 96 to 127} AAL2-G726-16/8000 | a=rtpmap:2 G726-16/8000 |
| G726-24 a=rtpmap:{from 96 to 127} G726-24/8000 | AAL2-G726-24 a=rtpmap:{from 96 to 127} AAL2-G726-24/8000 | a=rtpmap:2 G726-24/8000 |
| G726-32 a=rtpmap:{from 96 to 127} G726-32/8000 | AAL2-G726-32 a=rtpmap:{from 96 to 127} AAL2-G726-32/8000 | a=rtpmap:2 G726-32/8000 |
| G726-40 a=rtpmap:{from 96 to 127} G726-40/8000 | AAL2-G726-40 a=rtpmap:{from 96 to 127} AAL2-G726-40/8000 | a=rtpmap:2 G726-40/8000 |
As implementações mais recentes respeitam a RFC 3551 e fazem claras distinções entre G726-xx (little endian) e AAL2-G726-xx (big endian). O telefone Gigaset C610 IP DECT, por exemplo, gera o seguinte código em seu SIP INVITE:
a=rtpmap:96 G726-32/8000 → carga útil dinâmica tipo 96 e G.726 de acordo com X.420, portanto, pouco endian, conforme definido na RFC 3551
a=rtpmap:97 AAL2-G726-32/8000 → carga dinâmica tipo 97 e G.726 de acordo com I.366.2 Anexo E, portanto, big endian, conforme definido na RFC 3551
a=rtpmap:2 G726-32/8000 → carga útil estática tipo 2 e G.726 com resistência imprevisível, como G.721 de acordo com a RFC 1890 obsoleta