Ресемплер частоты дискретизации (из библиотеки 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 о новых ядрах можно забыть.
Социальные закладки