Накопилась очередная порция информации по RockChip, которую стоило бы уже опубликовать, чтобы случайно не потерялась.
Цитата:
Сообщение от aluver
Значит ли это, что SPDIF рокчипа не может 44.100 аппаратно?
RockChip S/PDIF аппаратно поддерживает до 16bit/48000 kHz, и только напрямую при воспроизведении через ALSA. Делать замеры “на лету” помогает утилита для карт Creative. Вложение 921544
"Трассировка" сборки из RockChip 4.4.2 KK SDK привела к большой группе закрытых библиотек в SDK RockChip, являющихся еще одной прослойкой между frameworks/av/media/rkffplayer (системный аудиоплеер для RockChip Android) и подсисиемой ALSA.
По отладочным сообщениям сборки, на этапе декодирования тестовой записи с частотой дискретизации 48kHz происходит ошибка, после которой исходным материал “прореживается” до 44100 неведомыми алгоритмами внутри одной из закрытых библиотек, хотя до этого момента FFplayer честно пытается воспроизвести аудиоматериал без изменений:
После прочтения съесть!
Код:
E/FFplayer( 135): setDataSource offset =0,length = 1949074
I/FFplayer( 135): setDataSource(url =file/fd::24,offset::0)
I/FFplayer( 135): setDataSource(fileurl =/mnt/internal_sd/Music/110408__sandyrb__tubular-009.wav)
E/FFplayer( 135): ffmpeg version 1-6
E/FFplayer( 135): av_probe_input_buffer:avio_read
I/FFplayer( 135): flv_probe get probe score: 0
E/FFplayer( 135): Hery, probe size = 0
E/FFplayer( 135): avformat_open_input:read_header
E/FFplayer( 135): avformat_open_input:read_header ok
E/FFplayer( 135): Hery, s->iformat->name = wav
E/FFplayer( 135): Hery, s->duration = -9223372036854775808.000000
D/FFplayer( 135): There is not appleHls need find video Info
E/FFplayer( 135): estimate_timings:0: start_time: -9223372036854.775 duration: 0.325,base_time.den=48000,base_time.num=1
E/FFplayer( 135): stream: start_time: -9223372036854.775 duration: 6.764 bitrate=2305 kb/s
E/FFplayer( 135): audio name = pcm_s24le
D/FFplayer( 135): AudioStartTime=0,VideoStartTime=-1,tmpTime=-1
D/FFplayer( 135): setDataSource:start_time set 0
E/FFplayer( 135): FILE = /mnt/internal_sd/Music/110408__sandyrb__tubular-009.wav
D/FFplayer( 135): prepareAsync:prepare
I/FFplayer( 135): prepare in
I/FFplayer( 135): prepareVideo
E/FFplayer( 135): mVideoStreamIndex is -1
I/FFplayer( 135): prepareAudio
E/FFplayer( 135): Hery, Audio stream->codec->codec_id = 65548
D/FFplayer( 135): open MediaDecoder.cfg failed,so can't config anything
D/FFplayer( 135): File not exists!
I/FFplayer( 135): prepareSubtitle
I/FFplayer( 135): prepare ok
...
D/FFplayer( 135): initAudioPlayer
I/FFplayer( 135): ******************************************
I/FFplayer( 135):
I/RkAudioPlayer( 135): mAudioSink->open in mSampleRate = 48000 channels = 2
I/FFplayer( 135): starting main player thread:2014-1-21
I/RkAudioPlayer( 135): audio mode: 0
I/FFplayer( 135):
I/FFplayer( 135):
I/FFplayer( 135): ******************************************
I/FFplayer( 135): decodeMovie:mCurrentState = 8
I/AudioTrack( 135): set() streamType 3 frameCount 4458 flags 0000 channelMask 3 sampleRate 48000 format 1
D/FFplayer( 135): start ok E/DecodeAudio( 135): mStream->codec->channels = 2 mStream->codec->sample_rate = 48000
I/FFplayer( 135): decodeMovie:BufferingPlayer 0x0
I/FFMpegThread( 135): starting thread
D/DecodeAudio( 135): prepare()
E/FFplayer( 135): Hery, FF_MediaPlayer::BufferingPlayer
D/FFplayer( 135): end of onBufferingThread
I/AudioHardwareALSA( 135): Audio exiting sandby will open audio device
E/DecodeAudio( 135): mConfig->nrChans = -1,mConfig->samplingRate = 0
E/AudioSink( 135): received unknown event type: 1 inside CallbackWrapper !
W/gralloc ( 132): Debugmem The fd=80, in vmalloc !!!! Ishwc=0
I/MediaFocusControl( 508): AudioFocus requestAudioFocus() from android.media.AudioManager@418ca3e0com.rockchip.mediacenter.plugins.musicplay.l@418b9ae0
I/ActivityManager( 508): Displayed com.rockchip.mediacenter/.plugins.musicplay.MusicPlayer: +279ms
D/mali_winsys( 2423): new_window_surface returns 0x3000
W/gralloc ( 132): Debugmem The fd=43, in vmalloc !!!! Ishwc=0
V/ALSAModule( 135): SAMPLERATE:44100
D/ALSAModule( 135): open called for devices 00000800 in mode 0...
D/ALSAModule( 135): DevName: AndroidPlayback_Spdif_normal
E/ALSAModule( 135): buffersize: 3072, periodsize:1024
V/ALSAModule( 135): Set PLAYBACK PCM format to S16_LE (Signed 16 bit Little Endian)
V/ALSAModule( 135): Using 2 channels for PLAYBACK.
V/ALSAModule( 135): Set PLAYBACK sample rate to 44100 HZ
E/ALSAModule( 135): audio type flag: 0
V/ALSAModule( 135): Buffer size: 3072(frames) period Size: 1024(frames) periods: 3 (buffersize=periodSize*periods)
V/ALSAModule( 135): Latency: 69659 periodTime: 23219
D/ALSAModule( 135):
D/ALSAModule( 135): DumpHandleInfo:
D/ALSAModule( 135): devices: 0xbfff
D/ALSAModule( 135): format: 0x2
D/ALSAModule( 135): channels: 2
D/ALSAModule( 135): sampleRate: 44100
D/ALSAModule( 135): latency: 69659
D/ALSAModule( 135): periodSize:1024
D/ALSAModule( 135): bufferSize:3072
Отладочные сообщения в предыдущих сборках 4.2.2 JB для RK3066 и RK3188 менее информативны, но результат “работы” системных плееров идентичен:
Чтобы не пытаться переписать libStageFright с обходчиком RK-декодера, можно поискать полный исходный код библиотек.
Структура WAVDecoder’а известна по заголовочному файлу:
Пути в полном SDK (который имеется у разработчиков), и некоторую информацию о расположении недостающих файлах с исходным кодом, можно почерпнуть из бинарного файла библиотеки:
, и, в частности, можно предположить заимствование частей кода из декодеров для других платформ (чтобы, по крайней мере, понять логику преобразований):
Пока без выводов, но довольно неожиданно, поскольку казалось что платформа уже была достаточно глубоко изучена в плане звуковоспроизведения под Андроид. Даже если на этом этапе есть неудобства или выявляются баги, то рано или поздно коды и этих библиотек будут доведены до ума, и аппаратные возможности обработки могут сыграть даже большую роль, чем развитие звуковых возможностей Linux/Android .
28.12.2015, 12:04
aluver
Re: USB DAC и USB Audio для Android
Цитата:
Сообщение от HoSStiA
По отладочным сообщениям сборки, на этапе декодирования тестовой записи с частотой дискретизации 48Mhz происходит ошибка, после которой исходным материал “прореживается” до 44100 неведомыми алгоритмами внутри одной из закрытых библиотек, хотя до этого момента FFplayer честно пытается воспроизвести аудиоматериал без изменений:
Выделил подозрительные строчки:
После прочтения съесть!
Код:
E/FFplayer( 135): setDataSource offset =0,length = 1949074
I/FFplayer( 135): setDataSource(url =file/fd::24,offset::0)
I/FFplayer( 135): setDataSource(fileurl =/mnt/internal_sd/Music/110408__sandyrb__tubular-009.wav)
E/FFplayer( 135): ffmpeg version 1-6
E/FFplayer( 135): av_probe_input_buffer:avio_read
I/FFplayer( 135): flv_probe get probe score: 0
E/FFplayer( 135): Hery, probe size = 0
E/FFplayer( 135): avformat_open_input:read_header
E/FFplayer( 135): avformat_open_input:read_header ok
E/FFplayer( 135): Hery, s->iformat->name = wav
E/FFplayer( 135): Hery, s->duration = -9223372036854775808.000000
D/FFplayer( 135): There is not appleHls need find video Info
E/FFplayer( 135): estimate_timings:0: start_time: -9223372036854.775 duration: 0.325,base_time.den=48000,base_time.num=1
E/FFplayer( 135): stream: start_time: -9223372036854.775 duration: 6.764 bitrate=2305 kb/s
E/FFplayer( 135): audio name = pcm_s24le
D/FFplayer( 135): AudioStartTime=0,VideoStartTime=-1,tmpTime=-1
D/FFplayer( 135): setDataSource:start_time set 0
E/FFplayer( 135): FILE = /mnt/internal_sd/Music/110408__sandyrb__tubular-009.wav
D/FFplayer( 135): prepareAsync:prepare
I/FFplayer( 135): prepare in
I/FFplayer( 135): prepareVideo
E/FFplayer( 135): mVideoStreamIndex is -1
I/FFplayer( 135): prepareAudio
E/FFplayer( 135): Hery, Audio stream->codec->codec_id = 65548 D/FFplayer( 135): open MediaDecoder.cfg failed,so can't config anything
D/FFplayer( 135): File not exists!
I/FFplayer( 135): prepareSubtitle
I/FFplayer( 135): prepare ok
...
D/FFplayer( 135): initAudioPlayer
I/FFplayer( 135): ******************************************
I/FFplayer( 135):
I/RkAudioPlayer( 135): mAudioSink->open in mSampleRate = 48000 channels = 2
I/FFplayer( 135): starting main player thread:2014-1-21
I/RkAudioPlayer( 135): audio mode: 0
I/FFplayer( 135):
I/FFplayer( 135):
I/FFplayer( 135): ******************************************
I/FFplayer( 135): decodeMovie:mCurrentState = 8
I/AudioTrack( 135): set() streamType 3 frameCount 4458 flags 0000 channelMask 3 sampleRate 48000 format 1
D/FFplayer( 135): start ok
E/DecodeAudio( 135): mStream->codec->channels = 2 mStream->codec->sample_rate = 48000
I/FFplayer( 135): decodeMovie:BufferingPlayer 0x0
I/FFMpegThread( 135): starting thread
D/DecodeAudio( 135): prepare()
E/FFplayer( 135): Hery, FF_MediaPlayer::BufferingPlayer
D/FFplayer( 135): end of onBufferingThread
I/AudioHardwareALSA( 135): Audio exiting sandby will open audio device E/DecodeAudio( 135): mConfig->nrChans = -1,mConfig->samplingRate = 0
E/AudioSink( 135): received unknown event type: 1 inside CallbackWrapper !
W/gralloc ( 132): Debugmem The fd=80, in vmalloc !!!! Ishwc=0
I/MediaFocusControl( 508): AudioFocus requestAudioFocus() from android.media.AudioManager@418ca3e0c...plugins.musicplay.l@418b9ae0
I/ActivityManager( 508): Displayed com.rockchip.mediacenter/.plugins.musicplay.MusicPlayer: +279ms
D/mali_winsys( 2423): new_window_surface returns 0x3000
W/gralloc ( 132): Debugmem The fd=43, in vmalloc !!!! Ishwc=0 V/ALSAModule( 135): SAMPLERATE:44100
D/ALSAModule( 135): open called for devices 00000800 in mode 0...
D/ALSAModule( 135): DevName: AndroidPlayback_Spdif_normal
E/ALSAModule( 135): buffersize: 3072, periodsize:1024
V/ALSAModule( 135): Set PLAYBACK PCM format to S16_LE (Signed 16 bit Little Endian)
V/ALSAModule( 135): Using 2 channels for PLAYBACK.
V/ALSAModule( 135): Set PLAYBACK sample rate to 44100 HZ
E/ALSAModule( 135): audio type flag: 0
V/ALSAModule( 135): Buffer size: 3072(frames) period Size: 1024(frames) periods: 3 (buffersize=periodSize*periods)
V/ALSAModule( 135): Latency: 69659 periodTime: 23219
D/ALSAModule( 135):
D/ALSAModule( 135): DumpHandleInfo:
D/ALSAModule( 135): devices: 0xbfff
D/ALSAModule( 135): format: 0x2
D/ALSAModule( 135): channels: 2
D/ALSAModule( 135): sampleRate: 44100
D/ALSAModule( 135): latency: 69659
D/ALSAModule( 135): periodSize:1024
D/ALSAModule( 135): bufferSize:3072
Что лично мне в этом понятно:
1. Вначале какой-то MediaDecoder.cfg ищется. Сомневаюсь конечно, но может проблема его отсутствия дает сей результат?
2. На этапе декодирования и подготовки к передаче потока альсе происходит ошибка конфигурирования потока - указан нулевой семплрейт: mConfig->nrChans = -1,mConfig->samplingRate = 0. Частота при этом сбрасывается.
3. Альса принимает решение гнать поток на spdif согласно забитому в конфиге (?) дефолтному значению частоты семплирования для устройства AndroidPlayback_Spdif_normal.
Но тогда получается все должно быть наоборот - на выходе должно быть 44100 вместо по факту видимых 48000 (если креатив не обманывает), и звук в итоге должен замедлиться, а не ускорится :dntknw::facepalm:
Или я не прав?
28.12.2015, 17:06
HoSStiA
Вложений: 1
Re: USB DAC и USB Audio для Android
Цитата:
Сообщение от aluver
Но тогда получается все должно быть наоборот - на выходе должно быть 44100 вместо по факту видимых 48000 (если креатив не обманывает), и звук в итоге должен замедлиться, а не ускорится
Или я не прав?
Скриншот был сделан в момент воспроизведения через alsa_aplay, т.е. с честными 48kHz. При воспроизведении "ускоренного" декодером потока Creative показывает 44100.
Код для JB Rockchip_4.2_release_libstagefright обнаружился в одном из репозиториев, в частности и WAVDecoder.cpp:
, а также прекомпилированная библиотека для линковки libstagefright_wavdec.a
Цитата:
Сообщение от aluver
2. На этапе декодирования и подготовки к передаче потока альсе происходит ошибка конфигурирования потока - указан нулевой семплрейт: mConfig->nrChans = -1,mConfig->samplingRate = 0. Частота при этом сбрасывается.
При этом сообщение прилетело как бы из OMX.dolby.ac3.decoder , на основе которого (судя по последнему комментарию в конце, и здесь тоже), построен WAV-декодер.
---------- Сообщение добавлено 28.12.2015 в 17:17 ----------
Цитата:
Сообщение от aluver
D/FFplayer( 135): open MediaDecoder.cfg failed,so can't config anything
---------- Сообщение добавлено 28.12.2015 в 17:29 ----------
Пример MediaDecoder.cfg для плеера на RK3288
Код:
1 M1V V yes no
2 M2V V yes no
13 MPEG4 V yes no
22 FLV V yes no
28 H264 V yes no
70 RV30 V yes no
71 RV40 V yes no
72 VC1 V yes no
142 VP8 V yes no
8 MJPEG V yes no
18 WMV1 V yes no
19 WMV2 V yes no
73 WMV3 V yes no
5 H263 V yes no
86020 DTS A yes no
86019 AC3 A yes no
86047 ATARC A yes no
86057 E-AC-3 A yes no
0
Скриншот был сделан в момент воспроизведения через alsa_aplay, т.е. с честными 48kHz
теперь все понятно, едем дальше.
Цитата:
Сообщение от HoSStiA
При этом сообщение прилетело как бы из OMX.dolby.ac3.decoder , на основе которого (судя по последнему комментарию в конце, и здесь тоже), построен WAV-декодер.
а что будет, если воспроизводить не стоковым, а сторонним "умным" плеером типа poweramp, который сам будет декодировать поток в pcm? т.е. обойти декодирование системными средствами?
Цитата:
Сообщение от HoSStiA
посредством которых могут быть возвращен софтверный (OMX.google.) декодер (?)
build properties поправить можно и попробовать ради эксперимента...
и еще вариант, а не получится ли путем конфигурирования MediaDecoder.cfg отправить альсе недекодированный wav? :eek:
29.12.2015, 13:43
HoSStiA
Re: USB DAC и USB Audio для Android
Цитата:
Сообщение от aluver
и еще вариант, а не получится ли путем конфигурирования MediaDecoder.cfg отправить альсе недекодированный wav?
Вышеприведенный конфигурационный файл принимает, в т.ч. если добавить строку вида
Код:
8601865548 WAV A yes no
65536 WAV A yes no
, но это повлияло пока ни при одной комбинации значений yes/no. работает, но для воспроизведение WAV, по крайней мере через S/PDIF (в т.ч. 44100/16bit), требуется HW/SW декодирование.
Код:
I/FFplayer( 133): prepareAudio
E/FFplayer( 133): Hery, Audio stream->codec->codec_id = 65536
D/FFplayer( 133): *******deltime=67
D/FFplayer( 133): this need HW/SW decode
Цитата:
Сообщение от aluver
а что будет, если воспроизводить не стоковым, а сторонним "умным" плеером типа poweramp, который сам будет декодировать поток в pcm? т.е. обойти декодирование системными средствами?
PowerAmp также решил воспользоваться услугами FFPlayer, декодировавшим в 44100
После прочтения съесть!
Код:
E/MediaPlayerFactory( 134): MediaPlayerFactory::getDefaultPlayerType
I/MediaPlayerFactory( 134): getDefaultPlayerType in
D/MetadataRetrieverClient( 134): start FFPLAYER
I/RKMetadataRetriever( 134): setDataSource(25, 0, 1949074)
D/RKMetadataRetriever( 134): setDataSource:filePath=/mnt/internal_sd/Music/110408__sandyrb__tubular-009.wav
I/AudioTrack( 1664): set() streamType 3 frameCount 9600 flags 0000 channelMask 3 sampleRate 48000 format 1
I/MediaFocusControl( 485): AudioFocus requestAudioFocus() from android.media.AudioManager@4190ee88com.maxmpz.audioplayer.player.PlayerService$20@417ada30
I/MediaFocusControl( 485): Remote Control registerMediaButtonIntent() for PendingIntent{41dd7fa8: PendingIntentRecord{41ba8258 com.maxmpz.audioplayer broadcastIntent}}
I/AudioHardwareALSA( 134): Audio exiting sandby will open audio device
W/KeyguardUpdateMonitor( 561): Ignoring generation id 14 because it's not current
V/ALSAModule( 134): SAMPLERATE:44100
D/ALSAModule( 134): open called for devices 00000800 in mode 0...
D/ALSAModule( 134): DevName: AndroidPlayback_Spdif_normal
E/ALSAModule( 134): buffersize: 3072, periodsize:1024
V/ALSAModule( 134): Set PLAYBACK PCM format to S16_LE (Signed 16 bit Little Endian)
V/ALSAModule( 134): Using 2 channels for PLAYBACK.
V/ALSAModule( 134): Set PLAYBACK sample rate to 44100 HZ
E/ALSAModule( 134): audio type flag: 0
V/ALSAModule( 134): Buffer size: 3072(frames) period Size: 1024(frames) periods: 3 (buffersize=periodSize*periods)
V/ALSAModule( 134): Latency: 69659 periodTime: 23219
D/ALSAModule( 134):
D/ALSAModule( 134): DumpHandleInfo:
D/ALSAModule( 134): devices: 0xbfff
D/ALSAModule( 134): format: 0x2
D/ALSAModule( 134): channels: 2
D/ALSAModule( 134): sampleRate: 44100
D/ALSAModule( 134): latency: 69659
D/ALSAModule( 134): periodSize:1024
D/ALSAModule( 134): bufferSize:3072
W/gralloc ( 131): Debugmem The fd=64, in vmalloc !!!! Ishwc=0
D/AudioHardwareALSA( 134): AudioStreamOutALSA::standby().....
, либо я не подобрал нужных настроек.
Какие независимые приложения еще есть на примете? (не UAPP)
29.12.2015, 16:37
aluver
Re: USB DAC и USB Audio для Android
Цитата:
Сообщение от HoSStiA
Вышеприведенный конфигурационный файл принимает, в т.ч. если добавить строку вида 86018 WAV A yes no, но это повлияло пока ни при одной комбинации значений yes/no.
PowerAmp также решил воспользоваться услугами FFPlayer, декодировавшим в 44100, либо я не подобрал нужных настроек.
Какие независимые приложения еще есть на примете? (не UAPP)
И с комбинацией "no no" не прошло?
Интересно, как poweramp может отдавать в wav, если он обязан декодировать еще перед применением своих обработок (eq и т.д.)? :sad:
Neutron Music Player тоже должен декодировать сам.
29.12.2015, 17:11
x-diz
Re: USB DAC и USB Audio для Android
HoSStiA, а что скажете про чип RK3368? Вкратце. Без подробностей. Хуже/лучше чем те что тестируете?
29.12.2015, 20:20
HoSStiA
Вложений: 1
Re: USB DAC и USB Audio для Android
Цитата:
Сообщение от aluver
Интересно, как poweramp может отдавать в wav, если он обязан декодировать еще перед применением своих обработок (eq и т.д.)?
Neutron Music Player тоже должен декодировать сам.
Не буду гадать почему, лучше попробую Neutron в ближайшее время.
Цитата:
Сообщение от aluver
И с комбинацией "no no" не прошло?
Проверю еще раз тоже.
Цитата:
Сообщение от x-diz
HoSStiA, а что скажете про чип RK3368? Вкратце. Без подробностей. Хуже/лучше чем те что тестируете?
Как известно, несмотря на 8 китайских ядер, первые тесты RK3368 были маловпечатляющими:
Неожиданная замена GPU с Mali на PoverVR под вопросом. Но,с PoverVR SGX530 было дело помучиться на TI Beaglebone Black, поэтому и к G6110 заочно отношусь с опаской, тем более на сырой 64-bit платформе.
Allwinner A80 также не представляет явной конкуренции RK3288,
, хотя пару месяцев назад подумывал взять Cubieboard 8 для экспериментов.
Но сейчас намного привлекательнее по соотношению цена/качество выглядит Orange Pi 2 на Allwinner H3:
---------- Сообщение добавлено 30.12.2015 в 17:46 ----------
Цитата:
Сообщение от aluver
Neutron Music Player тоже должен декодировать сам.
По крайней мере, NeutronMP работает напрямую через AudioSystem (в обход FFplayer), но все равно преобразовывает к 44100.
Следовательно, проблемы не в декодере, а где-то на этом уровне, либо все-таки audio_policy (HAL).
После прочтения съесть!
Код:
I/ActivityManager( 483): START u0 {act=android.intent.action.VIEW dat=file:///mnt/internal_sd/Music/110408__sandyrb__tubular-009.wav typ=audio/x-wav flg=0x4000000 cmp=com.neutroncode.mp/.NeutronMPCore (has extras)} from pid 1543
I/ActivityManager( 483): Displayed com.neutroncode.mp/.NeutronMPCore: +91ms
I/NeutronMP( 1871): - VISIBLE=(TRUE) begin...
I/NeutronMP( 1871): Player| stop passive updater
I/NeutronMP( 1871): Player| trying to play file: /mnt/internal_sd/Music/110408__sandyrb__tubular-009.wav
W/NeutronMP( 1871): Player| _UpdateDisplayOnNewTrack: no current playlist
W/NeutronMP( 1871): Player| _UpdateDisplayOnNewTrack: no current playlist entry
I/NeutronMP( 1871): Player| cancel hibernation...
I/NeutronMP( 1871): Player| starting DSP visual services
I/NeutronMP( 1871): Player| cancel hibernation - done
I/NeutronMP( 1871): Player| audio focus: request
I/NeutronMP( 1871): Player| Idle state: 0
I/NeutronMP( 1871): MP| OnUpdaterThreadChanged | attached[0]
I/NeutronMP( 1871): Player| stop passive updater - done
I/NeutronMP( 1871): SFX| -------------------------
I/NeutronMP( 1871): MP| OnUpdaterThreadChanged | attached[1]
I/MediaFocusControl( 483): AudioFocus requestAudioFocus() from android.media.AudioManager@41991090null
I/NeutronMP( 1871): MP| APP_UICreate | creating UI
I/NeutronMP( 1871): MP| - creating GFX Device
I/NeutronMP( 1871): SFX| HW buffer:
I/NeutronMP( 1871): SFX| device: hw-frames | 11150
I/NeutronMP( 1871): SFX| device: hw-bytes | 44600
I/NeutronMP( 1871): SFX| device: sw-latency| 27 ms
I/NeutronMP( 1871): MP| - creating GFX Renderer
I/NeutronMP( 1871): SFX| device: hw-latency| 252 ms
I/NeutronMP( 1871): SFX| -------------------------
I/AudioTrack( 1871): set() streamType 3 frameCount 11150 flags 0000 channelMask 3 sampleRate 44100 format 1
I/NeutronMP( 1871): MP| - creating GFX Camera
I/NeutronMP( 1871): MP| - creating GFX GUIManager
I/NeutronMP( 1871): MP| - loading UI layout base
I/NeutronMP( 1871): MP| - loading UI layout
I/AudioHardwareALSA( 133): Audio exiting sandby will open audio device
V/ALSAModule( 133): SAMPLERATE:44100
D/ALSAModule( 133): open called for devices 00000800 in mode 0...
D/ALSAModule( 133): DevName: AndroidPlayback_Spdif_normal
E/ALSAModule( 133): buffersize: 3072, periodsize:1024
V/ALSAModule( 133): Set PLAYBACK PCM format to S16_LE (Signed 16 bit Little Endian)
V/ALSAModule( 133): Using 2 channels for PLAYBACK.
V/ALSAModule( 133): Set PLAYBACK sample rate to 44100 HZ
E/ALSAModule( 133): audio type flag: 0
V/ALSAModule( 133): Buffer size: 3072(frames) period Size: 1024(frames) periods: 3 (buffersize=periodSize*periods)
V/ALSAModule( 133): Latency: 69659 periodTime: 23219
D/ALSAModule( 133):
D/ALSAModule( 133): DumpHandleInfo:
D/ALSAModule( 133): devices: 0xbfff
D/ALSAModule( 133): format: 0x2
D/ALSAModule( 133): channels: 2
D/ALSAModule( 133): sampleRate: 44100
D/ALSAModule( 133): latency: 69659
D/ALSAModule( 133): periodSize:1024
D/ALSAModule( 133): bufferSize:3072
I/NeutronMP( 1871): MP| - initializing Input
I/NeutronMP( 1871): MP| - finalizing UI
I/NeutronMP( 1871): Player| changing display to Normal
W/NeutronMP( 1871): Player| _UpdateDisplayOnNewTrack: no current playlist
W/NeutronMP( 1871): Player| _UpdateDisplayOnNewTrack: no current playlist entry
I/NeutronMP( 1871): Player| started CPU power saving
I/NeutronMP( 1871): Player| stopped CPU power saving
W/NeutronMP( 1871): Player| _UpdateDisplayOnNewTrack: no current playlist
W/NeutronMP( 1871): Player| _UpdateDisplayOnNewTrack: no current playlist entry
I/NeutronMP( 1871): Player| AGP status: resume
I/NeutronMP( 1871): Player| activating preamp[OFF]
I/NeutronMP( 1871): Player| activating crossfeed[OFF]
I/NeutronMP( 1871): Player| activating crossfeed[OFF]
I/NeutronMP( 1871): Player| activating fade[OFF]
I/NeutronMP( 1871): Player| activating crossfade[OFF]
I/NeutronMP( 1871): Player| activating dithering[OFF]
I/NeutronMP( 1871): Player| activating pback mode[OFF]
I/NeutronMP( 1871): Player| activating shuffle[OFF]
I/NeutronMP( 1871): Player| changing display to Large
W/NeutronMP( 1871): Player| _UpdateDisplayOnNewTrack: no current playlist
W/NeutronMP( 1871): Player| _UpdateDisplayOnNewTrack: no current playlist entry
I/NeutronMP( 1871): MP| APP_UICreate | creating UI - done
W/NeutronMP( 1871): Player| _UpdateDisplayOnNewTrack: no current playlist
W/NeutronMP( 1871): Player| _UpdateDisplayOnNewTrack: no current playlist entry
I/NeutronMP( 1871): Player| Idle state: 0
I/NeutronMP( 1871): Player| Idle state: 1
Кроме того, в SDK RK Android 5.1 код FFplayer в интерпретации RK полностью немного более открытый, равно как и все что связано с декодерами через libvpu. Что также упрощает поиски.
02.01.2016, 18:10
HoSStiA
Вложений: 7
Re: USB DAC и USB Audio для Android
Продолжим.
Файл /etc/MediaDecoder.cfg ,как было исправлено выше, но с параметрами
Код:
65548 WAV A no no
65536 WAV A no no
может препятствовать декодированию аудиоданных, но в случае воспроизведения .WAV (raw) аудиоформатов это не работает без декодирования, так как подсистема S/PDIF ожидает аудиоданные в формате AC3 или DTS (5.1).
У плеера XBMC есть специальные режимы, позволяющие дополнительно зафиксировать желаемые настройки, Вложение 923188Вложение 923190Вложение 923192Вложение 923194Вложение 923196Вложение 923198Вложение 923200,
но на Android-RK форсирование частоты дискретизации потока до 48000 Гц в стерео-режиме приводит к конфликту с подсистемой AudioSystem:AudioTrack Андроида, которая всегда устанавливает по дескрипторам устройства частоту дискретизации потока в 44100 Гц (вне зависимости от частоты форсирования).
Симптоматика для различных плееров, в целом, схожая, и говорит про невозможность передачи данных без преобразований:
Назначение неверной частоты дискретизации инициируется из frameworks/av/media/libmedia/AudioTrack.cpp , что влияет на остальные аудиосервисы.
AndroidPlayback_Spdif_normal при этом описан без каких-либо ограничений на уровне ALSA:
После прочтения съесть!
##
## # Spdif
##
pcm.AndroidPlayback_Spdif_normal {
type plug
slave.pcm {
type hw
card 1
device 0
}
}
02.01.2016, 19:04
aluver
Re: USB DAC и USB Audio для Android
Жаль... в случае с AC3 & DTS он их отправит на spdif в недекодированном виде, то есть неизменно... По крайней мере кино можно посмотреть :)
Теперь только править Audiotrack.cpp? ГЫ ГЫ ГЫ