Changelog — G Radio AoIP
Todas las versiones publicadas de gr-aoip.
[0.1.2] — 2026-05-13
Correcciones
- Perfiles Estéreo — codecs no-Opus no funcionaban en TX ni en RX: el pipeline TX aplicaba
opus_rate()(que fuerza el rate a valores válidos para Opus: 8k/12k/16k/24k/48kHz) a todos los codecs, incluso AAC, FLAC y PCM. El pipeline RX tenía hardcodeadoapplication/x-rtp,encoding-name=OPUSyrtpopusdepaypara todos los codecs, sin importar cuál estuviera configurado. Como resultado, solo Opus funcionaba en el perfil Estéreo. - PCM L16 — pipeline completamente rehecho con RFC 3551: en lugar de
rtpgstpay/rtpgstdepay(que encapsulaba caps propietarias de GStreamer quertpjitterbufferno podía parsear, produciendo_gst_util_uint64_scale: assertion 'denom != 0' failed), PCM L16 ahora usartpL16pay/rtpL16depay— el mismo mecanismo estándar del perfil MPX. En TX se añade una etapaaudioconvert ! audio/x-raw,format=S16BEantes del payloader (rtpL16pay requiere big-endian). En RX las caps especificanencoding-name=L16,clock-rate={rate},channels=2con el sample rate real del audio. - package-all.sh — compilaciones ARM fallaban con «no Cargo.toml in /tmp»: la función
make_zipejecutabacd /tmpsin restaurar el directorio de trabajo, lo que hacía que los builds de ARM32/ARM64 posteriores no encontraran el proyecto. Corregido usando un subshell(cd /tmp && zip ...).
Novedades
- Subcomandos
start/stop/status: el binario ahora acepta argumentos de línea de comandos. gr-aoip start— intenta arrancar viasystemctl --user start gr-aoip; si no hay servicio systemd, lanza el proceso en background directamente.gr-aoip stop— para el servicio systemd y además mata cualquier proceso huérfanogr-aoip(ej. ejecuciones de desarrollo desdetarget/release/) excluyendo el propio proceso del subcomando.gr-aoip status— indica si hay un proceso corriendo y en qué puerto web.- Buffer de red configurable en perfiles Estéreo y Mono:
StereoConfigyMonoConfigtienen ahora el campojitter_buffer_ms(default 200 ms, compatible con configs existentes viaserde(default)). El pipeline RX Estéreo/Mono usa este valor enrtpjitterbuffer latency={ms} do-lost=true do-retransmission=false, con la misma lógica que el perfil MPX. La UI muestra el campo «Buffer de red RX (ms)» en la sección Estéreo. - UI — opciones filtradas por codec: el selector de Codec en el perfil Estéreo ahora actualiza dinámicamente los controles disponibles al cambiar de codec.
- Opus: solo muestra 48 000 Hz (oculta el selector de frecuencia); bitrates 32–512 kbps; nota informativa.
- AAC / MP3: 44 100 / 48 000 Hz; bitrates 64–320 kbps.
- FLAC: 44 100 / 48 000 Hz; oculta el campo de bitrate (lossless); nota con ancho de banda típico.
- PCM L16: 22 050 / 32 000 / 44 100 / 48 000 Hz; oculta el campo de bitrate; muestra el ancho de banda calculado en tiempo real (ej. «44 100 Hz → ≈1 411 kbps, calidad CD»).
[0.1.1] — 2026-05-03
Correcciones
- Cambiar pestaña TX/RX revertía al modo guardado: el polling de config cada 5 segundos sobreescribía el modo seleccionado en la UI antes de que el usuario pulsara Aplicar.
- Picker de dispositivos abría siempre en «Entradas»: ahora abre en la pestaña correcta según el modo activo (Entradas para TX, Salidas para RX).
- Dispositivos duplicados en el picker: cuando PipeWire y ALSA coexisten,
pactly la enumeración ALSA listaban los mismos dispositivos físicos con nombres distintos. Se deduplican por nombre lógico. - Nombres de dispositivos truncados en el primer
_: dispositivos comoUMC202HDaparecían comoBEHRINGERporque el nombre se cortaba en el primer guión bajo. Corregido el parseo de descripciones depactl.
[0.1.0] — 2026-04-28
Lanzamiento inicial
- Tres perfiles de audio: MPX (192 kHz, RTP/UDP, L16 mono), Estéreo (SRT + Opus/AAC, 44100/48000 Hz) y Mono (SRT + Opus, para enlaces hostiles).
- Interfaz web embebida en el binario (puerto 7171) con monitor en tiempo real: gauge de buffer, VU meters, estadísticas de latencia/paquetes/pérdida, uptime.
- Control ON/OFF del pipeline desde la UI; autostart configurable.
- Clock recovery adaptativo para MPX (ajusta el rate del pipeline según la ocupación del jitter buffer).
- Selector de dispositivos de audio con soporte PipeWire/PulseAudio y ALSA directo.
- Protección por contraseña (hash SHA-256) para la sección de configuración.
- Paquetes
.deby.zippara amd64, arm64 y armhf (cross-compilados en Docker Bookworm para garantizar compatibilidad GLIBC 2.36).
