Аудио через Bluetooth: максимально подробно о профилях, кодеках и устройствах

  • Беспроводные технологии,
  • Звук

Эта статья также доступна на английском языке

Из-за массового выпуска смартфонов без аудиоразъема 3.5 мм беспроводные Bluetooth-наушники для многих основных способов прослушивания музыки и общения в режиме гарнитуры.
Производители беспроводных устройств не всегда пишут подробные характеристики товара, статьи о Bluetooth-
Попробуем разобраться с протоколом, возможностями Bluetooth-стеков ОС, наушников и колонок, Bluetooth-кодеков для аудио в противоречивы, местами некорректны, не рассказывают о всех особенностях, и часто копируют одну и ту же не соответствующую информацию. музыки и речи, VerIM, что влияет на передаваемый звук и задержку, научимся собирать и декодировать информацию о поддерживаемых кодеках и других возможностях устройств.

TL; DR :

  • SBC — нормальный кодек
  • У наушников есть свой эквалайзер и пост-процессинг на каждый кодек отдельно
  • aptX не настолько хорош, как о нём говорят рекламные анонсы
  • LDAC — маркетинговое фуфло
  • Качество звука в режиме разговора всё ещё низкое
  • В браузер можно встроить аудиоэнкодеры на C, скомпилировав в WebAssembly через emscripten, и они не будут особо тормозить.

Функциональная составляющая Bluetooth задается профилями — спецификациями конкретных функций. Передача музыки в Bluetooth осуществляется с использованием профиля передачи высококачественного аудио A2DP. Стандарт A2DP был принят в 2003 году, и с тех пор кардинально не менялся.
В рамках профиля стандартизирован 1 обязательный кодек низкой вычислительной сложности SBC, созданный специально для Bluetooth, и 3 дополнительных. Также допускается использование недокументированных кодеков собственной реализации.

По состоянию на июнь 2019 года мы находимся в комиксе xkcd с 14 A2DP-кодеками:

  • SBC ← стандартизирован в A2DP, поддерживаемыми всеми устройствами
  • MPEG-1/2 Layer 1/2/3 ← стандартизирован в A2DP: всем известный MP3, используемый в цифровом ТВ MP2, и неизвестный MP1
  • MPEG-2/4 AAC ← стандартизирован в A2DP
  • ATRAC ← старый кодек от Sony, стандартизирован в A2DP
  • LDAC ← новый кодек от Sony
  • aptX ← кодек из 1988 года
  • aptX HD ← то же самое, что aptX, только с другими включениями кодирования
  • Низкая задержка aptX совсем другой кодек, нет софтовой реализации aptX с уменьшенным буфером
  • aptX Adaptive ← еще один кодек от Qualcomm
  • FastStream ← псевдокодек, двунаправленная модификация SBC
  • HWA LHDC ← новый кодек от Huawei
  • Samsung HD ← поддерживается 2 устройства
  • Samsung Scalable ← поддерживается 2 устройства
  • Samsung UHQ-BT ← поддерживается 3 устройства

Зачем вообще нужны кодеки, спросите вы, когда в Bluetooth есть EDR , что позволяет передавать данные на скорость 2 и 3 мбит/с, а для несжатого двухканального 16-битного PCM достаточно 1,4 мбит/с?

В Bluetooth существует два типа передачи данных: Asynchronous Connection Less (ACL) для асинхронной передачи без установки соединений, и синхронное соединение, ориентированное (SCO), для синхронной передачи с предварительным согласованием соединений.
Передача осуществляется с использованием схемы разделения времени и выбора канала передачи на каждый пакет отдельно (Frequency-Hop/Time-Division- Duplex, FH/TDD), для чего время делится на 625-микросекундные интервалы, называемые слотами (слот). Одно из устройств передачи передачи в чётных номерах слотов, другое — в нечётных. Передаваемый пакет может занимать 1, 3 или 5 слотов, в зависимости от размера данных и установленного типа передачи, в этом случае передача одним ведётся в чётных и нечетных слотах до конца передачи. Всего в секунду можно принять и отправить до 1600 пакетов, если каждый из них занимает 1 слот, и оба устройства без остановки что-то передают и принимают.

2 и 3 мбит/с для EDR, которые можно встретить в анонсах и на сайте Bluetooth, максимальная канальная скорость передачи всех данных (включая технические заголовки всех протоколов, которые инкапсулируют данные), в двух направлениях одновременно. Фактическая скорость передачи данных будет сильно отличаться.

Для передачи музыки используется асинхронный способ, почти всегда с помощью пакетов типа 2-DH5 и 3-DH5, которые не имеют максимального количества данных в режиме EDR 2 мбит/ с и 3 мбит/с соответственно, и занимают 5 слотов временного разделения эфира.

Схематичное представление передачи с использованием 5 слотов одним и 1 слота другим (DH5/DH1):

Из-за принципа разделения эфира по времени мы вынуждены ждать 625-микросекундный тайм-слот после передачи пакета, если второе устройство нам ничего не будет передавать или передает маленький пакет, и большее количество времени, если второе устройство ведёт передачу большим пакетами. Если к телефону подключено больше одного устройства (например, наушники, часы и фитнес-браслет), то время передачи разделяется между ними.

Необходимость инкапсуляции аудио в специальные транспортные протоколы L2CAP и AVDTP забирает 16 байт.

Тип пакета Кол-во слотов Макс. кол-во байт в пакете Макс. кол-во байт полезной нагрузки A2DP Макс. битрейт полезной нагрузки A2DP
2-DH3 3 367 351 936 кбит/с
3-DH3 3 552 536 1429 кбит/с
2-DH5 5 679 663 1414 кбит/с
3-DH5 5 1021 1005 2143 кбит/с

1414 и 1429 кбит/с точно для передачи несжатого звука в реальных условиях, с зашумленным диапазоном 2.4 ГГц и необходимостью передачи служебных данных. EDR 3 мбит/с требователен к мощности передачи и шумам в эфире, поэтому даже в режиме 3-DH5, комфортная передача PCM невозможна, постоянно будут кратковременные прерывания, и все будет работать только на расстоянии в пару метров.
На практика, даже 990 кбит/с-аудиопоток (LDAC 990 кбит/с) передаётся с трудом.

Вернёмся к кодекам.

SBC

Кодек, обязательный для всех устройств, поддерживающих стандарт A2DP. Лучший и худший кодек одновременно.

Частота дискретизации Разрядность Битрейт Поддержка кодирования Поддержка декодирования
16, 32, 44,1, 48 кГц 16 бит 10-1500 кбит/с Всеми устройствам Всеми устройствам

SBC — простой и вычислительно быстрый кодек, с примитивной психоакустической моделью (применяемая только маскировка тихих звуков), Использующий адаптивную импульсно-кодовую модуляцию (APCM).
Спецификация A2DP рекомендует к использованию два профиля: Среднее и Высокое качество.

У кодека много настроек, позволяющих управлять алгоритмической задержкой, алгоритмом распределения битов, но почти повсеместно используются одни и те же рекомендованные в спецификации параметры: Joint Stereo , 8 частотных полос, 16 блоков в аудиофрейме, способ распределения бит Loudness .
SBC поддерживает динамическое изменение конфигурации Bitpool, напрямую влияет на битрейт. забит, пакеты теряются, или находятся на большом расстоянии, источник аудио может уменьшать Bitpool, пока связь не нормализуется.
Даже если производитель наушников установил максимальное значение Bitpool выше 53 (такие модели встречаются, например: Beats Solo³, JBL Everest Elite 750NC, Apple AirPods, та Кроме того, некоторые производители задают низкое максимальное значение Bitpool для некоторых устройств. Например, у Bluedio T оно равно 39, у Samsung Gear IconX — 37, что даёт плохое качество звука.

Искусственные ограничения со стороны разработчиков Bluetooth-стеков, вероятнее всего, возникли несовместимости некоторых устройств с Большими значениями Bitpool или нетипичными профилями, даже если они сообщали об их поддержке, недостаточно тестов при сертификации. Авторам Bluetooth-стеков проще было ограничить согласованным рекомендуемым профилем, а не создать базы некорректно работающих функций.

SBC динамически выделяет биты квантования для частотных полос, действуя по принципу от нижних к верхним, с разными весовыми коэффициентами. Если весь битрейт использовался на нижние и средние частоты, верхние частоты «обрежутся» (вместо них будет тишина).

Пример SBC 328 кбит/с. Вверху — оригинал, внизу — SBC, периодически происходит переключение между дорожками. Для аудио в видеофайле используется кодек сжатия без потерь FLAC. Использование FLAC в контейнере mp4 официально не стандартизировано, поэтому не факт, что ваш браузер воспроизведет его, но должно работать в последних версиях десктопных Chrome и Firefox.

ZZ Top — Острый одетый мужчина

На спектре виден момент переключения: SBC периодически режет тихие звуки выше 17,5 кГц, и совсем не выделяются битов для полосы выше 20 кГц. Полный спектрограмма доступна по клику (1.7 МБ).

Я не слышу разницы между оригиналом и SBC на этом треке.

Возьмём что-нибудь новее, и смоделируем аудио, которое бы получилось при использовании наушников Samsung Gear IconX с Bitpool 37 (вверху — исходный сигнал, внизу — SBC 239) кбит/с, звук во FLAC).

Бездумное самовлюбленность — свидетель

Я слышу треск, меньший стереоэффект и неприятное «цоканье» вокала в высоких частотах.

Хоть SBC и очень гибкий кодек, может быть настроен под низкую задержку, даёт отличное качество аудио на высоких битрейтах (452+ кбит/с) и вполне хорошее для многих людей на стандартном высоком качестве (328 кбит/с), из-за того, что стандарт A2DP не задает фиксированных профилей (а даёт только рекомендации), разработчики стеков установи ли искусственные ограничения на Bitpool, параметры передаваемого аудио не отображаются в пользовательском интерфейсе, а производители наушников вольны выставлять свои настройки и никогда не указывают значение Bitpool в технических характеристиках товара, кодек прославился низким качеством звука, хоть это и не проблема кодека как такового.
Параметр Bitpool прямо влияет на битрейт только в одном профиле. Одно и то же значение Bitpool 53 может давать как битрейт 328 кбит/с при рекомендованном профиле High Quality, так и 1212 кбит/с с Dual Channel и 4 частотными полосами, из-за чего авторы ОС , помимо ограничений на Bitpool, устанавливают ограничение еще и на Bitrate. Как мне видится, такая ситуация возникла из-за недоработки стандарта A2DP: нужно было согласовывать битрейт, а не Bitpool.

Таблица поддержки возможностей SBC в разных ОС:

ОС Поддерживаемая частота дискретизации Ограничение макс. Bitpool Ограничение макс. Битрейт Типичный битрейт Динамическая подстройка Bitpool
Windows 10 44,1 кГц 53 512 кбит/с 328 кбит/с ✓*
Linux (BlueZ + PulseAudio) 16, 32, 44,1, 48 кГц 64 (при входящем подключении), 53 (при исходящем) Нет ограничения 328 кбит/с ✓ *
macOS High Sierra 44,1 кГц 64, по умолчанию 53 *** Неизвестно 328 кбит/с
Android 4.4-9 44.1/ 48 кГц ** 53 328 кбит/с 328 кбит/с
Android 4.1–4.3.1 44. 1, 48 кГц ** 53 229 кбит/с 229 кбит/с
Blackberry OS 10 48 кГц 53 Нет ограничения 328 кбит/с

* Bitpool только уменьшается, но не увеличивается автоматически, в случае улучшения условий передачи. Для восстановления Bitpool нужно остановить воспроизведение, подождать пару секунд и заново запустить аудио.
** Значение по умолчанию зависит от настроек стека, указанной при компиляции прошивки. В Android 8/8.1 частота либо либо 44,1 кГц, либо 48 кГц, в зависимости от настроек при компиляции, остальные версии поддерживают 44,1 кГц и 48 кГц одновременно.
*** Значение Bitpool можно поднять в программе Bluetooth Explorer.

aptX и aptX HD

aptX — простой и вычислительно быстрый кодек, без психоакустики , использующий адаптивную дифференциальную импульсно-кодовую модуляцию (ADPCM). Появился примерно в 1988 году (дата подачи патента датирована февралём 1988 г.), до Bluetooth использовался преимущественно в беспроводной аудиоаппаратуре, ISDN , кинотеатрах. На данный момент принадлежит компании Qualcomm, требует лицензирования и лицензионных отчислений. По состоянию на 2014 год: $ 6000 единовременно и ≈ $ 1 за каждое устройство, для партий до 10000 устройств (источник, стр. 16).
aptX и aptX HD — один и тот же кодек, с разными профилями кодирования. # br>
У кодека есть только один параметр — выбор частоты дискретизации. Ещё есть, правда, выбор количества/режима каналов, но во всех известных мне устройствах (70+ штук) Stereo.

Кодек Частота дискретизации Разрядность Битрейт Поддержка кодирования Поддержка декодирования
aptX 16, 32 , 44.1, 48 кГц 16 бит 128/256/352/384 кбит/с (в зависимости от частоты дискретизации) Windows 10 (десктопная и мобильная), macOS, Android 4.4 +/7 *, Blackberry OS 10 Широким числом аудиоустройств (аппаратно)

* Версии до 7 требуют модификации Bluetooth-стека. Кодек поддерживает, только если производитель Android-устройства лицензировал использование кодека у Qualcomm (если в ОС есть библиотеки кодирования).

aptX разделяет аудио на 4 частотных полосы и квантует их одним и тем же битами постоянно: 8 бит для 0-5,5 кГц, 4 бита для 5,5-11 кГц, 2 бита для 11-16,5 кГц, 2 бита для 16,5-22 кГц (цифры для частоты дискретизации 44,1 кГц).

Пример aptX-аудио (вверху — исходный сигнал, внизу — aptX, спектр только левых каналов, звук во FLAC):

Верхние частоты стали немного краснее, но разницы не слышно.

Из-за фиксированного распределения битов квантования, кодек не может «перенести биты» на те частоты, которые больше всего в них нуждаются. В отличие от SBC, aptX не будет «обрезать» частоты, уменьшая динамический диапазон аудио.

Не следует считать, что использование, например, 2 бит для полосы уменьшает динамический диапазон до 12 дБ: ADPCM позволяет использовать до 96 дБ динамического диапазона даже при использовании 2 бит квантования, но только при определенном сигнале.
ADPCM хранит разницу числового представления между текущим и следующим отсчетом, вместо абсолютного значения, как в PCM. Это позволяет уменьшить требования к количеству, необходимой для хранения такой же (без потерь) или практически такой же информации (с относительно небольшой ошибкой округления) информации. Для уменьшения ошибок округления применяются таблицы коэффициентов.
При создании кодека, рассчитывали коэффициенты ADPCM на на музыкальных аудиофайлов. Чем ближе аудиосигнал к тому набору музыки, на которых строились таблицы, тем меньше ошибок квантования (шумов) создает aptX.

Из-за этого синтетические тесты всегда будут давать результат хуже, чем музыка. Я сделал специальный синтетический пример, на котором aptX показывает плохие результаты — синусоида 12.4 кГц (вверху — исходный сигнал, внизу — aptX. Звук во FLAC. Уменьшите громкость!):

График Облег:

Отчетливо слышны шумы.

Однако, если сгенерировать синусоиду с меньшей амплитудой, чтобы она была тише, шумы также стали тише, что говорит в широком динамическом диапазоне:

Чтобы услышать разницу между оригинальным музыкальным треком и атакым, можно инвертировать один из сигналов и сложить треки поканально. Такой подход, в общем случае, некорректен, и не давал бы вменяемого результата с более сложными кодеками, но конкретно для ADPCM вполне подходит.
Разница между оригиналом и aptX
Среднее квадратическое разницы сигналов находится на уровне — 37,4 дБ, что не много для такой компрессированной музыки.

aptX HD

aptX HD не является самостоятельным кодеком — это улучшенный профиль кодирования кодека aptX. Изменения коснулись количества бит, отведенных для кодирования частотных диапазонов: 10 бит для 0-5,5 кГц, 6 бит для 5,5-11 кГц, 4 бита для 11-16,5 кГц, 4 бита для 16,5-22 кГц (для 44,1 кГц цифры).

Кодек Частота дискретизации Разрядность Битрейт Поддержка кодирования Поддержка декодирования
aptX HD 16, 32, 44.1, 48 кГц 24 бита 192/384/529/576 кбит/с (в зависимости от частоты дискретизации) Android 8 + * Некоторыми аудиоустройствами (аппаратно)

* Версии до 7 требуют модификации Bluetooth-стека. Кодек поддерживается, только если производитель Android-устройства лицензировал использование кодека у Qualcomm (если в ОС есть библиотеки кодирования).

Менее распространён, чем aptX: по всей видимости , требует отдельного лицензирования у Qualcomm, и отдельных лицензионных отчислений.

Повторим пример с синусоидой на 12.4 кГц:

Гораздо лучше, чем с aptX, но всё равно шумновато.

aptX Low Задержка

Low Latency-версия aptX не является самостоятельным кодеком, а отличается только настройками задержки и буферов, которые применяются на стороне аудиоустройства. В остальном это обычный aptX.
Кодек предназначенной для интерактивной передачи аудио с низкой задержкой (фильмы, игры), там, где задержка звука не может подстраиваться программно. Софтовая реализация в виде драйвера Dell для Bluetooth-чипов Intel. Также предоставлены трансмиттерами, ресиверами, наушниками и колонками, но не смартфонами.

Частота дискретизации Битрейт Поддержка кодирования Поддержка декодирования
44,1 кГц 352 кбит/с Windows 10 с драйвером Dell и некоторыми трансмиттерами (аппаратно) Некоторыми аудиоустройствами (аппаратно)

AAC

AAC, или Advanced Audio Coding — вычислительно сложный кодек, с серьезной психоакустической моделью. Получил широкое распространение для аудио в интернете, второе по использованию после MP3. Требует лицензирования и лицензионных отчислений: 15000 долларов единовременно (или 1000 долларов для компаний с менее 15 работниками) + 0,98 доллара за первые 500000 устройств (источник).
Кодек стандартизирован в рамках спецификаций MPEG-2 и MPEG-4, и вопреки частому заблуждению , не принадлежит Apple.

Частота дискретизации Битрейт Поддержка кодирования Поддержка декодирования
8 — 96 кГц 8 — 576 кбит/ с (для стерео), 256 — 320 кбит/с (типичный для Bluetooth) macOS, Android 7 + *, iOS Широким числом аудиоустройств (аппаратно)

* только на устройства, производители заплатили лицензионные отчисления

В iOS и macOS используется лучший на сегодняшний день кодировщик Apple AAC, максимально возможное качество аудио. В Android используется второй по иному кодировщик Fraunhofer FDK AAC, но они сами объявили аппаратные платформу (SoC), с неизвестным качеством кодирования. По недавним тестам сайта SoundGuys, качество кодирования AAC разными Android-телефонами сильно отличается:

У беспроводных аудиоустройств для AAC установлен максимальный битрейт 320 кбит/с, некоторые только 256 кбит с. Остальные битрейты встречаются крайне редко.
AAC обеспечивает отличное качество на битрейтах 320 и 256 кбит/с, но подвержен потерям последовательного кодирования уже сжатого контента, однако, услышать какие-либо различия с оригиналом на iOS при битрейте 256 кбит/с сложно даже при последовательном кодировании, при одиночном кодировании, например, MP3 320 кбит/с AAC 256 кбит/с потерями можно пренебречь.
Как и в случае с другими Bluetooth-кодеками, любая музыка сначала декодируется, кодируется кодеком. При прослушивании музыки в формате AAC она сначала декодируется средствами ОС, затем кодируется в AAC еще раз, для передачи по Bluetooth. Это необходимо для микширования нескольких аудиопотоков, например, музыки и уведомления о новом сообщении. iOS — не исключение. В интернете можно найти множество утверждений о том, что на iOS музыка в формате AAC не транскодируется при передаче через Bluetooth, что неверно.

В стандарте AAC есть множество расширений стандартного метода кодирования. Одно из них — Scalable To Lossless (SLS) — стандартизировано для Bluetooth и передавать аудио без потерь (без потерь). Увы, на реальных устройствах поддержка расширения не встречается. Расширение для уменьшения задержки передачи AAC-LD (Low Delay) не стандартизировано для Bluetooth.

MP1/2/3

Кодеки семейства MPEG- 1/2 Часть 3 состоят из известного и широкоиспользуемого MP3, менее распространенного MP2 (преимущественно в цифровом ТВ и радио), и совсем неизвестного MP1.

Старые кодеки MP1 и MP2 не поддерживаются совсем: мне Не удалось найти ни одни наушники и ни один Bluetooth-стек, который бы кодировал или декодировал их.
Декодирование MP3 некоторыми некоторыми наушниками, но кодирование не поддерживается в одном из современных операционных систем. Вроде бы, сторонний стек BlueSoleil для Windows может кодировать в MP3, если вручную изменить файл конфигурации, но у меня его установка приводит к BSoD в Windows 10. Вывод — кодеком фактически нельзя использовать для Bluetooth-аудио.
Раньше, в 2006–2008 годы, до распространения стандарта A2DP в устройствах, люди слушали MP3-музыку на гарнитуре Nokia BH-501 через программу MSI BluePlayer, которая была доступна на Symbian и Windows Mobile. В то время архитектура ОС смартфонов позволяет получать многим низкоуровневым функциям, а на Windows Mobile вообще можно было установить сторонние Bluetooth-стеки.

Последний патентный кодека MP3 истёк, использование кодека не требует лицензионных отчислений с 23 апреля 2017 года.

Если принять в качестве меры самый длительный патент, упомянутый в вышеупомянутых ссылках, то технология MP3 стала свободной от патентов в США. 16 апреля 2017 г., когда истек срок действия патента США № 6 009399, которым владеет и управляет Technicolor.

Источник: www.iis.fraunhofer.de/en/ff/amm/prod/ audiocodec/audiocodecs/mp3.html

le>

LDAC

Новый и активно продвигаемый «Hi-Res» -кодек от Sony, поддерживающий частоту дискретизации до 96 кГц и 24-битовую разрядность, с битрейтом до 990 кбит/с. Рекламируется в аудиофильского кодека, как замена выполняющим Bluetooth-кодекам. Имеет функцию адаптивной подстройки битрейта, в зависимости от условий радиоэфира.

Энкодер LDAC (libldac) входит в стандартную поставку Android, поэтому кодирование поддерживается на любом Android-смартфоне, начиная с 8 версии ОС. Программные декодеры в свободном доступе отсутствуют, спецификация кодека недоступна для широкой публики, однако по первому взгляду на энкодер, внутреннее устройство схоже с ATRAC9 — кодеком от Sony, используемом в PlayStation 4 и Vita: оба работают в частотном диапазоне, используют модифицированное дискретное косинус-преобразование (MDCT) и сжатие с применением алгоритма Хаффмана.
LDAC разделение на 12 или 16 частотных полос: 12 используется для 44.1 и 48 кГц, 16 — для 88.2 и 96 кГц.

Поддержка LDAC представлена ​​практически только наушниками от Sony. Возможность декодирования LDAC иногда встречается на наушниках и ЦАП других производителей, но очень редко.

Частота дискретизации Битрейт Поддержка кодирования Поддержка декодирования
16 — 48 кГц 8 — 320 кбит/с Нигде не поддерживается Некоторыми аудиоустройствами (аппаратно)
Частота дискретизации Битрейт Поддержка кодирования Поддержка декодирования
44.1 — 96 кГц 303/606/909 кбит/с (для 44.1 и 88. 2 кГц), 330/660/990 кбит/с (для 48 и 96 кГц) Android 8+ Некоторыми наушниками Sony и единичными устройствами других производителей (аппаратно )

Маркетинг LDAC в качестве Hi-Res-кодека вредит его технической составляющей: глупо расходовать битрейт на передачу не слышимых человеческим ухом частот и повышенную разрядность, покуда его не хватает для передачи CD-качества (44.1/16) без потерь. К счастью, у кодека есть два режима работы: передача CD-аудио и передача Hi-Res-аудио. В первом случае по воздуху передаётся только 44.1 кГц/16 бит.

Так как программного декодера LDAC нет в свободном доступе, протестировать кодек без дополнительных устройств, раскодирующих LDAC, невозможно. По результатам теста LDAC на ЦАП с его поддержкой, который подключили инженеры сайта SoundGuys.com через цифровой выход и записали выдаваемый звук на тестовых сигналах, LDAC 660 и 990 кбит/с в режиме CD-качества обеспечивают соотношение сигнал/шум немногим лучше такового у aptX. HD. Это хороший результат.


Источник: www.soundguys.com/ldac-ultimate-bluetooth-guide-20026

LDAC также поддерживает динамический битрейт вне Профилей — от 138 кбит/с до 990 кбит/с, но, насколько могу судить, в Android используются только стандартизированные профили 303/606/909 и 330/660/990 кбит/с.

Прочие кодеки

Другие A2DP-кодеки не получили широкого распространения. Их поддержка либо практически отсутствует, либо имеется только на определенных моделях наушников и смартфонов.
Стандартизированный кодек ATRAC в A2DP ни разу не использовался в качестве Bluetooth-кодека даже самими Sony, кодеки Samsung HD, Samsung Scalable и Samsung UHQ- BT имеют очень ограниченную поддержку со стороны передающих и получающих устройств, а HWA LHDC — слишком новый, и поддерживает всего три (?) Устройства.

Не все производители публикуют точную информацию о кодеках которые, те или другие беспроводные наушники, колонки, ресиверы или трансмиттеры. Иногда бывает так, что поддержка определенного кодека есть только на передачу, но не на приём (актуально для комбинированных трансмиттеров-ресиверов), хотя производитель заявляет просто о «поддержке», без примечаний (предполагаю, в этом виновато раздельное лицензирование энкодеров и декодеров некоторых кодеков) ). В самых мобильных устройствах можно не использовать заявленную поддержку aptX.

К сожалению, в интерфейсах ОС нигде не отображается используемый кодек. Информация об этом есть только в Android, начиная с 8 версии и macOS. Однако даже в этих ОС будут работать только те кодеки, которые поддерживают как телефон/компьютер, так и наушники..

Как же узнать, какие кодеки поддерживает устройство? Самый надежный вариант — записать и проанализировать анализ трафика с учетом согласования A2DP!
Сделать это можно в Linux, macOS и Android. В Linux можно использовать инструмент Wireshark или hcidump, в macOS — Bluetooth Explorer, в Android — штатное использование Bluetooth HCI-дампа, доступное в разработчиках. Вы получите дамп в формате btsnoop, который можно загрузить в анализатор Wireshark.
Обратите внимание : корректный дамп можно получить только подключившись с телефона/компьютера к наушникам/колонке (как бы курьёзно это ни звучало)! Наушники могут самостоятельно установить соединение с телефоном, и в этом случае они будут запрашивать список кодеков у телефона, а не наоборот. Чтобы гарантированно корректно записать, сначала разорвите сопряжение с записью дампа, сопрягите телефон с наушниками.

Используйте следующий фильтр отображения, чтобы отсеять нерелевантный трафик:

btavdtp.signal_id 

В результате вы должны увидеть что-то похожее:

На каждую команду команды GetCapabilities можно нажать, и посмотреть подробные характеристики кодека.

Wireshark знает не все системы кодеков, поэтому часть кодеков придётся расшифровывать вручную, смотря в таблицу указателей ниже:

  Обязательно: 0x00 - SBCO Необязательно: 0x01 - MPEG-1,2 (он же MP3) 0x02 - MPEG-2,4 (он же AAC) 0x04 - ATRAC Зависит от поставщика: 0xFF 0x004F 0x01 - aptX0xFF  0x00D7 0x24 - aptX HD0xFF 0x000A 0x02 - низкая задержка aptX 0xFF 0x00D7 0x02 - низкая задержка aptX 0xFF 0x000A 0x01 - FastStream0xFF 0x01  2D 0xAA - LDAC0xFF 0x0075 0x0102 - Samsung HD0xFF 0x0075 0x0103 - Масштабируемый кодек Samsung 0xFF 0x053A 0x484C - Savitech LHDC0xFF 0x000A 0x0104 - Кодек CSR True Wireless Stereo v3 ID для беспроводной сети AAC0xFF 0x 0x - Кодек CSR True Wireless ID для AAC0xFF 0x  CSR True Wireless Stereo v3 Codec ID для aptX  

Узнать, поддерживает ли ваше устройство скорости передачи EDR 3 мбит/с, можно фильтром:

  bthci_evt.code == 0x0b  

не анализирует дампы вручную, я сделал сервис, который проанализирует всё автоматически: btcodecs.valdikss.org.ru

Для Windows есть простая но полезная утилита Bluetooth Tweaker, которая, в том числе прочего, показывает текущие и поддерживаемые кодеки.
В Linux также можно использовать программу avinfo, входящую в состав BlueZ.

У каждого кодека есть свои преимущества и недостатки.
aptX и aptX HD исп ользуют жестко заданные профили, которые нельзя изменить без модификации энкодера и декодера. Ни производитель телефона, ни производитель наушников не в силах изменить битрейт или коэффициенты кодирования aptX. Владелец кодека, Qualcomm, выдаёт референсный энкодер в виде библиотеки.

SBC, напротив, множество настраиваемых параметров, динамический битрейт (энкодер может уменьшать) Эти факты — сильная сторона aptX — вы наперед знаете, какого качества звука вы получите, без каких-либо «но». параметр bitpool, если радиоэфир загружен), и не имеет жестко заданных профилей, рекомендованы «среднее качество» и «высокое качество», которые добавлены в спецификацию A2DP в 2003 году. «Высокое качество» уже не такое высокое по современным меркам, что большинство Bluetooth-стеков не позволяют использовать параметры, чем в профиле «высокое качество», хоть технические ограничения для этого отсутствуют.
Bluetooth SIG не имеет референсного энкодера SBC в виде библиотеки, и производители реализуют его самостоятельно.
Это — слабые стороны SBC — никогда наперед не ясно, какого качества звука ожидать от конкретного устройства. SBC может выдавать как низкое, так и очень высокое качество звука, но последнее недостижимо без отключения или обхода искуственных ограничений Bluetooth-стеков.

С AAC неоднозначная: с одной стороны, теоретически кодек должен выдавать качество , неотличимое от оригинала, но практикой, судя по тестам лаборатории SoundGuys на разных Android-устройствах, это не подтверждено. Вероятнее всего, вина на низкокачественных аппаратных аудиоэнкодерах, встроенных в различные чипсеты телефонов. Имеет использовать AAC только на устройствах Apple, а на Android ограничивает aptX и LDAC.

Аппаратура, поддерживающая альтернативные кодеки, как правило, более высокого качества, просто потому, что для совсем дешевых низкокачественных устройств не имеет смысла лицензионные отчисления для использования этих кодеков. По моему тестам, SBC звучит очень хорошо на качественной аппаратуре.

Я сделал веб-сервис, кодирующий аудио в SBC, aptX и aptX HD в реальном времени, прямо в браузере. С его помощью вы сможете тестировать эти аудиокодеки без фактической передачи аудио по Bluetooth, на любых проводных наушниках, колонках и вашей любимой музыке, а также параметры кодирования прямо во время воспроизведения аудио:
btcodecs.valdikss.org.ru /sbc-encoder
Сервис использует библиотеки кодирования SBC из проекта BlueZ и libopenaptx из ffmpeg, которые скомпилированы в WebAssembly и JavaScript из C, через emscripten, для выполнения в браузере. Кто мог мечтать о таком будущем!

Вот как это выглядит:

Обратите внимание, как меняется уровень шума после 20 кГц у разных кодеков. В оригинальном MP3-файле частоты выше 20 кГц отсутствуют.

Попробуйте попереключать кодеки и оценить, услышите ли вы разницу между оригиналом, SBC 53 Joint Stereo (стандартный и наиболее распространенный профиль) и aptX/aptX HD.

Я слышу разницу между кодеками в наушниках !

Люди, которые не слышат разницы между кодеками во время тестирования через веб-сервис, уверяют, что слышат её при прослушивании музыки в беспроводных наушниках. Увы, это не прикол и не эффект плацебо: разница действительно слышна, однако вызвана она не отличиями кодеков .

Подавляющее большинство чипсетов Bluetooth-аудио, используемых в принимающих беспроводные устройства, оснащаются цифровым обработчиком (цифровым сигнальным процессором, DSP), который реализует другие сигналы эквалайзер, компандер , расширителем и стерео вещи, улучшенные (или изменить) звук. Производители Bluetooth-аппаратуры могут настроить DSP для каждого кодека раздельного , и при переключении между кодеками слушателя будет казаться, что он слышит различие работы кодеков, когда в действительности он слушает настройки DSP. >

Конвеер обработки звука DSP Kalimba в чипах производства CSR/Qualcomm


Активация различных функций DSP для каждого кодека и выхода отдельно

Некоторые устройства премиального сегмента комплектуются программой, позволяющей настраивать параметры DSP, но большинство более дешевых наушников не имеют таких возможностей, пользователи не могут отключить пост-процессинг звука штатными средствами.

Функциональные особенности устройств

Современная версия стандарта A2DP имеет функцию «абсолютной громкости громкости» — управление громко стью устройства специальными командами протокола AVRCP, которое регулируется усиление выходного каскада, вместо уменьшения громкости аудиопотока. Это означает, что ваши наушники не синхронизируются с громкостью на телефоне. В таком случае, имеет смысл слушать музыку всегда с максимальной громкостью на телефоне, регулируемая фактическая громкость кнопками наушников — в этом случае соотношение сигнал/шум будет лучше, и качество аудио должно быть выше.
В реальности же бывают печальные ситуации. На моих наушниках RealForce OverDrive D1 для SBC включен сильный компандер, и увеличение громкости приводит к повышению уровня тихих звуков, а громкость громких звуковых сигналов при этом не меняется (происходит компрессия компрессия). Из-за этого приходится устанавливать громкость на компьютере в половину, в этом случае эффекта компрессии практически нет.
По моим наблюдениям, все наушники с дополнительными кодеками функции абсолютной громкости подключения, видимо, это одно из требований для сертификации кодеков.

Некоторые наушники двух устройств одновременно. Это позволяет, например, слушать музыку с компьютера и принимать звонки с телефона.

Функция AVDTP 1.3 Delay Reporting позволяет наушникам сообщать задержку передающему устройству, с помощью которой можно узнать, что в этом режиме отключаются альтернативные кодеки, и используется только SBC. фактически воспроизводится звук. Это позволяет подстраивать синхронизацию аудио с видео во время просмотра видео: при проблемах с передачей по радиоэфиру, аудио не будет отставать от видео, а наоборот, видео будет тормозиться видеоплеером, пока аудио и видео снова не синхронизируются.
наушниками, Android 9+ и Linux с PulseAudio 12.0+.

Для передачи голоса в Bluetooth используется синхронная передача голоса (SCO) и его улучшенная версия Enhanced Synchronous Connection Oriented (eSCO) — синхронная передача с предварительным согласованием соединения. Режим позволяет передавать звук и голос строго по порядку, с симметричной скоростью отправки и приёма, без ожидания подтверждения передачи и переотправки пакетов. Это понижает общую задержку передачи аудио через радиоканал, но накладывает серьёзные ограничения на количество передаваемых данных за единицу времени и отрицательно сказывается на аудио.
используется этот режим, и звук с микрофона, и аудио в наушники передаются с одинаковым качеством. .
Передача данных самих стандаризируется профилем HSP, также описывающими дополнительные функции, вроде работы кнопок регулировки громкости, поднятия и отбоя.
К сожалению, по состоянию на 2019 год, качество передачи речи через Bluetooth всё ещё низкое, и непонятно, почему Bluetooth SIG с этим ничего не делает.

CVSD

Базовый кодек передачи речи CVSD был стандартизирован в 2002 году и поддерживайте всеми устройствами двунаправленной связи через Bluetooth. Он обеспечивает передачу аудио с частотой дискретизации в 8 кГц, что соответствует качеству обычной проводной телефонии.

Пример записи в этом кодеке.

mSBC

Дополнительный кодек mSBC был стандартизирован в 2009 году, а в 2010 году уже появились чипы, использующие его для передачи голоса. mSBC широко распространенные устройства.
Это не самостоятельный кодек, обычный SBC из стандарта A2DP, с фиксированным профилем кодирования: 16 кГц, моно, bitpool 26.

Пример записи в этом кодеке.

Не блеск, но гораздо лучше, чем CVSD, однако всё ещё неприятно использовать его для общения через интернет, особенно, когда вы используете наушники для общении в игре — звук игры тоже будет передаваться с дискретизации в 16 кГц.

FastStream

Компания CSR решила развить идею переиспользования SBC. Чтобы обойти ограничения протокола SCO и использовать более высокие битрейты, CSR пошли другим путём — внедрили поддержку двустороннего SBC-аудио в стандарт передачи одностороннего аудио A2DP, стандартизировали профили кодирования и назвали это «FastStream».

FastStream передает в динамики стереозвук 44.1 или 48 кГц с битрейтом в 212 кбит/с, а для передачи аудио с микрофона используется моно, 16 кГц, с битрейтом 72 кбит/с (чуть лучше, чем у mSBC). Такие параметры гораздо лучше подходят для общения в онлайн-играх — звук игры и собеседников будет качественный.

Пример записи в этом кодеке (+ звук с микрофона, такой же, как у mSBC).

Компания придумала интересный костыль, но из-за того, что он противоречит стандарту A2DP, его поддержка есть только в некоторых трансмиттерах компании (которые работают как USB-аудиокарта, а не Bluetooth-устройство), но поддерживают в Bluetooth-стеках он не получил, хотя количество наушников с поддержкой FastStream не такое уж и малое.

На данный момент поддержка FastStream в ОС есть только в виде патча для Linux’ового PulseAudio от разработчика Pali Rohár, который не включен в основную ветку программы.

aptX Low Latency

К большому удивлению, aptX Low Latency тоже поддерживает двунаправленное аудио, реализуя такой же принцип, как у FastStream.
Использовать эту особенность кодека не получится нигде — поддержки декодирования с низкой задержкой нет ни в одной О С и ни в одном известном мне Bluetooth-стеке.

Вокруг спецификаций и версий Bluetooth возникла большая путаница из-за наличия двух несовместимых стандартов под одним брендом, оба из которых широко применяются Для разных целей.

Существует два разных, не совместимых между собой протокола Bluetooth: Bluetooth Classic и Bluetooth Low Energy (LE, он же Bluetooth Smart). Еще есть третий протокол, Bluetooth High Speed, но он не распространяется, и не используется в бытовых устройствах.

Начиная с Bluetooth 4.0, изменения в спецификации касались преимущественно Bluetooth Low Energy, классическая версия получала только незначительные улучшения.

Список изменений между Bluetooth 4.2 и Bluetooth 5:

9 ИЗМЕНЕНИЙ ОТ v4.2 ДО 5.0

9.1 НОВЫЕ ВОЗМОЖНОСТИ

В версии 5.0 спецификации ядра Bluetooth представлены несколько новых функций. Основные области улучшения:
• Маска доступности слотов (SAM)
• 2 Мсим/с PHY для LE
• LE Long Range
• Высокий рабочий цикл Реклама без подключения
• Рекламные расширения LE
• Алгоритм выбора канала LE № 2
9.1. 1 Функции, добавленные в CSA5 — интегрированы в v5.0
• Повышенная выходная мощность

Источник: www.bluetooth.org/docman/handlers/DownloadDoc.ashx? doc_id = 421043 (страница 291)

Только одно изменение коснулось Classic-версия в рамках спецификации Bluetooth 5: добавили поддержку технологии Slot Availability Mask (SAM), призванное улучшение разделение радиоэфира. Все остальные аудио структуры используют только Bluetooth LE (и более высокая выходная мощность тоже).

Все устройства используют только Bluetooth Classic. Наушники и колонки подключить через Bluetooth Low Energy невозможно: не существует стандарта передачи аудио с использованием LE. Стандарт A2DP, использует для передачи высококачественного аудио, работает только через Bluetooth Classic, и аналога в LE ему не существует.

Вывод — приобретать аудиоустройства с Bluetooth 5 только из-за новой версии протокола бессмысленно. Bluetooth 4.0/4.1/4.2 в контексте передачи аудио будет работать точно так же.
Если анонс новых наушников обнаруживает удвоенный радиус работы и уменьшенное энергопотребление благодаря Bluetooth 5, то знайте — они либо сами не разбираются, либо вводят вас в заблуждение . Немудрено, ведь даже производители Bluetooth-чипов в своих анонсах путаются в отличиях новой версии стандарта, а некоторые Bluetooth-чипы пятую версию только для LE, а для Classic используют используют 4.2.

Величина задержки ( запаздывания) аудио зависит от многих факторов: размер буфера в аудиостеке, в самом воспроизводящем беспроводном устройстве, алгоритмической задержке кодека.

Задержка простых кодеков, вроде SBC, aptX и aptX HD, совсем небольшая, и составляет 3-6 мс, чем можно пренебречь, но комплексные кодеки, вроде AAC и LDAC, могут давать ощутимое запаздывание. Алгоритмическая задержка AAC для 44.1 кГц составляет 60 мс. LDAC — около 30 мс (по грубому анализу исходного кода. Могу ошибаться, но не сильно.)

Итоговая задержка сильно зависит от воспроизводящего устройства, его чипсета и буфера. Во время тестов я получил разброс от 150 до 250 мс на разных устройствах (с кодеком SBC). Если предположить, что устройство с поддержкой дополнительных кодеков aptX, AAC и LDAC используют качественные компоненты и маленький размер буфера, то получим следующие типы задержки:

SBC: 150-250 мс
aptX : 130-180 мс
AAC: 190-240 мс
LDAC: 160-210 мс

Напоминаю: aptX Low Latency не поддерживается в операционных системах, из- за чего меньшую задержку можно получить только связкой трансмиттер + ресивер или трансмиттер + наушники/колонка, причём все устройства должны поддерживать этот кодек.

Как отличить качественное аудиоустройство от дешёвой поделки? По внешнему виду, прежде всего!

У дешевых китайских наушников, колонок и ресиверов:

  1. Отсутствует слово «Bluetooth» на коробке и устройстве , чаще всего используется «Wireless» и «BT»
  2. Отсутствует логотип Bluetooth на коробке или устройстве
  3. Нет синего мигающего светодиода

Отсутствие этих элементов говорит о том, что устройство не проходит сертификацию, а значит — такое проблемное или низкокачественное. Например, наушники фирмы Bluedio не сертифицированы Bluetooth, и не соответствуют спецификации A2DP.

Рассмотрим несколько устройств и коробок от них:

Это всё — несертифицированные устройства.

Если наушники или колонка говорят «Ze bluetooth dewise подключен успешно», это тоже не говорит об их:

Способен ли Bluetooth полностью заменить проводные наушники и гарнитуры? Способен, но ценой низкого качества в режиме разговора, увеличенной задержкой передачи звука, которая может раздражать в играх, множестве проприетарных кодеков, требующихся лицензионных отчислений и увеличивающих конечную стоимость как смартфонов, так и наушников.

Маркетинг альтернативных кодеков очень сильный: aptX и LDAC представляют в виде долгожданной замены «устаревшего и плохого» SBC, который далеко не так плох, как о нём думать, принято.

Как выяснилось, искусственные ограничения Bluetooth- стеков на битрейт SBC можно обойти, так что SBC не будет уступать aptX HD. Я взял в свои руки и сделал патч для прошивки LineageOS: Модифицируем Bluetooth-стек для улучшения звука на наушниках без кодеков AAC, aptX и LDAC

Больше информации можно найти на сайтах SoundGuys и SoundExpert.

Бонус: референсный энкодер SBC, информация о битстриме A2DP и ​​тестовые файлы. Этот файл раньше был выложен на сайте Bluetooth публично, но теперь он доступен только для вступивших в Bluetooth SIG.

Дополнительная статья : Bluetooth LC-SBC и SBC- Объяснение HBR от Кена Лаберто.

Оцените статью
techsly.ru
Добавить комментарий