G.711

O G.711 é um codec de áudio de banda estreita originalmente projetado para uso em telefonia que fornece áudio com qualidade de linha telefônica convencional a 64 kbit/s. É um padrão (Recomendação) da ITU-T para codificação de áudio, intitulado Modulação por impulsos codificados (PCM) de frequências de voz, lançado para uso em 1972.

O G.711 transmite sinais de áudio na faixa de frequência de 300–3400 Hz e realiza a amostragem a uma taxa de 8000 Hz, com uma tolerância nessa taxa de 50 partes por milhão (ppm).

Ele utiliza um de dois algoritmos logarítmicos de compansão: a Lei μ (μ-law), utilizada principalmente na América do Norte e no Japão, e a Lei A (A-law), utilizada na maioria dos outros países fora da América do Norte. Cada amostra compandida é quantizada em 8 bits, resultando em uma taxa de bits de 64 kbit/s.

O G.711 é um padrão obrigatório em muitas tecnologias, como nos padrões H.320 e H.323. Ele também pode ser usado para comunicação de fax sobre redes IP (conforme definido na especificação T.38).

Duas melhorias para o G.711 foram publicadas: o G.711.0 utiliza compressão de dados sem perdas para reduzir o uso de largura de banda e o G.711.1 aumenta a qualidade do áudio expandindo a largura de banda.

Características

Tipos

O G.711 define dois algoritmos principais de compansão: o algoritmo da Lei μ e o algoritmo da Lei A. Ambos são logarítmicos, mas a Lei A foi projetada especificamente para ser mais simples de ser processada por um computador. O padrão também define uma sequência de valores de código repetitivos que estabelece o nível de potência de 0 dB.

Os algoritmos da Lei μ e da Lei A codificam amostras PCM lineares com sinal de 14 bits e 13 bits (respectivamente) em amostras logarítmicas de 8 bits. Dessa forma, o codificador G.711 criará um fluxo de dados de 64 kbit/s para um sinal amostrado a 8 kHz.

O G.711 Lei μ tende a dar mais resolução para sinais de faixas mais altas, enquanto o G.711 Lei A fornece mais níveis de quantização para níveis de sinal mais baixos.

Os termos PCMU, G711u e G711MU também são usados para o G.711 Lei μ, e PCMA e G711A para o G.711 Lei A.

Lei A

A codificação da Lei A recebe uma amostra de áudio linear com sinal de 13 bits como entrada e a converte em um valor de 8 bits da seguinte forma:

Código de entrada linear

Código comprimido

XOR 01010101

Código de saída linear

s0000000abcdx s000abcd s0000000abcd1
s0000001abcdx s001abcd s0000001abcd10
s000001abcdxx s010abcd s000001abcd100
s00001abcdxxx s011abcd s00001abcd1000
s0001abcdxxxx s100abcd holiday s0001abcd10000
s001abcdxxxxx s101abcd s001abcd100000
s01abcdxxxxxx s110abcd s01abcd1000000
s1abcdxxxxxxx s111abcd s1abcd10000000

    Onde s é o bit de sinal, s é o seu inverso (ou seja, valores positivos são codificados com o bit mais significativo igual a 1), e os bits marcados com x são descartados. Note que a primeira coluna da tabela utiliza uma representação de valores negativos diferente da terceira coluna. Por exemplo, o valor decimal de entrada −21 é representado em binário após a inversão de bits como 1000000010100, o que mapeia para 00001010 (de acordo com a primeira linha da tabela). Ao decodificar, isso mapeia de volta para 1000000010101, que é interpretado como o valor de saída −21 em decimal. O valor de entrada +52 (0000000110100 em binário) mapeia para 10011010 (de acordo com a segunda linha), que mapeia de volta para 0000000110101 (+53 em decimal).

    Isso pode ser visto como um número em ponto flutuante com 4 bits de mantissa m (equivalente a uma precisão de 5 bits), 3 bits de expoente e e 1 bit de sinal s, formatado como seeemmmm, com o valor linear decodificado y dado pela fórmula:

    que resulta em um inteiro com sinal de 13 bits no intervalo de ±1 a . Note que nenhum código comprimido decodes para zero devido à adição de 0,5 (metade de um passo de quantização).

    Além disso, o padrão especifica que todos os bits pares resultantes (o bit menos significativo é considerado par) são invertidos antes que o octeto seja transmitido. Isso serve para fornecer uma quantidade abundante de transições 0/1 para facilitar o processo de recuperação de relógio nos receptores PCM. Sendo assim, um canal PCM silencioso codificado em Lei A tem as suas amostras de 8 bits codificadas como 0xD5 em vez de 0x80 nos octetos.

    Quando os dados são enviados sobre conexões E0 (G.703), o bit mais significativo (sinal) é enviado primeiro e o bit menos significativo é enviado por último.

    A biblioteca de ferramentas de software da ITU-T (STL) define o algoritmo para decodificação da seguinte forma (ele posiciona os valores decodificados nos 13 bits mais significativos do tipo de dado de saída de 16 bits):

    void            alaw_expand(lseg, logbuf, linbuf)
      long            lseg;
      short          *linbuf;
      short          *logbuf;
    {
      short            ix, mant, iexp;
      long             n;
    
      for (n = 0; n < lseg; n++)
      {
        ix = logbuf[n] ^ (0x0055);	/* reinverte os bits invertidos */
    
        ix &= (0x007F);		/* remove o bit de sinal */
        iexp = ix >> 4;		/* extrai o expoente */
        mant = ix & (0x000F);	/* obtém a mantissa */
        if (iexp > 0)
          mant = mant + 16;		/* adiciona o '1' condutor se o expoente > 0 */
    
        mant = (mant << 4) + (0x0008);	/* mantissa justificada à esquerda e */
        /* 1/2 passo de quantização adicionado */
        if (iexp > 1)		/* desloca para a esquerda conforme o expoente */
          mant = mant << (iexp - 1);
    
        linbuf[n] = logbuf[n] > 127	/* inverte se for uma amostra negativa */
          ? mant
          : -mant;
      }
    }
    

    Lei μ

    A codificação da Lei μ (às vezes referida como ulaw, G.711Mu ou G.711μ) recebe como entrada uma amostra de áudio linear com sinal de 14 bits na representação em Complemento para dois, inverte todos os bits após o bit de sinal se o valor for negativo, adiciona 33 (100001 em binário) e a converte em um valor de 8 bits da seguinte forma:

    Valor de entrada linear

    Código comprimido

    XOR 11111111

    Valor de saída linear

    s00000001abcdx s000abcd s00000001abcd1
    s0000001abcdxx s001abcd s0000001abcd10
    s000001abcdxxx s010abcd s000001abcd100
    s00001abcdxxxx s011abcd s00001abcd1000
    s0001abcdxxxxx s100abcd s0001abcd10000
    s001abcdxxxxxx s101abcd s001abcd100000
    s01abcdxxxxxxx s110abcd s01abcd1000000
    s1abcdxxxxxxxx s111abcd s1abcd10000000

      Onde s é o bit de sinal, e os bits marcados com x são descartados.

      Além disso, o padrão especifica que os bits codificados são invertidos antes de o octeto ser transmitido. Sendo assim, um canal PCM silencioso codificado em Lei μ transmite amostras de 8 bits como 0xFF em vez de 0x00 nos octetos.

      A adição do valor 33 é necessária para que todos os valores caiam dentro de um grupo de compressão, sendo ele subtraído de volta no momento da decodificação.

      Dividindo o valor codificado formatado como seeemmmm em 4 bits de mantissa m, 3 bits de expoente e e 1 bit de sinal s, o valor linear decodificado y é dado pela fórmula:

      que resulta em um inteiro com sinal de 14 bits no intervalo de ±0 a ±8031.

      Note que o 0 é transmitido como 0xFF e o −1 é transmitido como 0x7F, mas quando recebidos o resultado decodificado é 0 em ambos os casos.

      G.711.0

      O G.711.0, também conhecido como G.711 LLC, utiliza compressão de dados sem perdas para reduzir o uso da largura de banda em até 50%. O padrão de *Compressão sem perdas de modulação por impulsos codificados G.711* foi aprovado pela ITU-T em setembro de 2009.

      G.711.1

      O G.711.1 *“Extensão embutida de banda larga para modulação por impulsos codificados G.711”* é uma extensão de maior fidelidade para o G.711, ratificada em 2008 e expandida em 2012.

      O G.711.1 permite uma série de camadas de aprimoramento sobre o fluxo principal bruto do G.711 (Camada 0): a Camada 1 codifica áudio de 16 bits na mesma banda estreita de 4 kHz, e a Camada 2 permite banda larga de 8 kHz usando MDCT; cada uma utiliza uma taxa fixa de 16 kbps adicionais aos 64 kbps da camada principal. Elas podem ser usadas juntas ou individualmente, e cada uma codifica as diferenças em relação à camada anterior. Ratificada em 2012, a Camada 3 estende a Camada 2 para uma banda superlarga de 16 kHz, adicionando outros 16 kbps para as frequências mais altas, mantendo a independência das camadas. A taxa de bits máxima passa a ser de 96 kbps no G.711.1 original, ou 112 kbps com a banda superlarga. Não há um método interno definido para identificar ou separar as camadas, deixando a cargo da implementação a tarefa de empacotá-las ou sinalizá-las.

      Um decodificador que não compreenda o conjunto de camadas de fidelidade pode ignorar ou descartar os pacotes que não pertencem à camada principal sem afetar o funcionamento do áudio base, permitindo uma degradação suave em qualquer sistema de telefonia G.711 tradicional sem modificações.

      Também em 2012 foi ratificado o suporte sem perdas do G.711.0 estendido às novas camadas de fidelidade. Assim como no G.711.0, a compatibilidade total reversa com o G.711 básico é sacrificada em prol da eficiência, embora um nó compatível com o G.711.0 ainda possa ignorar os pacotes de camadas que não compreenda.

      Licenciamento

      As patentes para o G.711, lançado em 1972, já expiraram, portanto o padrão pode ser utilizado livremente sem a necessidade de uma licença.

      Ver também

      Referências

      1. 1 2 3 «G.711 : Pulse code modulation (PCM) of voice frequencies». www.itu.int
      2. ↑ «Video/Voice/Speech Codecs». Grandstream
      3. ↑ Este valor é produzido obtendo-se a representação em Complemento para dois do valor de entrada e invertendo todos os bits após o bit de sinal se o valor for negativo.
      4. ↑ Representação em Sinal-magnitude
      5. ↑ Recomendação ITU-T G.191. Função alaw_expand no arquivo Software/stl2009/g711/g711.c.
      6. ↑ Este valor é produzido obtendo-se a representação em complemento para dois do valor de entrada, invertendo todos os bits após o bit de sinal se o valor for negativo, e adicionando 33.
      7. ↑ Representação em sinal-magnitude. O resultado final é gerado subtraindo-se 33 da magnitude deste valor.
      8. ↑ ITU-T (17 de julho de 2009). «ITU-T Newslog - Voice codec gets new lossless compression»
      9. ↑ ITU-T. «G.711.0 : Lossless compression of G.711 pulse code modulation»
      10. ↑ «G.711.1 : Wideband embedded extension for G.711 pulse code modulation». ITU-T. 2012

      Ligações externas