Por si a alguien le ha pasado algo parecido, les cuento algunos problemas que tuve a la hora de compilar trunk con
mpd-full y como lo resolví.
Antes que nada comentar que el
mpd-mini que viene por defecto en las versiones trunk sí que da algún que otro problema. Uno que ya había comentado es que determinadas emisoras de radio se entrecortan al pasar de una a otra. No se si es cosa de la salida
OSS, porque he toqueteado todos los parámetros de buffer, gap, etc sin notar ningún cambio, mientras que con
alsa esto no sucede.
Además, con determinados ficheros no se muestran correctamente las etiquetas id3 de intérprete, título, etc aparte de problemas de codificación de acentos, eñes y demás. Otros ficheros directamente ni los reproduce.
Así pues, me decidí a intentarlo con mpd-full, ya que de espacio y recursos, el HW556a "va sobrao".
El primer problema que uno se encuentra es que en el menuconfig no aparece listado mpd-full. Como ya se ha apuntado en este mismo hilo, es necesario irse primero al menú Libraries y seleccionar libffmpeg-full. Hecho esto volvemos atrás y ya podemos seleccionar mpd-full dentro de Sound.
Hasta aquí, todo muy bonito. El dolor de cabeza empieza al teclear make.
La primera vez se detuvo en el punto donde compilaba libshout, de modo que lancé
make V=99 para ver qué es lo que fallaba. Aparte de algunos warnings, el error chungo parecía ser este:
tremor/ogg.h: No such file or directory.
Buscando por la red, parece ser que no soy el único al que le sucede y encontré este hilo donde aportan una posible solución:
https://forum.openwrt.org/viewtopic.php?id=45843En el post indican que se deben editar dos ficheros:
ogg.c y
shout_ogg.h (tardé un rato en descubrir que se refería a los que se encuentran en build_dir/target-mips_mips32_uClibc-0.9.33.2/libshout-2.2.2/src)
Simplemente hay que cambiar en ambos ficheros, la línea que reza
#include <tremor/ogg.h>
por esta otra:
#include <tremor/ivorbiscodec.h>
Hecho esto, consigo compilar correctamente libshout y el proceso se reanuda... hasta que surge el segundo problema, esta vez en la compilación de mpd. La cosa tira varios errores y warnings relacionados con el plugin de entrada
ffmpeg:
src/input/ffmpeg_input_plugin.c:38:2: error: unknown type name 'URLContext'
src/input/ffmpeg_input_plugin.c: In function 'input_ffmpeg_init':
src/input/ffmpeg_input_plugin.c:57:2: warning: implicit declaration of function
'av_protocol_next' [-Wimplicit-function-declaration]
src/input/ffmpeg_input_plugin.c:57:29: warning: comparison between pointer and i
nteger [enabled by default]
src/input/ffmpeg_input_plugin.c: In function 'input_ffmpeg_open':
src/input/ffmpeg_input_plugin.c:83:2: warning: implicit declaration of function
'url_open' [-Wimplicit-function-declaration]
src/input/ffmpeg_input_plugin.c:83:33: error: 'URL_RDONLY' undeclared (first use
in this function)
Y asi unos cuantos más. Después de una infructuosa búsqueda en Google, pensé que eso de /ffmpeg_input_plugin.c al tratarse de un plugin, seguramente no sería imprescindible. Después de todo a mi me basta con alimentar al mpd localmente con mpc, y sacar la salida por alsa. Bueno, ni corto ni perezoso me lancé a la aventura de editar el Makefile del mpd (la verdad es que no soy ni mucho menos un experto en estas lides).
El fichero en cuestión es /feeds/packages/sound/mpd/Makefile
No hizo falta tocar mucho. Dentro de la sección
define Package/mpd-full
Eliminé +libffmpeg del DEPENDS
Y dentro de
ifeq ($(BUILD_VARIANT),full)
es cosa de cambiar --enable-ffmpeg \ por --disable-ffmpeg \
Y después de estos cambios, la compilación continúa, ahora sí, sin mayores incidencias. Por fin tengo mi mpd-full andando