Re: ГУ на андроид - USB DAC - ?? - акустика и саб.
Цитата:
Сообщение от aluver
Это как? На уровне snd-usb-audio? А в нем разве есть ресэмплер? Я пытался разобраться с параметром device_setup, а также возможностью установки AltSetting при инициализации своей сабры U2..... но безрезультатно....
Для Sabre U2 по умолчанию AltSetting 1 (16 бит и до 48 кГц), а существует AltSetting 2 (24 бит, до 96кГц). Может быть можно все-таки прописать параметры инициализации USB по vid pid и насильно установить AltSetting 2 ?
Ресемплер частоты дискретизации (из библиотеки libspeex) в Андродах обычно встраивается как раз в AudioHAL, но так как RockChip исторически затачивались под TV-приставки, в общедоступных SDK принудительный ресемплинг на 44.100 ГЦ как раз отключен. Но если даже сделать интерполяцию с 44.1 на 48 кГц исходной записи, и воспроизвести через такой плеер без ресемплинга через внешнюю звуковую карту, выигрыша в качестве звучания не произойдет.
Это же касается и разрядности аудиопотока: если оригинал был 16 битным, то принудительный перевод его в 24 или 32 битный формат, кроме двоекратного увеличения размера, никакого выигрыша В качестве не даст.
Положим, что для более точных манипуляций с коэффициантом усиления 24 бита предпочтительнее 16-ти, в теории. Ничто не мешает аудиокодеку получить на вход 16 слово, и внутри себя преобразовать в 32 битное несколькими инструкциями ассемблера. Это гораздо эффективнее, чем переписать код аудиобиблиотек Андроида. Что он потом будет делать внутри с этими данными - известно только разработчикам. Для экономии ресурсов микроконтроллера с двойной точностью расчитываются только некоторые параметры, которые потом округляются до целых,а динамические данные из буфера обрабатываются через массивы-матрицы преобразований, так что дискретность вычислений внешнего кодека намного выше, чем у любого ARM с VFP-сопроцессором.
Относительно Sabre U2 - поддержка асинхронных кодеков имплементируется ядром Linux, либо обособленными драйверами как у USB Audio Player Pro. В случае с RK3066 о новых ядрах можно забыть.
06.08.2015, 23:45
R6MF49T2
Re: ГУ на андроид - USB DAC - ?? - акустика и саб.
Цитата:
Сообщение от HoSStiA
Но если даже сделать интерполяцию с 44.1 на 48 кГц исходной записи, и воспроизвести через такой плеер без ресемплинга через внешнюю звуковую карту, выигрыша в качестве звучания не произойдет.
Это же касается и разрядности аудиопотока: если оригинал был 16 битным, то принудительный перевод его в 24 или 32 битный формат, кроме двоекратного увеличения размера, никакого выигрыша В качестве не даст.
Зависит от алгоритма ресемплинга и ЦАПа. Но разница вцелом вероятно будет всё же не настьлько несущественна.
06.08.2015, 23:48
HoSStiA
Re: ГУ на андроид - USB DAC - ?? - акустика и саб.
Цитата:
Сообщение от Shumik
Но ведь при прослушивании через сторонние проигрыватели, такие, как USB audio player PRO это не распространяется? Верно? Кстати, я уже привык к нему, даже кнопки на руле понимает, правда звук пока не очень всё таки, никак сабра не доедет...
Это приложение взаимодействует с известными ему USB-устройствами напрямую.
06.08.2015, 23:50
R6MF49T2
Re: ГУ на андроид - USB DAC - ?? - акустика и саб.
Цитата:
Сообщение от HoSStiA
Относительно Sabre U2 - поддержка асинхронных кодеков имплементируется ядром Linux, либо обособленными драйверами как у USB Audio Player Pro. В случае с RK3066 о новых ядрах можно забыть.
Вот про асинхронную передачу хотелось бы узнать побольше. Асинхронный тип передачи входит в спецификации audio class 1, по идее устройства на андроиде выше 5-ки должны его поддерживать. Так например мойя xperia z в асинхронном режиме работает без проблем. Если я Вас правильно понял не все устройства его поддерживают?
07.08.2015, 00:24
HoSStiA
Re: ГУ на андроид - USB DAC - ?? - акустика и саб.
Цитата:
Сообщение от R6MF49T2
Вот про асинхронную передачу хотелось бы узнать побольше. Асинхронный тип передачи входит в спецификации audio class 1, по идее устройства на андроиде выше 5-ки должны его поддерживать. Так например мойя xperia z в асинхронном режиме работает без проблем. Если я Вас правильно понял не все устройства его поддерживают?
Видимо, это предпосылка на использование архитектуры нового поколения ядер совместно с API Level 21 для Android 5.0. Будем считать, что стабильным на сегодняшний день для Вашего устройства является 3.10.49, https://github.com/sonyxperiadev/ker...9.067/Makefile , что, несомненно, открывает широкие возможности к интеграции периферии. Всё что поддерживается ядром - в теории может поддерживать и Андроид, если не были искусственно наложены ограничения (как в коде AOSP, так и в SDK для конкретного устройства - всё очень индивидуально).
07.08.2015, 07:15
aluver
Re: ГУ на андроид - USB DAC - ?? - акустика и саб.
Цитата:
Сообщение от HoSStiA
Это же касается и разрядности аудиопотока: если оригинал был 16 битным, то принудительный перевод его в 24 или 32 битный формат, кроме двоекратного увеличения размера, никакого выигрыша В качестве не даст.
Цитата:
Сообщение от R6MF49T2
Зависит от алгоритма ресемплинга и ЦАПа. Но разница вцелом вероятно будет всё же не настьлько несущественна.
Господа! Да это все как раз понятно, частоту вообще не трогаем. Упаси Боже! (Андроидный ХАЛ вообще делает ресэмплинг очень криво. Только в лоллипопе его чуточку улучшили).
Дополнительные разряды необходимы лишь для регулировки громкости без потерь детализации на стороне андроида! Уже язык отсох писать, что каждые -6db отнимают по одному разряду, т.е. на "комфортных" 50% громкости мы слушаем уже не 16 бит, а 10-12. А слух у нас - логарифмический, и он, сабака, "слышит" эту недостачу. А в остальном в машине нам эти 24 бита нужны как в бане... пассатижи :D (кроме вашего случая - для обработки - фильтры частот и т.д. перед выводом на цап). Машинные шумы, салонные искажения фчх и ачх все равно "похерят" звук гораздо сильнее, чем дает прирост разрядности до 24 бит в исходной записи (а дает он в основном более широкий динамический диапазон). Знаю о чем пишу - "звукорежиссурой" много занимался. :yes3: =
Цитата:
Сообщение от HoSStiA
Относительно Sabre U2 - поддержка асинхронных кодеков имплементируется ядром Linux, либо обособленными драйверами как у USB Audio Player Pro. В случае с RK3066 о новых ядрах можно забыть.
У меня сабра работает как раз в асинхроне на рк3066 (ядро 3.0.36). Асинхрон - это наше все :) Хотя и ему 5-метровый USB-удлиннитель до багажника по идее не по зубам. Положил оптику. А как вы собираетесь в случае с многоканальными картами и софтовым процессингом звука к усилителям звук доставлять - для меня пока загадка.
07.08.2015, 12:37
HoSStiA
Re: ГУ на андроид - USB DAC - ?? - акустика и саб.
FYI, в обход java-framework'а Андроид можно воспроизвоидить через собственное приложение на OpenSL ES, http://habrahabr.ru/post/176933/,
относительно свободно манипулируя форматом выходного потока
У меня сабра работает как раз в асинхроне на рк3066 (ядро 3.0.36). Асинхрон - это наше все Хотя и ему 5-метровый USB-удлиннитель до багажника по идее не по зубам. Положил оптику. А как вы собираетесь в случае с многоканальными картами и софтовым процессингом звука к усилителям звук доставлять - для меня пока загадка.
В ALSA это как раз bubble gum, формат выходного потока можно переопределить для определенной карты через plughw, как в конфигурационных файлах, так и в командной строке. Для примера, создаем 8-канальную запись в формате 24-bit из обычной стерео (таблицу кроссировки каналов также можно управлять и микшировать их на лету механизмом ttable, но по умолчанию каналы 2-7 будут пустыми):
А теперь воспроизведем эту запись. К сожалению, карта тоже стерео, и возьмется воспроизводить только 2 первые канала (в которых можно сформировать и микс вместе с оставшимися 6-ю):
Re: ГУ на андроид - USB DAC - ?? - акустика и саб.
Цитата:
Сообщение от HoSStiA
В ALSA это как раз bubble gum, формат выходного потока можно переопределить для определенной карты через plughw, как в конфигурационных файлах, так и в командной строке.
Я пробовал вот это писать в asound.conf для своей сабры (видится альсой под именем Audio):
После прочтения съесть!
Код:
pcm.Audio {
type plug
slave {
pcm "Audio,0"
channels 2
format S24_3LE
rate 96000
}
}
ctl.Audio {
type hw
card Audio
}
pcm.music {
type plug
slave {
pcm "Audio,0"
channels 2
format S24_3LE
rate 96000
}
}
Вне зависимости от типа подключения: I2S, USB или даже виртуального, кодек работает в режиме slave, и мастер-устройство должно самостоятельно определить, в каком формате данные PCM ему могут быть переданы. В случае USB это можно было бы определить по дескрипторам устройства. Если мастер попытается инициализировать поток в не поддерживаемом звуковым адаптером формате, тот ответит отказом (ошибкой).
Так как Android прежде всего ориентирован на SoC, и пользователям подобных устройств вполне достаточно качества CD (16bit + 44100 кГц), то решение жестко ограничить этим форматом большинство устройств, в целом, обосновано, так как его сейчас поддерживают, пожалуй, все выпускаемые для платформы Android SoC. Это позволило не только использовать вместо довольно тяжелых библиотек libalsa более компактную tinyalsa, но и обеспечить стабильную работу аудиокомпоненты принудительным преобразованием выходного потока к данному формату. Поэтому ресемплер libspeex используется в AudioHAL обособленно (и может быть легко включен/отключен), а в системах с полной ALSA нет необходимости собирать libalsa с этим же ресемплером.
В полных linux-системах вроде Ubuntu все наоборот - ALSA может при необходимости ресемплировать в тот формат, который был назначен принудительно. И, скорее всего, некоторые продвинутые сервисы-надстройки над ALSA могут, при необходимости, самостоятельно принимать решение, какие параметры оптимальны при воспроизведении конкретной композиции через тот или иной аудиокодек.
Самое простое для Andoida High-End решение, это все-таки остается вывод через (HDMI + внешний предобразователь SPDIF) или напрямую (SPDIF, когда есть на борту) аудиоданных в LPCM или RAW формате. Это могут некоторые современные медиа-плееры, в т.ч. на RockChip и AmLogic, это могли уже и старые приставки на RealTek. Всю обработку при этом отдать на откуп внешнему процессору. =)
08.08.2015, 19:04
aluver
Re: ГУ на андроид - USB DAC - ?? - акустика и саб.
Цитата:
Сообщение от HoSStiA
Самое простое для Andoida High-End решение, это все-таки остается вывод через (HDMI + внешний предобразователь SPDIF) или напрямую (SPDIF, когда есть на борту)
С этого я и начинал свои поиски способа вывода цифры из своего ГУ на рокчипе. Но мне не повезло - китайцы ни того, ни другого не вывели с чипа на плату. Без вариантов... http://4pda.ru/forum/index.php?showt...ost&p=37146337
HDMI этого ГУ "показывает" только DVD, но к андроиду это никакого отношения не имеет.
Может китайцы в перспективе и исправятся... Народ уже меняет андроидные платы в своих ГУ - рк3066 на рк3188 например... может доживем до версий на рк3288, кто знает.... апгрейд и лоллипоп решат проблему. )))