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á.