как поменять кодек bluetooth наушников на windows

Уменьшаем задержку и повышаем качество звука по Bluetooth

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

Проблемы начинаются когда нужно чтобы устройство использовало это кодек. Казалось бы: купил наушники, подключил и наслаждаешься звуком. Ведь о тебе уже подумали — нет.

На iPhone, iPad — никак. На Android зависит от устройства. На компьютерах Mac проблем не будет, даже относительно старые модели со встроенным Bluetooth поддерживаю Aptx. Есть нюанс — нужно следить за тем, через какой кодек Mac передает звук на беспроводное аудиоустройство.

Когда используется не одно устройство, допустим клавиатура и наушники Mac отдает приоритет первому подключенному устройству. Подключенные после него наушники не получат Aptx. Проверить это легко: держите Option, нажимаете на иконку Bluetooth в верхнем баре, выбираете устройство и смотрите через какой кодек оно работает.

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

«Куплю самый новый и дорогой адаптер от фирмы, которая у всех на слуху и в нём всё будет» — Не-а, не будет.

Aptx запатентован Qualcomm. Мне не ясно почему, но многие производители не выпускают адаптеры с его поддержкой. Нужен адаптер на чипе CSR8510 от Qualcomm. Не буду говорить за все варианты на рынке, но Windows 10 подхватывает большинство адаптеров на этом чипе и сторонних драйверов устанавливать не нужно. Aptx будет работать сразу. Не буду называть брендов, скажу, что цены варьируются от 150-250р. на Али и до 500-700 в магазинах.

Решение кажется очевидным, но не тогда, когда ты пытаешься выбрать адаптер из десятков брендовых и ноунеймов. Когда ни у каких из них не указана поддержка Aptx по-человечески, ты видишь только тонны негативных отзывов, по большей части, о комплектных драйверах, которые на практике устанавливать нет необходимости. Aptx на Windows есть, он работает и имеет смысл, следуй за белым кроликом, как говорится (за чипом Qualcomm).

Источник

Разбираемся с аудио по Bluetooth на десктопных системах — какой кодек вам подойдет?

Беспроводной звук становится все популярнее, и я все чаще встречаю один вопрос — а как мне получить хорошее качество аудио по Bluetooth на Windows или macOS? Разумеется, вы можете купить первый попавшийся адаптер Bluetooth или просто подключить свои наушники к ПК, если на нем уже есть поддержка «синезуба», и вы точно сможете послушать музыку в стерео. Однако на деле кодек, по которому передаются аудиоданные, все же достаточно важен, и я писал об этом в одной из предыдущих статей (рекомендую с ней ознакомиться перед прочтением материала ниже). Поэтому давайте разберемся, как добиться качественного звука или же максимально снизить его задержку.

Что умеют современные системы по умолчанию?

Любые версии Windows 10 и любая macOS за последние 5 лет умеют работать с базовым кодеком SBC и «почти Audio CD» кодеком AptX (на любых Bluetooth-адаптерах). Также macOS умеет работать с неплохим психоакустическим кодеком AAC. Выбора кодека на Windows нет, также нет функционала, чтобы узнать текущий кодек (это умеют делать сторонние программы, например Bluetooth Tweaker, но они платные). Приоритет кодеков в ОС от Microsoft следующий: AptX > SBC. То есть, если ваши наушники поддерживают AptX, система также будет его использовать. Если ваши наушники поддерживают AptX, но вы хотите SBC — этого добиться невозможно.

На macOS все интереснее: приоритет кодеков по умолчанию тут AAC > AptX > SBC. То есть, если ваши наушники поддерживают и AptX, и AAC, будет использоваться последний кодек. Однако есть бесплатная программа под названием Bluetooth Explorer, где можно как менять приоритеты (например, сделать AptX > AAC > SBC), так и вообще отключить AAC и AptX, получая только SBC. Более того, здесь можно менять как bitpool, так и bitrate кодеков, то есть потенциально улучшая качество звука. Однако на деле это могут поддерживать не все наушники, и более высокий битрейт может сказаться на задержке и «дальнобойности».


На macOS можно достаточно тонко настроить звук по Bluetooth, но доступных кодека все равно только три.

По умолчанию как на Windows, так и на macOS кодек SBC имеет битрейт 328 кбит/c при 16 бит и 44.1 КГц. Кодек AptX — 352 кбит/c и 16 бит с 44.1 КГц. Что касается AAC, то его битрейт самый низкий, до 256 кбит/c при 16 бит, зато частота дискретизации выше, 48 КГц.

Я не хочу во всем разбираться и просто хочу послушать музыку, что мне делать?

Пожалуй, это самый массовый подход — хочется просто подключить наушники и слушать музыку. В таком случае вам не нужно делать. совсем ничего: любые наушники и любой Bluetooth-адаптер обязаны поддерживать протокол A2DP и базовый кодек SBC. Поэтому стереозвук вы получите в любом случае.

В таком случае имеет смысл смотреть в сторону AptX и AAC. Да, в теории эти кодеки должны давать сравнимое с SBC качество звука, но на практике многие компании настраивают DSP-процессор в своих наушниках на лучшую работу с «продвинутыми» кодеками, как итог — звук по AptX становится «объемнее и басистее», а на AAC появляется лучшая «детальность». Поэтому в народе бытует мнение, что тот же SBC сильно хуже, чем AptX: на деле слышимая разница обусловлена скорее различными настройками наушников, а не математическими различиями между кодеками.


Да, даже такой дешевый адаптер даст вам AptX на Windows 10. Но разумеется о его долговечности и качестве говорить не приходится.

Но, в любом случае, нам, как «конечным слушателям», не особо важно, как получается хороший звук, поэтому если вы слушаете обычную музыку в lossy-кодеках с битрейтом в 200-300 кбит/c, то имеет смысл остановиться на AptX и AAC. В случае с Windows 10 выбора у вас нет — система поддерживает только первый из них. В случае с macOS я бы предложил самостоятельно сравнить: в теории AAC лучше передает музыку с широкой сценой, где есть одновременно и женский вокал, и басы. AptX же лучше справляется с тяжелой музыкой типа рока или метала. Но опять же, конечный результат сильно зависит от настройки процессора в наушниках, поэтому лучше сравнить работу этих кодеков самостоятельно.

Напомню, что в данном случае вам не нужно покупать какой-то специальный адаптер для работы с AptX: любая версия Windows 10 умеет с ним работать на абсолютно любых USB-донглах, хоть с AliExpress за 200 рублей. Основная разница здесь будет только в дальнобойности: если у вас толстые стены и вы слушаете музыку за пределами своей комнаты, имеет смысл купить более дорогой адаптер с лучшей антенной.


По AAC нет никаких огромных задержек, все на уровне AptX.

Я хочу поиграть в наушниках без задержки, что делать?

На этом месте «компетенция» современных десктопных систем заканчивается. Получается, что придется играть по проводу? Нет. Есть кодек AptX-LL, который по качеству звука является абсолютной копией AptX, но при этом сквозная задержка не превышает 40 мс. Что забавно, это временами ощутимо ниже, чем если выводить звук по проводу с интегрированных аудиокарт от Realtek: в таком случае она нередко составляет 60-80 мс, то есть звук по Bluetooth оказывается даже лучше для игр.

Однако не все так просто. Как я уже сказал выше, современные системы не умеют работать с таким кодеком «из коробки», так что придется покупать внешние Bluetooth-адаптеры, которые десктопные ОС будут распознавать как USB-аудиокарты. Я могу выделить два неплохих: это Reiyin WT-04 и Avantree DG80. Первый дешевле, его можно найти на AliExpress за 1400 рублей. За второй придется отдать 2300, зато он дальнобойнее. Оба они имеют приоритет кодеков AptX-LL > AptX > SBC.


Достаточно простой китайский адаптер, который тем не менее умеет работать с AptX-LL.

Также важно понимать, что с точки зрения наушников AptX и AptX-LL это разные кодеки. Поэтому если ваше аудиоустройство поддерживает только AptX, никакой низкой задержки не будет, так что вам нужны наушники именно с поддержкой AptX-LL, а их на рынке не очень-то и много.

Я хочу получить максимально хороший беспроводной звук, что мне делать?

Начну, пожалуй, с самого главного: абсолютно все беспроводные кодеки, даже UAT с битрейтом в 1.2 мбит/c, являются lossy, то есть часть данных будет отсекаться при передаче. Да, разумеется тот же AptX с 352 кбит/c «выкинет» из музыки куда больше, чем LDAC с 990 кбит/c, но факт остается фактом: если вы хотите слушать музыку в неизменном виде, Bluetooth все еще не для вас.

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

В 2016 году компания Qualcomm представила AptX HD. 24 бит, 48 КГц, битрейт 576 кбит/с — короче говоря, «почти Hi-Fi». На деле, конечно, все слегка запутаннее. Во-первых, если вы слушаете 16-битную музыку, то разницы с AptX практически не будет: остальные 8 бит просто будут забиваться нулями, и кодек по сути превратится в 16 бит/48 КГц с битрейтом 384 кбит/c. Во-вторых, большинство USB-адаптеров с поддержкой AptX HD опять же работают в режиме 16 бит/48 КГц, и мне было забавно наблюдать за их владельцами, которые при таком подключении «слышали» разницу с обычным AptX. На деле, конечно, разницу-то они слышали, но опять же не между кодеками, а между настройками DSP-процессора в наушниках для разных кодеков,

В итоге единственный USB-адаптер с честным 24-битным AptX HD — это Avantree DG60 второй версии. Стоит он без малого 3000 рублей, зато имеет действительно дальнобойную антенну. И это самый простой способ попасть в мир беспроводного «почти Hi-Fi» звука. Получаемая при таком подключении задержка колеблется на уровне 150-200 мс: для фильмов терпимо, для игр скорее нет, чем да. И тут опять же есть важный момент: этот донгл имеет приоритет AptX HD > AptX-LL > AptX > SBC, но выбора между ними нет. Так что даже если ваши наушники умеют работать и с AptX HD, и AptX-LL, включить последний для игр вы не сможете.


Единственный адаптер с честным AptX HD.

Следующий на очереди — LDAC от Sony. 24 бит, 96 КГц, 990 кбит/c. Наушников с его поддержкой немного, и в основном это, сюрприз, достаточно дорогие решения от Sony. А раз наушников не очень много, то и отдельно создавать USB-донгл с поддержкой LDAC смысла мало, поэтому дешевого и простого способа получить поддержку этого кодека на десктопных ОС нет.

Ну и самый-самый максимальный кодек, доступный для получения на десктопных ОС — это UAT. 24 бит, 192 КГц, битрейт аж до 1.2 Мбит/c — выглядит внушительно. Однако на деле проблем с ним еще больше, чем с LDAC, по той простой причине, что это собственный кодек китайской компании HiBy, и работает он только с наушниками этой же компании. С одними наушниками. Да-да, только одними — TWS HiBy WH3. И вам нужен будет плеер типа HiBy W3, чтобы передавать на них музыку с ПК. С учетом того, что это внутриканальные наушники, смысла так заморачиваться скорее всего нет, так что этот абзац написан больше для «общего развития».


Достаточно неплохой китайский плеер, умеющий работать с LDAC и UAT, а также выступать внешней аудиокартой.

Вывод: беспроводной звук все еще остается в основном мобильным

В случае со смартфонами на Android проблем выше обычно нет совсем: даже не самые дорогие телефоны поддерживают широкий спектр кодеков от AAC до LDAC с возможностью выбрать любой из них, и вам всего лишь нужны наушники с поддержкой нужного кодека (или даже кодеков). А вот на десктопных ОС с этим все очень плохо: доступно лишь 2-3 кодека, причем на той же Windows 10 переключаться между ними нельзя.

И, что самое печальное, прогресс в этом направлении идет крайне медленно: так, например, возможность узнать заряд беспроводных наушников на ОС от Microsoft встроенными средствами появилась меньше года назад, а macOS вообще до сих пор не умеет это! Так что ожидать в ближайшее время каких-либо подвижек в этом направлении, увы, не стоит, а значит для получения качественного беспроводного звука вам все еще придется заморачиваться с донглами и DAC-плеерами.

Источник

Как получить высококачественный Bluetooth-звук на десктопных ОС

В последнее время выпускается все больше беспроводных наушников и смартфонов, лишенных 3.5 мм разъема, и последние приобретают все более навороченные Bluetooth-кодеки. Однако десктопные системы в этом плане куда более консервативные: тут практически все устройства продолжают оснащаться разъемом для наушников, да и провод мешает редко, поэтому с передачей звука по Bluethtooth тут все печальнее. Однако настраиваемость у ПК сильно выше, чем у смартфонов, поэтому если вы купили классные беспроводные наушники — не расстраивайтесь, вы сможете насладиться в них качественным звуком и под десктопными ОС.

В Linux, как обычно, разброд и шатания, но в среднем после установки драйверов на ваш BT-адаптер вы скорее всего получите все тот же SBC. Причем, к слову, это единственное семейство ОС, где решить проблему с высококачественным беспроводным звуком можно чисто программно, но об этом ниже.

В macOS все достаточно интересно: система поддерживает SBC, AAC и AptX, причем по умолчанию приоритет дается именно AAC, на втором месте AptX, ну и под конец SBC. Если ваши наушники поддерживают сразу несколько из этих кодеков, то можно выбрать интересующий вас, но об этом опять же ниже.

Добиваемся высококачественного звука по Bluetooth на Windows

Если вы сидите на Windows 7 или 8 и не хотите вкладывать в эту затею больше 1000 рублей — ваш выбор это AptX: конечно, система не поддерживает его по умолчанию, однако на том же AliExpress за 350 рублей можно найти USB-адаптер от Ugreen с поддержкой AptX, только нужно будет поставить драйвера CSR Harmony, которые легко находятся в интернете. В России аналоги стоит дороже, порядка 700 рублей — например, это Orico BTA-403 или Dexp AT-BT403A. Если вы все сделали правильно, то при подключении наушников с AptX будет всплывать окошко, уведомляющее об использовании этой технологии:

На Windows 10 с этим, очевидно, куда легче: система поддерживает AptX «из коробки», поэтому если ваш ПК не имеет поддержки Bluetooth, то можно подключить абсолютно любой USB BT-адаптер, хоть с Ali за 200 рублей, и все заработает. Если же у вас ноутбук с BT-адаптером, или же его поддержка есть на вашей материнской плате — вам вообще ничего делать не нужно. Но, увы, Windows 10 так и не умеет показывать, какой кодек сейчас используется, и даже если это AptX, то никакого всплывающего окошка не будет (что очевидно, ибо это по сути обратная разработка AptX от Qualcomm без всяких лицензионных отчислений последней). Поэтому придется или опираться на данные вашего BT-адаптера, если он умеет показывать кодек, или воспользоваться сторонней программой — например, Bluetooth Tweaker.

Но что делать, если вы хотите играть и вам требуется AptX LL, или же вы хотите более качественного звука — например, AptX HD или LDAC, и ваши наушники их поддерживают? В случае с AptX LL все достаточно просто — на Amazon или Ali по запросу «USB AptX LL» вам выпадет несколько USB-адаптеров: в случае с Китаем это скорее всего будет решение от Reiyin. Увы, тут несколькими сотнями рублей уже не отделаться — такие решения стоят от полутора тысяч рублей. Но, опять же, проблем с ними минимум: воткнули в любой USB-порт, поставили драйвера если нужно и вуаля, все работает.

В случае с AptX HD все еще сложнее: обычного USB-адаптера с его поддержкой нет в принципе, поэтому вам придется брать специальный Bluetooth трансмиттер — эдакую коробочку, которая подключается к ПК через 3.5 мм разъем или SPDIF и передает звук по BT. Решения с поддержкой AptX HD стоят на все том же Ali от полутора тысяч рублей, и тут я рекомендую брать «коробочку» от Vikefon, так как она имеет наглядную демонстрацию того, какой кодек используется при подключении. Из плюсов — не нужно абсолютно никаких драйверов, так что подключить такой трансмиттер можно к любому устройству с указанными выше выходами, моментально сделав его беспроводным. Из минусов — вы не сможете управлять музыкой кнопками на наушниках, и так же не будет работать микрофон на них.

И если вы думаете, что хуже некуда, то огорчу — трансмиттеров с поддержкой LDAC нет вообще. Единственный способ получить этот кодек на ПК это купить плеер, который одновременно может работать внешним ЦАП по 3.5 мм разъему, и при этом поддерживает LDAC. Самый дешевый такой плеер — это Shanling M0, который стоит около 6.5 тысяч рублей. Решать, стоит ли качественный беспроводной звук таких денег, только вам, я же порекомендую пользователям потоковых сервисов остановиться на AptX HD с оптимальным на мой взгляд балансом цены и качества звука.

Добиваемся высококачественного звука по Bluetooth на Linux

Системы, которые используют программисты, хороши тем, что на них можно заставить программно работать все то, что на других ОС требует покупки дополнительных «железок». Так, на Linux есть звуковой сервер — PulseAudio, который может брать звук от приложения и передавать его наушникам. И вот к нему «прикрутили» поддержку абсолютно всех BT-кодеков, начиная от AAC и заканчивая LDAC. Скачать этот модуль для PulseAudio и почитать инструкцию по его установке можно на GitHub.

Добиваемся высококачественного звука по Bluetooth на macOS

Как я уже говорил выше, из коробки поддерживаются два неплохих кодека для потоковых аудио сервисов — AAC и AptX. При желании, их можно настроить под себя: например, повысить битрейт AAC, или же по умолчанию заставлять наушники подключаться именно по AptX. Для этого вам понадобится программа Bluetooth Explorer, в которой все настройки достаточно интуитивны.

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

Но что делать, если хочется более качественного звука — например, AptX HD или LDAC? Увы, тут все даже немного хуже, чем на Windows: так, Bluetooth-адаптеры, подключающиеся по USB, с высокой долей вероятности не заработают. Поэтому единственный выход — это внешние Bluetooth трансмиттеры, подключаемые по 3.5 мм разъему, или же плееры в режиме ЦАП, подключаемые по нему же: подробнее о них можно почитать выше в разделе с Windows, тут все абсолютно идентично.

В итоге, как видите, десктопная техника не особо готова к беспроводному будущему: если большинство смартфонов уже из коробки имеют поддержку высококачественных кодеков, то на ПК (за исключением Linux) это практически всегда покупка дополнительных девайсов, стоящих зачастую ощутимых денег. Но, при желании, и тут можно получить даже LDAC — правда, отдав за это чуть ли не половину стоимости самих наушников с его поддержкой.

Источник

Модифицируем Bluetooth-стек для улучшения звука на наушниках без кодеков AAC, aptX и LDAC

Некоторые пользователи беспроводных наушников отмечают низкое качество звука и недостаток высоких частот при использовании стандартного Bluetooth-кодека SBC, который поддерживают все аудиоустройства. Частой рекомендацией для улучшения звука является покупка устройств и наушников с поддержкой кодеков aptX и LDAC. Эти кодеки требуют лицензионных отчислений, поэтому устройства с их поддержкой стоят дороже.

Оказывается, низкое качество SBC обусловлено искусственными ограничениями Bluetooth-стеков и настроек наушников, и это ограничение можно обойти на любых существующих устройствах, путём программных изменений смартфона или компьютера.

Кодек SBC

У кодека SBC есть множество разных параметров, которые согласуются на этапе установки соединения. Среди них:

Декодирующее устройство обязано поддерживать любое сочетание этих параметров. Кодирующее устройство может реализовывать не все.
Существующие Bluetooth-стеки, как правило, согласуют следующий профиль: Joint Stereo, 8 полос, 16 блоков, Loudness, bitpool 2..53. Этот профиль кодирует 44.1 кГц аудио с битрейтом 328 кбит/с.
Параметр bitpool напрямую влияет на битрейт в рамках одного профиля: чем он выше, тем выше битрейт, а следовательно и качество.
Однако параметр bitpool не привязан к конкретному профилю; влияние на битрейт также в значительной степени оказывает и другие параметры: тип каналов, количество частотных полос, количество блоков. Поднять битрейт можно косвенно, путем согласования нестандартных профилей, без изменения bitpool.

Формула подсчета битрейта SBC

Например, режим Dual Channel кодирует каналы раздельно, используя весь bitpool для каждого из каналов. Заставив устройство использовать Dual Channel вместо Joint Stereo, мы получим почти удвоенный битрейт при том же максимальном значении bitpool: 617 кбит/с.
По моему мнению, использование не привязанного к профилю значения bitpool на этапе согласования — недоработка стандарта A2DP, которая и привела к искусственному ограничению качества SBC. Разумней было бы согласовывать bitrate, а не bitpool.

Такие фиксированные значения Bitpool и Bitrate берут свое начало из таблицы с рекомендованными к использованию значениями для высококачественного аудио. Но рекомендация — не повод ограничиваться этими значениями.

Спецификация A2DP v1.2, которая была активна с 2007 по 2015 год, предписывает всем декодирующим устройствам корректно работать с битрейтами до 512 кбит/с:

The decoder of the SNK shall support all possible bitpool values that do not result in excess of the maximum bit rate. This profile limits the available maximum bit rate to 320kb/s for mono, and 512kb/s for two-channel modes.

В новой версии спецификации ограничение по битрейту отсутствует. Предполагается, что современные наушники, выпущенные после 2015 года и поддерживающие EDR, могут поддерживать битрейты до ≈730 кбит/с.

По какой-то причине, у проверенных мной Bluetooth-стеков Linux (PulseAudio), Android, Blackberry и macOS есть искусственные ограничения максимального значения параметра bitpool, который напрямую влияет на максимальный битрейт. Но это — не самая большая проблема, почти все наушники тоже ограничивают максимальное значение bitpool числом 53.
Как я уже успел убедиться, большинство устройств отлично работает на модифицированном Bluetooth-стеке с битрейтом в 551 кбит/с, без прерываний и треска. Но такой битрейт никогда не будет согласован в обычных условиях, на обычных Bluetooth-стеках.

Модифицируем Bluetooth-стек

В любом Bluetooth-стеке, который совместим со стандартом A2DP, есть поддержка режима Dual Channel, но активировать её из интерфейса не представляется возможным.

Давайте добавим переключатель в интерфейс! Я сделал патчи для Android 8.1 и Android 9, которые добавляют полноценную поддержку Dual Channel в стек, добавляют режим в меню переключения режима в инструменты разработчика, и обрабатывают SBC с поддержкой Dual Channel так, будто это дополнительный кодек, вроде aptX, AAC или LDAC (Android называет это HD Audio), добавляя галочку в настройки Bluetooth-устройства. Вот как это выглядит:

При активации галочки, Bluetooth-аудио начинает передаваться с битрейтом 551 кбит/с, если наушники поддерживают соединение на скорости 3 мбит/с, или 452 кбит/с, если наушники поддерживают только 2 мбит/с.

Откуда взялись 551 и 452 кбит/с?

Технология разделения эфира в Bluetooth предназначена для эффективной передачи больших пакетов фиксированного размера. Передача данных происходит слотами, самое большое количество слотов, отправляемых за одну передачу — 5. Также есть режимы передачи, использующие 1 или 3 слот, но не 2 или 4. В 5 слотах можно передать до 679 байт на скорости соединения 2 мбит/с и до 1021 байт на скорости 3 мбит/с, а в 3 — 367 и 552 байта соответственно.

Если мы хотим передать меньше данных, чем 679 или 1021 байт, но больше, чем 367 или 552 байта, то передача всё равно займет 5 слотов, а данные будет передаваться за такое же время, что уменьшает эффективность передачи.

SBC в режиме Dual Channel, на 44100 Гц-аудио с параметрами Bitpool 38, 16 блоков во фрейме, 8 частотных диапазонов, кодирует аудио во фреймы размером 164 байт, с битрейтом 452 кбит\с.
Аудио должно быть инкапсулировано в протоколы передачи L2CAP и AVDTP, которые забирают 16 байт от полезной аудионагрузки.

Таким образом, в одну Bluetooth-передачу с 5 слотами удаётся вместить 4 аудиофрейма:

Мы вместили 11.7 мс аудиоданных в отправляемый пакет, который будет передан за 3.75 мс, и у нас осталось 6 неиспользованных байт в посылке.
Если чуть поднять bitpool, 4 аудиофрейма уже не удастся упаковать в одну посылку. Придётся отправлять по 3 фрейма за раз, что снижает эффективность передачи, уменьшает количество передаваемого аудио за одну посылку, и быстрее приведёт к заиканиям аудио при плохих радиоусловиях.

Таким же образом был подобран битрейт 551 кбит/с для EDR 3 мбит/с: с Bitpool 47, 16 блоками во фрейме, 8 частотными диапазонами получается размер фрейма 200 байт, при битрейте 551 кбит/с. В одну посылку вмещается 5 фреймов или 14.6 мс музыки.

Алгоритм расчёта всех параметров SBC достаточно сложный, можно легко запутаться, если считать вручную, поэтому я сделал интерактивный калькулятор в помощь интересующимся: btcodecs.valdikss.org.ru/sbc-bitrate-calculator

Зачем всё это нужно?

Вопреки расхожему мнению о качестве звука кодека aptX, на некоторых файлах он может давать результаты хуже, чем SBC со стандартным битрейтом в 328 кбит/с.

SBC динамически выделяет биты квантования для частотных полос, действуя по принципу «от нижних к верхним». Если весь битрейт использовался на нижние и средние частоты, верхние частоты «обрежутся» (вместо них будет тишина).
aptX квантует частотные полосы одним и тем же количеством бит постоянно, из-за чего у него постоянный битрейт: 352 кбит/с для 44.1 кГц, 384 кбит/с для 48 кГц, и он не может «перенести биты» на те частоты, которые больше всего в них нуждаются. В отличие от SBC, aptX не будет «обрезать» частоты, а будет добавлять в них шумы квантования, уменьшая динамический диапазон аудио, и иногда привносить характерные потрескивания. SBC же «съедает детали» — отбрасывает наиболее тихие участки.
В среднем, по сравнению с SBC 328k, aptX вносит меньше искажений в музыку с широким частотным диапазоном, но на музыке с узким диапазоном частот и широким динамическим диапазоном SBC 328k иногда выигрывает.

Рассмотрим частный случай. Спектрограмма записи игры на фортепиано:

Основная энергия лежит в частотах от 0 до 4 кГц, и продолжается до 10 кГц.
Спектрограмма файла, сжатого в aptX, выглядит следующим образом:

А так выглядит SBC 328k.

Видно, что SBC 328k периодически полностью отключал диапазон выше 16 кГц, и расходовал весь доступный битрейт на диапазоны ниже этого значения. Однако, aptX внес больше искажений в слышимый человеческим ухом спектр частот, что можно видеть на вычтенной оригинальной спектрограмме из спектрограммы aptX (чем ярче, тем больше искажений):

В то время как SBC 328k меньше испортил сигнал в диапазоне от 0 до 10 кГц, а остальное — обрезал:

Битрейта 485k SBC хватило, чтобы сохранить весь диапазон частот, без отключения полос.

SBC 485k на этой композиции значительно опережает aptX в диапазоне 0-15 кГц, и с меньшей, но все же заметной разницей — в 15-22 кГц (чем темнее, тем меньше искажений):

Переключившись на высокобитрейтный SBC, вы получите звук, зачастую превосходящий aptX, на любых наушниках. На наушниках, поддерживающих подключение EDR 3 мбит/с, битрейт 551 кбит/с даёт звук, сравнимый с aptX HD.

А можно ещё больше?

В патче для Android также имеется опция для ещё большего повышения битрейта для устройств EDR 2 мбит/с. Можно повысить битрейт с 452 кбит/с до 595 кбит/с, ценой уменьшения стабильности передачи в сложных радиоусловиях.
Достаточно установить переменную persist.bluetooth.sbc_hd_higher_bitrate в значение 1:

Патч на экстремальный битрейт пока принят только в LineageOS 15.1, но не в 16.0.

Совместимость с устройствами

SBC Dual Channel поддерживается практически всеми наушниками, колонками и автомобильными головными устройствами. Это немудрено — стандарт предписывает его поддержку в любых декодирующих устройствах. Есть небольшое количество устройств, на которых этот режим вызывает проблемы, но это — единичные экземпляры.
Более подробно с совместимыми устройствами можно ознакомиться на 4pda или xda-developers.

Сравнение различий звука

Я сделал веб-сервис, кодирующий аудио в SBC (а также aptX и aptX HD) в реальном времени, прямо в браузере. С помощью него вы сможете сравнивать звук различных профилей SBC и другие кодеки, без фактической передачи аудио по Bluetooth, на любых проводных наушниках, колонках, и вашей любимой музыке, а также изменять параметры кодирования прямо во время воспроизведения аудио.
btcodecs.valdikss.org.ru/sbc-encoder

Связь с разработчиками Android

Я писал многим разработчикам Bluetooth-стека из Google, с просьбой рассмотреть включение патчей в основную ветку Android — AOSP, но не получил ни одного ответа. Мои патчи в системе работы с патчами Gerrit для Android также остались без комментариев со стороны кого-либо причастного.
Я был бы рад, если бы мне посодействовали в связи с разработчиками из Google и внедрении SBC HD в Android. Патчcет в gerrit уже устарел (это одна из ранних ревизий), и я его обновлю, если разработчиков заинтересуют мои изменения (мне непросто его обновлять, у меня нет совместимых с Android Q устройств).

Источник

Операционные системы и программное обеспечение