# Opus (códec)

Opus ( o llamado "libopus" como referencia técnica) es un códec de audio digital con compresión con pérdida; muy versátil, abierto y libre de regalías (nueva licencia BSD). Utiliza el formato contenedor Ogg. Fue desarrollado por la fundación Xiph.Org (los creadores de FLAC) en colaboración con Mozilla y Skype. En 2012 la IETF lo aceptó en su lista de estándares de Internet. Está diseñado para codificar voz y audio general eficientemente con un solo formato, y al mismo tiempo tener una complejidad lo suficientemente baja para poder ser utilizado en procesadores ARM3. En múltiples pruebas de audición, ha demostrado tener una mejor calidad que todos los demás codecs de audio con pérdida, incluyendo MP3, AAC y HE-AAC.
Combina los algoritmos de SILK y CELT, y alterna entre ellos cuando es necesario para lograr la mayor eficiencia posible. Opus tiene una latencia más baja que los demás codecs de audio (22,5 ms por defecto, cuando los demás tienen más de 100 ms), lo que hace que sea ideal para la comunicación en tiempo real. El retraso puede ser reducido a 5 ms, pero requiere una tasa de bits más alta para alcanzar la misma calidad que una transmisión con el retraso por defecto de 22,5 ms.

## Visión general

Opus soporta tasas de bits constantes y variables de 6 kbps a 510 kbps, tamaños de trama de 2,5 ms a 120 ms y cinco tasas de muestreo desde 8 kHz (4 kHz audibles) hasta 48 kHz (20 kHz audibles, cubriendo todo el espectro audible). Opus soporta hasta 255 canales de audio, tiene soporte experimental para audio ambisónico y permite emparejar canales en grupos de dos en joint stereo.
Opus tiene un algoritmo con un retraso muy bajo (26,5 ms), lo que lo hace muy útil para usarlo como formato de audio en enlaces de comunicaciones, que necesitan una latencia muy baja para permitir la conversación natural en eventos en directo. Este códec permite incluso reducir la calidad o el bitrate para conseguir una latencia más baja, alrededor de 5 ms. Su retraso es muy bajo si se compara con otros códecs como Ogg Vorbis o MP3, que tienen alrededor de 100 ms. Además, a diferencia de Ogg Vorbis, Opus no requiere la definición de códigos grandes al inicio de cada archivo individual, haciéndolo preferible a Vorbis para archivos pequeños de audio.

### Uso

El códec de audio Opus destaca por su baja latencia, lo que lo hace ideal para las aplicaciones que usan la transmisión de audio a través de Internet, tales como:
* Voz sobre IP (VoIP)
* Teleconferencias
* Chats
* Streaming
Además de estas aplicaciones, el códec se puede usar también para almacenar archivos de audio superando a códecs de audio ya existentes como Vorbis y HE-AAC.

## Historia
### Desarrollo

Fue desarrollado con el apoyo de la IETF por la Fundación Xiph.Org, la Fundación Mozilla, Skype Technologies S.A., entre otras compañías y empresas.

### Estandarización

Fue estandarizado el 11 de septiembre de 2012, por la IETF.

## Versiones
### 1.0

El 2 de julio de 2012, Opus fue aprobado por el IETF para su estandarización. El software de referencia entró en estado de versión candidata el 8 de agosto de 2012. La especificación final se publicó como RFC 6716 el 10 de septiembre de 2012 y las versiones 1.0 y 1.0.1 de la implementación de referencia libopus se lanzaron al día siguiente. En julio del 2013, libopus 1.0.3 trajo correcciones de errores y una nueva API de sonido envolvente que mejora la asignación de canales y la calidad, especialmente para LFE.

### 1.1

El 5 de diciembre de 2013 fue lanzado libopus 1.1 incorporando mejoras generales de velocidad y mejoras significativas en la calidad del codificador: la estimación de tonalidad aumenta la tasa de bits y la calidad de muestras previamente problemáticas, como clavecines; la detección automática de voz / música mejora la calidad en audio mixto; el estéreo de medio lado reduce las necesidades de tasa de bits de muchas canciones; refuerzo de precisión de banda para mejorar los transitorios; y rechazo de CC por debajo de 3 Hz..Se agregaron dos nuevos modos VBR: sin restricciones para una calidad más consistente; y VBR temporal que aumenta los marcos más ruidosos y, en general, mejora la calidad.
La versión 1.1.1 y 1.1.2 fueron lanzadas entre 2015 y 2016, ambos agregando optimizaciones de velocidad y correcciones de errores. El 15 de julio de 2016 vio el lanzamiento de la versión 1.1.3 e incluye correcciones de errores, optimizaciones, actualizaciones de documentación y trabajo experimental de Ambisonics.

### 1.2

El 20 de junio de 2017 se lanzó la versión 1.2 introduciendo mejoras que permiten la creación de música en banda completa a tasas de bits de 32 kbit/s y voz en banda ancha a 12 kbit/s.

### 1.3

El 18 de octubre de 2018 fue lanzada la versión 1.3 trayendo consigo mejoras en la calidad, mayores funciones y corrección de errores:
* Mejora menor de la calidad de los tonos
* Posibilidad de usar SILK hasta tasas de bits aproximadamente de 5 kbt/s
* Mejoras en la codificación de voz estéreo a baja tasa de bits
* Correcciones de detección en ancho de banda
* Correcciones al CELT PLC
* Mejoras de Seguridad
* Soporte para codificación ambisonics usando familias de mapeo de canales 2 y 3
* Mejoras en la clasificación de VAD, y voz / música usando una RNN
* Habilitar las correcciones de especificaciones en RFC 8251 de forma predeterminada
* Usar codificación de banda ancha hasta tasas de bits de 9 kb/s

## Soporte

El código base de Opus está escrito en C89 (lenguaje de programación C), así que debería funcionar en la mayoría de CPU actuales.
Todos los programas que utilizan GStreamer o FFmpeg (propio o del sistema) soportan Opus.

### Sistemas operativos

Google añadió soporte nativo para Opus en Android en la versión 5.0 (Lollipop), pero solo en contenedores Matroska (.mkv, .mka, .webm). Android 6.0 (Marshmallow) agregó el soporte para Opus en contenedores Ogg, pero solo en archivos con la extensión .ogg (no .opus).
MacOS High Sierra y iOS 11 tienen soporte nativo para Opus, pero solo en el contenedor propietario Core Audio Format (extensión .caf) de Apple.

### Reproductores de medios

Los reproductores AIMP, foobar2000, GoneMAD, PowerAMP, Neutron, Capriccio, Youki, MusicBee, SMPlayer, Winamp, VLC, Amarok y MX Player tienen soporte para Opus.

### Navegadores web

El soporte de Opus es obligatorio para los navegadores web que implementan la API WebRTC. Hay soporte para Opus en los navegadores Chromium, Google Chrome, Opera, Mozilla Firefox y Microsoft Edge.

### Voz sobre IP

Muchas aplicaciones de SIP, incluyendo TeamSpeak, Mumble, Phoner, Linphone, Jitsi, Tuenti, Acrobis Softphone y SFLphone, usan Opus por defecto o como una opción.

### Aplicaciones de mensajería

WhatsApp y Telegram usan el formato Opus para las notas (grabaciones) de voz.