С подачи Rover'а, озадачились вопросами качества воспроизведения с Android-устройствах в роли источников звука. В частности, насколько жестко ограничение Google по 16 bit/44.1 kHz/ 2 channels, о котором утверждают разработчики.
А также насколько критично данное ограничение для мобильных устройств, возможности процессоров которых также далеко не безграничны.
Пресловутое ограничение, если такое и имеется в последних версиях Андроида, в большей степени связано с отсутствием необходимости закладывать в музыкальные приложения протоколы воспроизведения аудиофайлов с параметрами, превосходящими мультимедийные возможности SoC. Тем не менее, так как ядро Linux разрабатывалось для более широкого спектра устройств, базовая часть аппаратной поддержки звуковых карт, поддерживаемых ALSA, обеспечивается по умолчанию уже на этом уровне, но эти возможности попросту не используются оболочкой.
Это можно продемонстрировать на следующем примере. Скачаем тестовые сэмплы в формате .wav для 16 и 24-битовых стандартов соответственно. Например, из следующей подборки: http://www.nordicaudiolabs.com/dart/ . Алгоритм "даунсэмплинга" в данный момент нам неинтересен, достаточно быть уверенными в параметрах тестируемого материала.
Возможности встроенного звукового адаптера, как и ожидалось, ограничены 16 битами. Чего не скажешь про частоту дискретизации, все-таки целых 48 кГц, а не 44,1 кГц, имеют полное право на жизнь:
1|root@android:/mnt/extsd/test-samles # alsa_aplay -vv -Dhw:0,0 24.wav
Playing WAVE '24.wav' : Signed 24 bit Little Endian in 3bytes, Rate 48000 Hz, Stereo
aplay: set_params:1054: Sample format non available
Available formats:
- S16_LE
Теперь подключим карту, заведомо аппаратно поддерживающую 16/24 бит и 48/96 кГц:
И, как можно убедиться, список поддерживаемых форматов довольно длинный:
Код:
root@android:/ # cat /proc/asound/card1/stream0
Creative Technology Ltd SB Audigy 2 NX at usb-sw_hcd_host0-1, high speed : USB Audio
Playback:
Status: Stop
Interface 1
Altset 3
Format: S16_LE
Channels: 2
Endpoint: 1 OUT (ASYNC)
Rates: 48000
Data packet interval: 1000 us
Interface 1
Altset 4
Format: S24_3LE
Channels: 2
Endpoint: 1 OUT (ASYNC)
Rates: 48000
Data packet interval: 1000 us
Interface 1
Altset 5
Format: S16_LE
Channels: 2
Endpoint: 1 OUT (ASYNC)
Rates: 96000
Data packet interval: 1000 us
Interface 1
Altset 6
Format: S24_3LE
Channels: 2
Endpoint: 1 OUT (ASYNC)
Rates: 96000
Data packet interval: 1000 us
Interface 1
Altset 7
Format: S16_LE
Channels: 4
Endpoint: 1 OUT (ASYNC)
Rates: 48000
Data packet interval: 1000 us
Interface 1
Altset 8
Format: S24_3LE
Channels: 4
Endpoint: 1 OUT (ASYNC)
Rates: 48000
Data packet interval: 1000 us
Interface 1
Altset 9
Format: S16_LE
Channels: 4
Endpoint: 1 OUT (ASYNC)
Rates: 96000
Data packet interval: 1000 us
Interface 1
Altset 10
Format: S24_3LE
Channels: 4
Endpoint: 1 OUT (ASYNC)
Rates: 96000
Data packet interval: 125 us
Interface 1
Altset 11
Format: S16_LE
Channels: 6
Endpoint: 1 OUT (ASYNC)
Rates: 48000
Data packet interval: 1000 us
Interface 1
Altset 12
Format: S24_3LE
Channels: 6
Endpoint: 1 OUT (ASYNC)
Rates: 48000
Data packet interval: 1000 us
Interface 1
Altset 13
Format: S16_LE
Channels: 6
Endpoint: 1 OUT (ASYNC)
Rates: 96000
Data packet interval: 125 us
Interface 1
Altset 14
Format: S24_3LE
Channels: 6
Endpoint: 1 OUT (ASYNC)
Rates: 96000
Data packet interval: 125 us
Interface 1
Altset 15
Format: S16_LE
Channels: 8
Endpoint: 1 OUT (ASYNC)
Rates: 48000
Data packet interval: 1000 us
Interface 1
Altset 16
Format: S24_3LE
Channels: 8
Endpoint: 1 OUT (ASYNC)
Rates: 48000
Data packet interval: 125 us
Interface 1
Altset 17
Format: S16_LE
Channels: 8
Endpoint: 1 OUT (ASYNC)
Rates: 96000
Data packet interval: 125 us
Interface 1
Altset 18
Format: S24_3LE
Channels: 8
Endpoint: 1 OUT (ASYNC)
Rates: 96000
Data packet interval: 125 us
Capture:
Status: Stop
Interface 2
Altset 5
Format: S16_LE
Channels: 2
Endpoint: 2 IN (NONE)
Rates: 48000
Data packet interval: 1000 us
Interface 2
Altset 6
Format: S24_3LE
Channels: 2
Endpoint: 2 IN (NONE)
Rates: 48000
Data packet interval: 1000 us
Interface 2
Altset 7
Format: S16_LE
Channels: 2
Endpoint: 2 IN (NONE)
Rates: 96000
Data packet interval: 1000 us
Interface 2
Altset 8
Format: S24_3LE
Channels: 2
Endpoint: 2 IN (NONE)
Rates: 96000
Data packet interval: 1000 us
При этом стандартное приложение "Музыка" при воспроизведении 24.wav, вероятно, действительно пытается "на лету" преобразовать в другой формат, о чем свидетельствуют жуткий скрежет каждые несколько тактов. Иные же приложения, jetAUDIO к примеру, воспроизводят 24.wav, на первый взгляд, точно так же, как и команда alsa_aplay из консоли.
---------- Сообщение добавлено 19.01.2014 в 02:57 ----------
Также стоит внимательно рассмотреть функции и структуры данных библиотеки, отвечающие непосредственно за создание аудиопотока:
Код:
/* Configuration for a stream */
struct pcm_config {
unsigned int channels_min;
unsigned int channels_max;
unsigned int rate_max;
unsigned int rate_min;
unsigned int channels;
unsigned int rate;
unsigned int period_size;
unsigned int period_count;
enum pcm_format format;
/* Values to use for the ALSA start, stop and silence thresholds. Setting
* any one of these values to 0 will cause the default tinyalsa values to be
* used instead. Tinyalsa defaults are as follows.
*
* start_threshold : period_count * period_size
* stop_threshold : period_count * period_size
* silence_threshold : 0
*/
unsigned int start_threshold;
unsigned int stop_threshold;
unsigned int silence_threshold;
int avail_min;
unsigned int in_init_channels;//keep the record init channels
};
struct pcm *pcm_open_req(unsigned int card, unsigned int device,
unsigned int flags, struct pcm_config *config, int requested_rate);
При этом предпочтительные параметры конфигурации могут быть назначены при вызове из audio.primary.exDroid.so, как это реализовано в нашем решении для a13 http://magnitola.org/usb-audio-dac-a...ml#post2317264 в части частоты дискретизации, что дает возможность корректировать обращения к аудиосистеме со стороны стандартных приложений Android, если они содержат в себе излишние ограничения.
---------- Сообщение добавлено 19.01.2014 в 15:02 ----------
Предопределив желаемую частоту дискретизации для библиотеки audio.primary.exDroid.so через параметры конфигурации системы audio.usb.out.freq, и перенаправив все вызовы на собственную функцию pcm_open_req вместо pmp_open, мы получили возможность передавать эту настройку через переменную requested_rate
Цитата:
struct pcm *pcm_open_req(unsigned int card, unsigned int device,
unsigned int flags, struct pcm_config *config, int requested_rate);
int in_ajust_rate = in->requested_rate;
// out/in stream should be both 44.1K serial
if (!(in->requested_rate % SAMPLING_RATE_11K))
{
// OK
in_ajust_rate = in->requested_rate;
}
else
{
in_ajust_rate = SAMPLING_RATE_11K * in->requested_rate / SAMPLING_RATE_8K;
if (in_ajust_rate > SAMPLING_RATE_44K)
{
in_ajust_rate = SAMPLING_RATE_44K;
}
LOGV("out/in stream should be both 44.1K serial, force capture rate: %d", in_ajust_rate);
}
для последующей обработки и корректировки для совместимости и выбранным в данный момент оборудованием (встроенный SoC или внешний USB DAC), если потребуется, на уровне библиотеки libtinyalsa.so:
Код:
for (index = 0; index < size_rate; index++)
{
if (pcm_rate[index] == requested_rate)
{
break;
}
}
А,с помощью Нейтрона,не пробовали выводить хай-резы ?
19.01.2014, 18:29
Хоттабыч
Re: Android 24 bit/96 kHz
Цитата:
Сообщение от HoSStiA
Но на 24 битах ждет разочарование:
вообще надо рассматривать до 20, дальше это теоретически для самоуспокоения. Шумы усилителя громче. При такой частоте можно услышать как идут электронные часы )))
Немного хочу тоже въехать в эту тему : если я правильно понимаю, то использую спидиф мы обходим обработку звука самим процессором со встроенным кодеком ? Так ? И тогда имея усилитель со входом спидиф получаем отличный звук ? А насчет фильтров и тембров ? Где они будут или должны быть?
19.01.2014, 18:48
Rover
Re: Android 24 bit/96 kHz
Продолжим совместное исследование ограничений.
При запуске воспроизведение 16-hpt.wav из андроид-приложений ограничение накладывается, невзирая на переопределение частоты дискретизации
root@android:/ # cat /proc/asound/card1/stream0
cat /proc/asound/card1/stream0
C-Media Electronics Inc. USB Audio Device at usb-sw-ohci-1.5, full speed : USB A
udio
root@android:/ # cat /proc/asound/card1/stream0
cat /proc/asound/card1/stream0
C-Media Electronics Inc. USB Audio Device at usb-sw-ohci-1.5, full speed : USB A
udio
---------- Сообщение добавлено 19.01.2014 в 20:10 ----------
Цитата:
Сообщение от MSMaster
А,с помощью Нейтрона,не пробовали выводить хай-резы ?
Попробовали, и не только его. Андроид настроен на выхлоп 16/48, но любой плеер, проигрывая файл с частотой дескритизации 48 кГц ПРОГРАМНО даунсемплит его в 44.1 кГц, и такую частоту мы получаем на выходе, хотя в плеере видим частоту 48 кГц.
Бум думать, как победить.
Цитата:
Сообщение от хоттабыч
Немного хочу тоже въехать в эту тему : если я правильно понимаю, то использую спидиф мы обходим обработку звука самим процессором со встроенным кодеком ? Так ? И тогда имея усилитель со входом спидиф получаем отличный звук ? А насчет фильтров и тембров ? Где они будут или должны быть?
Выводя цифру из Андроида, мы в первую очередь исключаем работу встроенного поганого ЦАПа, а обработку поручаем внешнему устройству. Подключили вот это : http://shop.rznprb.com/index.php?rou...&path=20_26_66 получили практически готовую систему.
20.01.2014, 10:35
HoSStiA
Вложений: 1
Цитата:
Сообщение от MSMaster
А,с помощью Нейтрона,не пробовали выводить хай-резы ?
Ставили Нетрон, но сходу не нашли там соответствующих настроек. По умолчанию все равно происходит downsampling до 16/44.1, как и с другими плеерами.
---------- Сообщение добавлено 20.01.2014 в 12:13 ----------
Убираем непонятно зачем оставленный ранее ресемплер из audio.primary.exDroid.so
Заменяем "неправильную" команду на правильную. есличо
Interface 1
Altset 3
Format: S16_LE
Channels: 2
Endpoint: 1 OUT (ASYNC)
Rates: 48000
Data packet interval: 1000 us
Цитата:
Interface 1
Altset 4
Format: S24_3LE
Channels: 2
Endpoint: 1 OUT (ASYNC)
Rates: 48000
Data packet interval: 1000 us
28.07.2014, 16:38
Rover
Re: Android 24 bit/96 kHz
Формат 24/96 это здорово. А вот следующая ступень - асинхронная передача (XMOS, cm6631) её возможно к Андрюше прикрутить?
Вот реальный пример - вот это девайс http://www.aliexpress.com/snapshot/6142025743.html ,Нексус 7 с андроид 4.2 его в упор не видит, а возможно сделать так, шоб увидел, а, Сань? ;)
29.07.2014, 12:36
MSMaster
Re: Android 24 bit/96 kHz
Может быть попробовать через прогу USB AUDIO PRO выводить, она многие внешние ЗК видит.
Я через нее вывожу 24/48 , качество неплохое.
30.07.2014, 01:05
HoSStiA
Re: Android 24 bit/96 kHz
Цитата:
Сообщение от Rover
Формат 24/96 это здорово. А вот следующая ступень - асинхронная передача (XMOS, cm6631) её возможно к Андрюше прикрутить?
Вот реальный пример - вот это девайс http://www.aliexpress.com/snapshot/6142025743.html ,Нексус 7 с андроид 4.2 его в упор не видит, а возможно сделать так, шоб увидел, а, Сань? ;)
Так же, как и в случаях с любым нестандартным оборудованием - искать или кодить драйвера под текущее ядро. И настраивать существующие до уровня совместимости.
На Minix'ах мы столкнулись с тем, что плата с асинхронной передачей заработала только при подключении к OTG-порту, в драйвер которого был внедрен по всей видимости "костыль" от Raspberry Pi. Но это спасает только на 116A, на 116i вса равно начинаются лаги через некоторое время. И вообще USB для audio - это зло. Но так как до I2C/I2S у разработчиков "высоких концов" руки могут так и не добраться, при доступе к прошивке аналогичных устройств нужно допиливать USB-драйвера ядра. Либо удачно встраивать чужие наработки на этом поле.
31.07.2014, 12:56
HoSStiA
Re: Android 24 bit/96 kHz
Сопряжение неподдерживаемых устройств с Android лучше всего начинать с проверки их работоспособности под Ubuntu с последней версией ядра (сейчас 3.13.х). Если заустилось под ней, то после танцев с бубном и ядром, Андроид хотя бы его начнет распознавать.
А смысл хвастаться и не говорить как сделал? вернее какой смысл делать это здесь...?
03.08.2014, 22:18
Rover
Re: Android 24 bit/96 kHz
Цитата:
Сообщение от Shumik
А смысл хвастаться и не говорить как сделал? вернее какой смысл делать это здесь...?
ХвастаЦЦа?!!! Милый друг, ты меня с кем то спутал....
Добить дело до конца, получить результат, а потом уже рассказывать о ВСЕХ достоинствах и недостатках - это не ХВАСТАЦЦА.
03.08.2014, 22:36
Shumik
Re: Android 24 bit/96 kHz
Ну простите великодушно, милейший, бес попутал.
20.08.2014, 20:58
rgaliull
Re: Android 24 bit/96 kHz
Как выступили?
Написано с телефона
---------- Сообщение добавлено 20.08.2014 в 20:59 ----------
Для поканалки нужен дополнительный проц?
Написано с телефона
21.08.2014, 14:50
Rover
Вложений: 1
Re: Android 24 bit/96 kHz
Цитата:
Сообщение от rgaliull
Как выступили?
Написано с телефона
---------- Сообщение добавлено 20.08.2014 в 20:59 ----------
Кто может запретить ЭТО использовать? У меня таких полномочиев нет :)
21.08.2014, 15:19
Shumik
Re: Android 24 bit/96 kHz
Ну я имею в виду, что без ущерба качеству звука, ведь Вы, наверное, подключали что-то внешнее через OTG чтобы цифру вывести и звук поидее зависит уже от этого внешнего устройства, а не от самого носителя андроида, лишь бы всё поддерживалось. Или я совсем все неверно понимаю?
21.08.2014, 15:27
Rover
Re: Android 24 bit/96 kHz
Цитата:
Сообщение от Shumik
Ну я имею в виду, что без ущерба качеству звука, ведь Вы, наверное, подключали что-то внешнее через OTG чтобы цифру вывести и звук поидее зависит уже от этого внешнего устройства, а не от самого носителя андроида, лишь бы всё поддерживалось. Или я совсем все неверно понимаю?
Там не всё так просто - три устройства (планшет, ДВД, радио) по анлогу объедениняются общим для них аналоговым DSP типа TDA 7718/7719, и вытащив цифру с чего то одного, лишаем балалайку 2/3 функционала.
21.08.2014, 15:42
Shumik
Re: Android 24 bit/96 kHz
Радио можно к процу через линейки бросить, двд вообще в принципе ненужная вещь, я не знаю где их взять, эти, как их там, DVD диски. Нужна лишь возможность воспроизводить wav/flac файлы с памяти устройства через какой либо плеер через оптику на проц. Громкость придется правда регулировать всё же руксом, но это пережить можно. Такая схема осуществима? Я уже почти решился отдельно морду в подочечник засунуть от какой-нить более менее прилично 1 диновой магнитолы, а с балалайки аукс вывести в эту магнитолу, чтобы навигатор слушать. Двухдиновые Г.у. типа пионер и альпайн, смотрятся ужасно, функционал никакой, не дружат с кан-шиной, навигация ужасна, звук посредственный. В общем всё что мне нужно, это вытащить с андроид балалайки цифру на проц, чтобы в итоге получилось, что-то вроде 99 пионера по звуку )) это возможно?
30.10.2014, 08:23
HoSStiA
Re: Android 24 bit/96 kHz
В Android SDK 4.4.2 (KitKat) для медиаприставок на процессорах RockChip RK3288 в Августе 2014 года была добавлена поддержка частоты дискретизации 192kHz по HDMI в bypass режиме, по "коммитам" в репозиторий ПО для отладочных плат:
Текущая версия патчей ALSA с начала года пока остается неизменной: ROCKCHIP_ALSA_HARDWARE_TV_V1.0.9, что поставлялось еще в начале 2014 года в Android 4.2.2 для RK3066 в виде "пропиетарных" библиотек (без исходного кода). В SDK Android 4.2.2 даже для RK3188 оставили исходные коды версии ROCKCHIP_ALSA_HARDWARE_TV_V1.0.3:
Радио можно к процу через линейки бросить, двд вообще в принципе ненужная вещь, я не знаю где их взять, эти, как их там, DVD диски. Нужна лишь возможность воспроизводить wav/flac файлы с памяти устройства через какой либо плеер через оптику на проц. Громкость придется правда регулировать всё же руксом, но это пережить можно. Такая схема осуществима? Я уже почти решился отдельно морду в подочечник засунуть от какой-нить более менее прилично 1 диновой магнитолы, а с балалайки аукс вывести в эту магнитолу, чтобы навигатор слушать. Двухдиновые Г.у. типа пионер и альпайн, смотрятся ужасно, функционал никакой, не дружат с кан-шиной, навигация ужасна, звук посредственный. В общем всё что мне нужно, это вытащить с андроид балалайки цифру на проц, чтобы в итоге получилось, что-то вроде 99 пионера по звуку )) это возможно?
Полностью поддерживаю вопрос.. Тоже интересует возможность подключение балалайки к USB DAC.
22.02.2015, 19:43
rage2
Re: Android 24 bit/96 kHz
Появилась бесплатная альтернатива USB Audio Player PRO.
Hiby Music Player is a free lossless HiFi audio player which designed for audiophile and music fans, like Foobar and JRiver, Hiby will bring you high quality music, any time, any where.
Features:
1. All lossless audio format decoding, including DSF,DFF,ISO,WAV,FLAC,AIFF,M4A,AAC,MP3,OGG
2. CUE sheets also supported
3. High precision decoding with 32 bits output, 64 bits float point and 128 bits internal calculating. just for the best quality of audio.
4. External USB DAC is supported with DXD/DoP output. You will get Native DSD or 384KHZ 32 bits audio stream easily.
5. NAS(LAN) is supported, Net Driver and DLNA will be supported soon.
6. Gapless playing is supported.
7. Simple user interface with intimate functional design and good performance.
Интерфейс приятный, юзабилити впорядочке)
Наличие поддержки usb audio не требуется. Работает с картой напрямую, в обход ядра и либ андройда.
25.02.2015, 10:39
Shumik
Re: Android 24 bit/96 kHz
А с какой картой? Можно пример за вменяемые деньги?
25.02.2015, 10:42
rage2
Re: Android 24 bit/96 kHz
Цитата:
Сообщение от Shumik
А с какой картой?
Да наверное с любой, не требующей для работы специфичных драйверов.
На ибее появилась вот такая балалайка http://www.ebay.com/itm/8-2Din-Andro...item43d781d6ff
если не врут, то она на RK3188 и с 2 гигами оперативы + разрешение 1024х600, что есть очень неплохо для автомобильного г.у. и судя по всему с ним должна работать и внешняя звуковуха, вроде тех, что указаны выше. Вот очень хочется внешний проц подцепить к ней и послушать, странно что еще нет примеров подобной реализации. А то используем какие-то устройства каменного века, пионы 99-ые, клары... ведь архаичные уже они. И когда же уже сделают настройку процессоров с помощью смартфона через блютус, без всяких там руксов, шмуксов, сколько можно издеваться над нами )
01.03.2015, 11:58
disz
Re: Android 24 bit/96 kHz
Цитата:
Сообщение от rage2
Да наверное с любой, не требующей для работы специфичных драйверов.
С iBasso D-ZERO к сожалению не заработал. Пришлось купить USB Audio Player PRO ГЫ гы ГЫ
01.03.2015, 16:43
rage2
Re: Android 24 bit/96 kHz
Цитата:
Сообщение от disz
С iBasso D-ZERO к сожалению не заработал. Пришлось купить USB Audio Player PRO ГЫ гы ГЫ
Кто не заработал? Android или HibyMusic?
03.03.2015, 21:57
Shumik
Re: Android 24 bit/96 kHz
Что-то в описании смотрю к этим hifimediy нет информации про работу с андроид. Только на старшем из них указано, что с Андроид 5.0 работает. Г.ус на 5.0 вот только нет еще
04.03.2015, 18:41
rage2
Re: Android 24 bit/96 kHz
Это не от карты зависит, будет она петь с андройдом или нет.
04.03.2015, 18:49
Shumik
Re: Android 24 bit/96 kHz
Только от ЦП устройства?
04.03.2015, 20:31
toha-26
Re: Android 24 bit/96 kHz
Цитата:
Сообщение от rage2
Появилась бесплатная альтернатива USB Audio Player PRO.
HibyMusic
хотел попробовать, но на nexus 7 не ставится.
05.03.2015, 00:31
rage2
Re: Android 24 bit/96 kHz
Цитата:
Сообщение от toha-26
хотел попробовать, но на nexus 7 не ставится.
Из маркета? Есть такое.
Но там же(в моем посте) есть ссылка на апк.
Закидываешь на планшет и устанавливаешь.
Цитата:
Сообщение от Shumik
Только от ЦП устройства?
Нет. Все иначе.
1. Если только слушать музыку, тогда через спец.софт (USB Audio Player PRO или HibyMusic)
будет работать практически на любом устройстве (ГУ, планшет, смартфон и т.д)
2. Если выводить через юсб карту все звуки, вместо встроенной в ГУ, то тут нужна поддержка карты в Андройде.
Точнее наличие дров в ядре и роутинг звука на карту в ОС.
Тут как повезет....правда для ГУ-устройств обычно не везет :resent:
Китайцы(производители) при сборке прошивки просто не включают это.
В общем не от Андройда(его версии) зависит, а от того как его собрали для конкретного устройства.
На ГУ с RK3066 и RK3188 если подшаманить, то шанс заставить петь юсб карту есть....но мизерный.
Сорцы ядра для них есть и модули юсб карты подключить не проблема. Сложности более в роутинге звука...
05.03.2015, 18:29
Shumik
Re: Android 24 bit/96 kHz
Написал я продавцу девайса на рк3188 о совместимости с внешним dac-ом и привел в пример сабру. Может озадачиться и массово попросить китайцев заняться этим вопросом? человек с 100 можно с форума собрать, может кто-то и помочь сможет. Пусть указывают большими буквами в описании 'audiphile edition' ;). Ведь будут покупать точно больше и им это выгодно! И для нас это будет означать конец мучений с ущербными древними двухдиновыми устройствами, которые только с диска могут сигнал по оптике гнать и не имеют никакой совместимости с автомобилем. Идея, конечно, ближе к фантастике, но... а вдруг?
05.03.2015, 18:43
toha-26
Re: Android 24 bit/96 kHz
Цитата:
Сообщение от rage2
Из маркета? Есть такое.
Но там же(в моем посте) есть ссылка на апк.
Закидываешь на планшет и устанавливаешь.
Спасибо , попробую
30.04.2015, 17:37
toha-26
Re: Android 24 bit/96 kHz
Обновился и планшетный режим пропал. Есть у кого обновленная версия плеера в планшетном режиме....поделитесь...заранее спасибо.
30.04.2015, 22:02
aluver
Re: Android 24 bit/96 kHz
Пусть немного оффтоп, но вопрос потерь качества при цифровой регулировке громкости косвенно касается данной темы.
Всем известно, что при цифровой регулировке громкости теряется глубина - каждые минус 6 децибел отбирают по одному разряду глубины звука. Таким образом, апсэмплинг исходного звука с 16 бит до 24 бит даст нам дополнительную фору в (24-16)*6=48 децибел. То есть тогда можно убавлять громкость изначально 16-битного источника на -48дб от 0 без потерь, что уже немало. Заставить Андроид изначально выводить на цап, поддерживающий глубину 24 бит, только эти самые апсемпленные 24 бит - не проблема. Но вот главный вопрос: В случае регулировки громкости штатными средствами Андроид будет ли он происходить уже в 24 битах, или все-таки до ресэмплинга - в 16-битном представлении? И какова реальная качественная характеристика апсемплинга средствами андроида? (Читал где-то, что только в лоллипопе начали уделять внимание алгоритмам ресемплирования с целью исключения ошибок, а в прежних версиях громкость лучше держать на максимуме).
28.06.2015, 17:21
aluver
Re: Android 24 bit/96 kHz
Отвечаю сам себе. Громкость регулируется после микшера. Подружил SGS3 и Sabre U2 DAC на лоллипоп 5.1 (CM12.1) именно на максимальных значениях разрядности и частоты - 24/96. Все просто - необходимо только в /etc/audio_policy.conf отредактировать разрядность и частоту на значение dynamic:
В наличии имеются: вирутальная звуковая карта VmWare, старенькая 24-битовая Creative SB Audigy 2 NX и китайский 16-битовый "свисток"!
Вторая и третья сидят на USB:
Цитата:
hosstia@WerkStatt:~$ lsusb
Bus 001 Device 002: ID 041e:3020 Creative Technology, Ltd SoundBlaster Audigy 2 NX
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 005: ID 0d8c:013c C-Media Electronics, Inc. CM108 Audio Controller
Bus 002 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
Bus 002 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Но при более скурпулёзном рассомотрении все-таки можно заменить, что Audigy потенциально дано воспроизводить 8ch x 24bit x 96000 Hz: Вложение 831450
Теперь посмотрим, что могут наши карты, если бы для ALSA не были бы заданы никакие параметры в пользовательской конфигурации, т.е. отправим исходный файл этим железкам напрямую:
Цитата:
hosstia@WerkStatt:~$ aplay -v -Dhw:0,0 05\ Halo\ Effect.wav
Воспроизведение WAVE '05 Halo Effect.wav' : Signed 24 bit Little Endian in 3bytes, Частота 96000 Гц, Стерео
aplay: set_params:1233: Остсутствует частота оцифровки
Available formats:
- U8
- S16_LE
Встроенная карта сразу говорит "нет", и скатывается до уровня Андроида в перевариваемых форматах!
Можно ли воспроизвести "05 Halo Effect.wav" на китайской карте. Оказывается да, можно, но как минимум потребуется сборка ALSA с библиотекой ресемплера,
и явное указание совместимой с картой частоты дискретизации и формата данных:
Цитата:
hosstia@WerkStatt:~$ aplay -v -Dplughw:CARD=2,DEV=0 -r48000 -fS16_LE "05 Halo Effect.wav"
Внимание: формат изменён на S24_3LE
Воспроизведение WAVE '05 Halo Effect.wav' : Signed 24 bit Little Endian in 3bytes, Частота 96000 Гц, Стерео
Plug PCM: Rate conversion PCM (48000, sformat=S16_LE)
Converter: libspeex (builtin)