Le profil audio Bluetooth A2DP prend en charge plusieurs codecs. Tous les appareils doivent prendre en charge SBC (codec de sous-bande), puis ils peuvent prendre en charge des "codecs optionnels" supplémentaires comme MP3 et AAC, ou des codecs "non A2DP" comme apt-X.
Bien sûr, ces codecs ne peuvent pas être utilisés si le récepteur ne les prend pas en charge, auquel cas les deux appareils retombent sur SBC.
- Comment savoir quels codecs mon matériel / ROM prend en charge?
- Comment savoir quel codec est actuellement utilisé? (Peut-être que cela dépend aussi de la piste, s'il passe des fichiers MP3 / AAC directement sans ré-encodage, par exemple)
bluetooth
audio
a2dp
bluetooth-audio
endolith
la source
la source
Réponses:
Sur mon téléphone Cyanogen 10.1 (AOSP 4.2.2), il est possible d'activer une capture du trafic Bluetooth. Vous pouvez ensuite charger cette capture dans Wireshark et regarder la phase de négociation pour déterminer les codecs pris en charge par le périphérique de sortie audio couplé. Je ne sais pas quels OS prennent en charge cela: lorsque j'ai rencontré cette méthode pour la première fois, elle ne revendiquait la prise en charge qu'à partir de la version 4.4, mais ce n'est clairement pas le cas avec CM sur un Double Shot. :-)
En supposant que vous disposez de la configuration requise (enracinée ~ 4.2.2 ou version ultérieure), voici les étapes:
Vous pouvez également aligner les horodatages de capture avec les horodatages du journal CatLog pour rechercher des entrées de journal suggestives. J'ai trouvé un couple et j'ai intelligemment oublié de les inclure dans les notes sur lesquelles ce post est basé.
Une fois que j'aurai encore du temps, j'espère réduire cet ensemble assez long d'étapes à une application, mais je ne sais pas si c'est possible et je n'aurai pas encore le temps pendant un certain temps. En attendant, les suggestions pour améliorer le processus ci-dessus sont les bienvenues.
la source
Discover
renvoyé trois récepteurs audio. Une réponse àGetCapabilities
pourACP SEID [2 - Audio Sink]
inclusService: Media Codec - Audio MPEG-1,2 Audio
qui avaitMP3: True
. J'ai téléchargé le fichier journal capturé sur github .En regardant la source, il existe au moins 4 codecs: SBC (obligatoire), MP3 (MPEG12), AAC (MPEG24) et ATRAC de Sony.
Le logiciel sous-jacent est la pile "bluez" de linux. Il prend en charge SBC et a des capacités MP3 limitées.
Le journal des modifications pour v3.25 (2009?) Se lit comme suit: "Ajouter un support limité pour le codec MPEG12 / MP3".
Voir également l' annonce v3.25 . Le support MP3 semble dépendre de gstreamer qui n'est pas disponible sur Android, donc je suppose que SBC est la seule option pour A2DP pour démarrer.
PS: la plupart des appareils A2DP semblent ne pas prendre en charge MP3 / AAC en raison de problèmes de brevets / licences (y compris Linux).
la source
Avec les appareils Nexus 4 (5.0.1) ou Nexus 7 (2012) (4.4.4), il est possible d'utiliser le mode développeur pour obtenir le btsnoop_hci.log. "Activer le journal de surveillance Bluetooth HCI". Il n'est pas nécessaire de rooter les appareils. Il semble que les deux appareils n'offrent pas d'aptx. Je teste cela avec Moto Stream (pas d'aptx) et Philips AEA2500 (avec aptx).
la source
[Le mérite de cette réponse revient surtout à ewedel, qui a précisé que la réponse se trouve dans le fichier btsnoop_hci.log, en utilisant Wireshark; et prittstift69, pour partager le moyen facile de créer ce fichier journal.]
Il s'agit d'un tutoriel étape par étape, convivial pour les débutants, résumant les réponses déjà données, avec une certaine interprétation des résultats de ma part.
Comme prittstift69 et d'autres l'ont mentionné, vous pouvez «Activer le journal de surveillance Bluetooth HCI» sous Options du développeur. Pas besoin de suivre l'approche plus compliquée suggérée par ewedel.
Commencez par désactiver Bluetooth sur l'appareil Android (je l'appellerai «téléphone»).
Activez le journal de surveillance Bluetooth HCI sous Options du développeur.
Activez Bluetooth sur le téléphone et connectez-le au récepteur Bluetooth (je l'appellerai «récepteur»). Cette étape suppose que le récepteur a été préalablement couplé avec le téléphone.
Écoutez de la musique sur votre téléphone (idéalement un fichier WAV ou FLAC non compressé). Dix secondes suffisent. (Probablement encore moins)
Désactivez Bluetooth sur le téléphone.
Désactiver le journal de surveillance Bluetooth HCI
Transférez le fichier btsnoop_hci.log (je l'ai trouvé dans / sdcard / Android / Data /) sur votre ordinateur. Exécutez Wireshark sur votre ordinateur et ouvrez le fichier btsnoop_hci.log
Filtrer pour "btavdtp" (sans guillemets) Rechercher un message du téléphone au récepteur "Commande envoyée - SetConfiguration ...." Il s'agit du message envoyé par le téléphone au récepteur avec la configuration finale à utiliser pour cet audio une fois la négociation terminée. Le texte du champ Info vous indiquera quelle était la configuration finale.
[SBC] Si c'est SBC, vous voudrez peut-être savoir ce qu'est le bitpool. Pour ce faire, supprimez le filtre pour btavdtp et recherchez un message avec le protocole SBC et cliquez dessus. Ci-dessous, dans la section des détails, développez les informations du codec Bluetooth SBC. Développez ensuite une partie ou la totalité des données de trame. Là, il devrait clairement montrer le Bitpool utilisé par ce cadre. S'il est de 35, il y a de fortes chances que votre fréquence d'échantillonnage soit de 44,1 kHz, vous utilisez Joint Stereo et utilisez le profil audio SBC de qualité moyenne ( http://soundexpert.org/news/-/blogs/bluetooth-audio -qualité-a2dp ). Le débit binaire pour l'audio compressé est alors de 229 kbits / sec SBC, ce qui marque un 4.68 dans les tests de Sound Expert ( http://soundexpert.org/encoders-224-kbps ) qui est comparable au mp3 autour de 110-130 kbits / sec.
[APT-X] S'il s'agit d'APT-X, alors votre téléphone et votre récepteur prennent en charge APT-X, et c'est ce qu'il utilise. En supposant 16 bits, 44,1 kHz, le codec fonctionne à 352 kbits / s.
la source