Nous mettons en œuvre un programme pour les téléphones Android qui lit les fichiers audio en streaming à partir d'internet. Voici environ ce que nous faisons:
- Télécharger personnalisé format crypté.
- Décrypter pour obtenir des morceaux de régulière des données MP3.
- Décoder les MP3 de données raw PCM données dans une mémoire tampon.
- Pipe raw PCM données à un AudioTrack
Notre cible appareils de mesure sont Droid et le Nexus One. Tout fonctionne très bien sur Nexus One, mais le décodage MP3 est trop lent sur le Droid. La lecture de la vidéo commence à ignorer si nous avons mis le Droid sous la charge. Nous ne sommes pas autorisés à décoder les MP3 de données sur la carte SD, mais je sais que c'est pas notre problème, de toute façon.
Nous n'avons pas d'écrire notre propre décodeur MP3, mais utilisé MPADEC (http://sourceforge.net/projects/mpadec/). C'est gratuit et simple à intégrer avec notre programme. Nous le compiler avec le NDK.
Après analyse exhaustive avec les différents outils de profilage, nous sommes convaincus que c'est ce décodeur qui est à la traîne.
Voici les options que nous réfléchissons:
Trouver un autre décodeur MP3 que l'on peut compiler avec l'Android NDK. Ce décodeur MP3, devrait être optimisé pour fonctionner sur mobile, appareils ARM ou peut-être utiliser des entiers des mathématiques ou de quelques autres optimisations pour améliorer les performances.
Depuis le haut-Android MediaPlayer service d'Url, nous pourrions être en mesure de mettre en œuvre un petit serveur HTTP dans notre programme et servir le lecteur multimédia avec la restitution des fichiers Mp3. De cette façon, nous pouvons tirer parti de l'intégré dans le décodeur MP3.
Obtenir l'accès à la fonction intégrée dans MP3 decoder par le NDK. Je ne sais pas si c'est possible.
Quelqu'un aurait-il des suggestions sur ce que nous pouvons faire pour accélérer notre décodage MP3?
-- Rob Sz