Características
O Opus caracteriza-se por ser um codec muito versátil principalmente devido à sua capacidade de operar desde débitos binários muito baixos (6 kbit/s) até a relativamente elevados (510 kbit/s), mantendo sempre um atraso dentro da gama dos 5 a 65 ms. Tais resultados devem-se a uma característica que lhe é bastante peculiar: possui duas camadas sobre as quais pode transitar suavemente sem introduzir distorção no envio da informação o que, por sua vez, revela ser de grande utilidade dado que cada uma destas camadas se encontra otimizada para operar sobre um certo tipo de conteúdo e para uma certa gama de débitos. A associação destas duas camadas permite com que o Opus se adapte tanto às variações do conteúdo que transmite como da própria rede sobre a qual a ligação é efetuada sem necessidade de renegociar a sessão.
Tendo em conta esta mentalidade de escalabilidade, é natural que este codec possua parâmetros altamente variáveis e, como tal, tem de suportar um leque suficientemente grande de larguras de banda (LB), o que se reflete em ritmos de amostragem diferentes, e de tramas de áudio de diferente duração (controlo do atraso do sistema). Alguns destes parâmetros encontram-se representados na tabela 1. Note-se, ainda, que, na qualidade de codificador com perdas, o Opus apenas tenta preservar os detalhes que são audíveis pelos humanos e uma vez que o ouvido humano não consegue ouvir frequências superiores a 20kHz, tal informação é considerada irrelevante, sendo, portanto, descartada.
Camadas e Modos de Funcionamento
Tal como referido anteriormente, o Opus possui duas camadas: SILK e CELT. A primeira, tendo sido baseada num codec desenvolvido pela Skype, serve especificamente para comunicações voz a baixo débito com a condicionante de não ser apropriada para música. Já a segunda, que tenta corrigir esta limitação, codifica música e voz para débitos superiores.
À semelhança de muitos outros sistemas onde o todo é mais do que a soma das suas partes, o Opus, para um dado instante, também não se limita a explorar as características intrínsecas de apenas uma camada. Neste sentido, surge um modo de funcionamento adicional que tenta tirar o máximo partido decorrente da sinergia entre o SILK e o CELT, aproveitando a alta compressão de sinais de voz oferecida pelo primeiro e a eficiência de codificação obtida pelo uso do CELT para altas frequências.
É, ainda, de realçar o facto de que o Opus é capaz de alternar entre modos de funcionamento no decurso de uma sessão.
Parâmetros de Controlo
Com vista à adaptabilidade, o Opus possui um conjunto de parâmetros que se altera dinamicamente durante o seu funcionamento sem que seja necessário interromper a transmissão:
• Bitrate:suporta débitos desde os 6kb/s até aos 512kb/s com incrementos de 0,4kb/s o que corresponde a mais de 1200 combinações possíveis.
capaz de transmitir tanto tramas monofónicas como estereofónicas num único fluxo de dados. A cada instante, o codificador tenta tomar a melhor decisão com base no débito da ligação.
para além da possibilidade de existirem tramas de duração diferente, o Opus tem a capacidade de aglomerá-las em pacotes de até 120ms. O aumento da duração das tramas conduz a uma codificação mais eficiente, mas também a um atraso maior pelo que este mecanismo de controlo é de extrema importância.
o codificador escolhe qual é a LB que conduz a uma melhor performance tendo em conta o débito binário disponível.
permite ajustar a sua exigência em termos de CPU face à qualidade/bitrate.
adapta a sua capacidade de correção com base na bitrate disponível.
• Ajusta o grau com que explora a correlação entre tramas. Esta correlação permite enviar a mesma quantidade de informação a débitos inferiores à custa da propagação de erros.
• Possui um mecanismo que reforça a sua robustez, determinando, numa primeira etapa, quais são os pacotes enviados que possuem informações críticas e, em seguida, retransmite-os a um débito inferior.
reduz a bitrate quando o sinal a enviar é silencioso ou ruído de fundo, transmitindo apenas uma trama a cada 400ms.