RadioDRMSarava
A intenção desse projeto é termos um software com uma interface simples que permita que qualquer pessoa possuidora de um telefone celular com um processador razoável e entrada de audio P2 possa receber com qualidade uma rádio DRM utilizando somente o aparelho celular e uma cabeceira de RF simples como o pappradio, possibilitando assim a recepção portátil de uma estação DRM. Este projeto poderá ser extendido para a construção de um receptor portátil completo usando-se como placa mãe base a beagleboard, a pandaboard, o sheevaplug ou o Raspberry Pi (que é a placa mais barata, U$ 25).
O objetivo inicial do projeto é termos a recepção de DRM30 com qualidade numa plataforma OMAP3 (Nokia N900, N950, N9, Samsung Galaxy S, vários celulares Android, etc) rodando Maemo, Meego ou Android. Qualquer plataforma mais potente como a OMAP4 (Samsung Galaxy SII, Galaxy Nexus, etc) e OMAP5 irão consequentemente conseguir decodificar o sinal facilmente.
Status: O dream roda ok nas plataformas OMAP3 testadas, porém ainda não atinge realtime, deve estar por volta de 70% de atingir o realtime. O sistema de teste foi o debian squeeze e foi usada a fftw2 disponível no repositório (sem otimizações para ARM).
A seguir os principais softwares que serão usados pelo projeto.
FFTW
Para a biblioteca da transformada de fourier, usar no mínimo a versão 3.3.1-beta1 (a primeira que incorporou as otimizações NEON):
wget http://www.fftw.org/fftw-3.3.1-beta1.tar.gz
E compilar da seguinte forma:
CFLAGS="-O3 -pipe -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp" \ ./configure --prefix=/usr --enable-single --enable-shared --enable-neon
FAAD2
Decoder AAC HEv2. Do wiki do Dream (e confirmado que está ok):
wget http://downloads.sourceforge.net/faac/faad2-2.7.tar.gz tar zxf faad2-2.7.tar.gz cd faad2-2.7 CFLAGS="-O3" \ ./configure --enable-shared --disable-static --without-xmms --with-drm --without-mpeg4ip --prefix=/usr make cp include/faad.h include/neaacdec.h ../drm/libs cp libfaad/.libs/libfaad.so.2.0.0 /usr/local/lib/libfaad2_drm.so
Dependendo das configurações das variáveis de ambiente pode ser necessário colocar a libfaad2_drm.so em outro caminho, como por exemplo o /usr/lib/libfaad2_drm.so
Dream
Decoder DRM30.
TODO: Portar o código do Dream para usar a API da FFTW3 ao invés da FFTW2! http://www.fftw.org/doc/Upgrading-from-FFTW-version-2.html
Para instalar o dream, baixar a ultima versão do cvs:
cvs -d :pserver:anonymous@drm.cvs.sourceforge.net/cvsroot/drm login cvs -z3 -d :pserver:anonymous@drm.cvs.sourceforge.net/cvsroot/drm co drm
E para compilar:
qmake CONFIG+=console dream.pro (opcionalmente editar o Makefile e trocar "O2" por "O3") make make install
Scripts para teste
Usar "-O -1" para não usar a saída de audio do dream (no caso, ele tenta usar o portaudio, mas como não consegue, simplesmente desiste de abrir o device de audio).
mkfifo /home/user/out.wav dream -p -c 3 -f DREAM-EBC-Amostra.wav -w /home/user/out.wav -O -1 & mplayer -cache 4096 /home/user/out.wav
Copyright (c) Coletivo Saravá: desde que não mencionado em contrário, este conteúdo é distribuído de acordo com a Licença de Manipulação de Informações do Coletivo Saravá.