Ушел в ЛАС
Технический директорArray
Репутация: лучше не знать
Регистрация
11.01.2004
Город/село
Столиця
Сообщений
13,050
Спасибо (Раздал)
11289
Спасибо (Получил)
14942
Re: USB DAC и USB Audio для Android
Накопилась очередная порция информации по RockChip, которую стоило бы уже опубликовать, чтобы случайно не потерялась.
Сообщение от aluver
Значит ли это, что SPDIF рокчипа не может 44.100 аппаратно?
RockChip S/PDIF аппаратно поддерживает до 16bit/48000 kHz, и только напрямую при воспроизведении через ALSA. Делать замеры “на лету” помогает утилита для карт Creative.
"Трассировка" сборки из 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 .
По отладочным сообщениям сборки, на этапе декодирования тестовой записи с частотой дискретизации 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 (если креатив не обманывает), и звук в итоге должен замедлиться, а не ускорится
Или я не прав?
Ушел в ЛАС
Технический директорArray
Репутация: лучше не знать
Регистрация
11.01.2004
Город/село
Столиця
Сообщений
13,050
Спасибо (Раздал)
11289
Спасибо (Получил)
14942
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?
Ушел в ЛАС
Технический директорArray
Репутация: лучше не знать
Регистрация
11.01.2004
Город/село
Столиця
Сообщений
13,050
Спасибо (Раздал)
11289
Спасибо (Получил)
14942
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)
Вышеприведенный конфигурационный файл принимает, в т.ч. если добавить строку вида 86018 WAV A yes no, но это повлияло пока ни при одной комбинации значений yes/no.
PowerAmp также решил воспользоваться услугами FFPlayer, декодировавшим в 44100, либо я не подобрал нужных настроек.
Какие независимые приложения еще есть на примете? (не UAPP)
И с комбинацией "no no" не прошло?
Интересно, как poweramp может отдавать в wav, если он обязан декодировать еще перед применением своих обработок (eq и т.д.)?
Neutron Music Player тоже должен декодировать сам.
Неожиданная замена 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. Что также упрощает поиски.
Ушел в ЛАС
Технический директорArray
Репутация: лучше не знать
Регистрация
11.01.2004
Город/село
Столиця
Сообщений
13,050
Спасибо (Раздал)
11289
Спасибо (Получил)
14942
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 есть специальные режимы, позволяющие дополнительно зафиксировать желаемые настройки, ,
но на Android-RK форсирование частоты дискретизации потока до 48000 Гц в стерео-режиме приводит к конфликту с подсистемой AudioSystem:AudioTrack Андроида, которая всегда устанавливает по дескрипторам устройства частоту дискретизации потока в 44100 Гц (вне зависимости от частоты форсирования).
Симптоматика для различных плееров, в целом, схожая, и говорит про невозможность передачи данных без преобразований:
Жаль... в случае с AC3 & DTS он их отправит на spdif в недекодированном виде, то есть неизменно... По крайней мере кино можно посмотреть
Теперь только править Audiotrack.cpp?
Социальные закладки