El perfil de audio A2DP de Bluetooth admite múltiples códecs. Todos los dispositivos deben admitir SBC (códec de subbanda), luego pueden admitir "códecs opcionales" adicionales como MP3 y AAC, o códecs "no A2DP" como apt-X.
Por supuesto, estos códecs no se pueden usar si el receptor no los admite, en cuyo caso ambos dispositivos recurren a SBC.
- ¿Cómo averiguo qué códecs admite mi hardware / ROM?
- ¿Cómo puedo saber qué códec está actualmente en uso? (Tal vez esto también depende de la pista, si pasa archivos MP3 / AAC directamente sin volver a codificar, por ejemplo)
bluetooth
audio
a2dp
bluetooth-audio
endolito
fuente
fuente
Respuestas:
En mi teléfono Cyanogen 10.1 (AOSP 4.2.2), es posible habilitar una captura del tráfico de bluetooth. Luego puede cargar esta captura en Wireshark y mirar la fase de negociación para determinar qué códecs admite el dispositivo de salida de audio emparejado. No estoy seguro de qué sistemas operativos admiten esto: cuando me encontré con este método por primera vez, reclamó soporte solo desde 4.4 en adelante, pero claramente no es el caso con CM en un disparo doble. :-)
Suponiendo que tiene la configuración requerida (rooteado ~ 4.2.2 o posterior), estos son los pasos:
También puede alinear las marcas de tiempo de captura con las marcas de tiempo del registro CatLog para buscar entradas de registro sugerentes. Encontré un par y hábilmente olvidé incluirlos en las notas en las que se basa esta publicación.
Una vez que tenga más tiempo, espero reducir este conjunto de pasos bastante largo a una aplicación, pero no estoy seguro de si es posible y de todos modos no tendré el tiempo por un tiempo. Mientras tanto, las sugerencias para mejorar el proceso anterior son bienvenidas.
fuente
Discover
tres receptores de audio devueltos. Una respuesta aGetCapabilities
paraACP SEID [2 - Audio Sink]
incluidoService: Media Codec - Audio MPEG-1,2 Audio
que teníaMP3: True
. He subido el archivo de registro capturado a github .Mirando la fuente, hay al menos 4 códecs: SBC (obligatorio), MP3 (MPEG12), AAC (MPEG24) y ATRAC de Sony.
El software subyacente es la pila "bluez" de Linux. Es compatible con SBC y tiene capacidades limitadas de MP3.
El registro de cambios para v3.25 (2009?) Dice: "Agregue compatibilidad limitada para el códec MPEG12 / MP3".
Ver también el anuncio v3.25 . La compatibilidad con MP3 parece depender de gstreamer, que no está disponible en Android, así que supongo que SBC es la única opción para que arranque A2DP.
PD: La mayoría de los dispositivos A2DP parecen carecer de soporte para MP3 / AAC debido a problemas de patentes / licencias (incluido Linux).
fuente
Con los dispositivos Nexus 4 (5.0.1) o Nexus 7 (2012) (4.4.4) es posible utilizar el modo desarrollador para obtener btsnoop_hci.log. "Habilitar el registro de snoop de Bluetooth HCI". No es necesario rootear los dispositivos. Parece que ambos dispositivos no ofrecen aptx. Pruebo esto con Moto Stream (sin aptx) y Philips AEA2500 (con aptx).
fuente
[El crédito por esta respuesta va principalmente a ewedel, quien aclaró que la respuesta está en el archivo btsnoop_hci.log, usando Wireshark; y prittstift69, para compartir la manera fácil de crear este archivo de registro.]
Este es un tutorial paso a paso para novatos, que resume las respuestas ya dadas, con alguna interpretación de los resultados de mi parte.
Como se mencionó en prittstift69 y otros, puede "Habilitar el registro de snoop de Bluetooth HCI" en Opciones de desarrollador. No es necesario seguir el enfoque más complicado sugerido por ewedel.
Comience apagando el bluetooth en el dispositivo Android (lo llamaré 'teléfono').
Active Bluetooth HCI snoop log en Opciones de desarrollador.
Encienda Bluetooth en el teléfono y conéctelo al receptor Bluetooth (lo llamaré 'receptor'). Este paso supone que el receptor se había emparejado previamente con el teléfono.
Reproduzca música en su teléfono (idealmente un archivo WAV o FLAC sin comprimir). Diez segundos es todo lo que necesitas. (Probablemente incluso menos)
Apague Bluetooth en el teléfono.
Apague el registro de snoop Bluetooth HCI
Transfiera el archivo btsnoop_hci.log (lo encontré en / sdcard / Android / Data /) a su computadora. Ejecute wireshark en su computadora y abra el archivo btsnoop_hci.log
Filtrar por "btavdtp" (sin comillas) Buscar un mensaje del teléfono al receptor "Comando enviado - Configurar configuración ..." Este es el mensaje enviado por el teléfono al receptor con la configuración final que se utilizará para este audio después de completar el apretón de manos. El texto en el campo Información le dirá cuál fue la configuración final.
[SBC] Si es SBC, es posible que desee saber qué es el bitpool. Para hacer esto, elimine el Filtro para btavdtp y busque un mensaje con Protocol SBC y haga clic en él. A continuación, en la sección de detalles, expanda la información del códec SBC Bluetooth. Luego expanda cualquiera (o todos) de los datos del Marco. Allí, debería mostrar claramente el Bitpool utilizado por ese Frame. Si es 35, existe una buena posibilidad de que su frecuencia de muestreo sea 44.1 kHz, esté utilizando Joint Stereo y el perfil de audio SBC de calidad media ( http://soundexpert.org/news/-/blogs/bluetooth-audio -calidad-a2dp ). La tasa de bits para el audio comprimido es entonces 229 kbits / seg SBC, que obtiene un puntaje de 4.68 en las pruebas de Sound Expert ( http://soundexpert.org/encoders-224-kbps ) que es comparable a mp3 alrededor de 110-130 kbits / seg.
[APT-X] Si es APT-X, tanto su teléfono como su receptor son compatibles con APT-X, y eso es lo que está utilizando. Suponiendo 16 bits, 44,1 kHz, el códec se ejecuta a 352 kbits / s.
fuente