Форум автозвука и установки музыки в автомобиль
Страница 45 из 260 ПерваяПервая ... 354142434445464748495595145 ... ПоследняяПоследняя
Показано с 441 по 450 из 2599

USB DAC и USB Audio для Android

  1. #441
    Ушел в ЛАС Технический директор Array Репутация: лучше не знать Аватар для HoSStiA
    Регистрация
    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.
    Нажмите на изображение для увеличения
Название: 2015-12-28.png
Просмотров: 0
Размер:	15.9 Кб
ID:	921544

    "Трассировка" сборки из RockChip 4.4.2 KK SDK привела к большой группе закрытых библиотек в SDK RockChip, являющихся еще одной прослойкой между frameworks/av/media/rkffplayer (системный аудиоплеер для RockChip Android) и подсисиемой ALSA.

    Библиотеки, по сути, являются плагинами libvpu:

    После прочтения съесть!

    device/rockchip/common/vpu/lib$ ls -la
    libapedec.so libhevcdec.so libjpeghwenc.so libomxvpu_enc.so librkboxffplayer.so librk_hevcdec.so librkswscale.so libstagefrighthw.so
    libffmpeg.so libjesancache.so libOMX_Core.so librk_audio.so librk_demux.so libRkOMX_Resourcemanager.so librkwmapro.so
    libffmpeg_vp9dec.so libjpeghwdec.so libomxvpu_dec.so libRKBluray.so librkffplayer.so librk_on2.so libstagefright_hdcp.so

    , и обеспечивают аппаратное декодирование на уровне libstagefright https://source.android.com/devices/media/index.html

    В качестве примера очередного “подарка” можно привести декларацию RK_AUDIO_DEC_LIB = "librk_audio.so" из

    После прочтения съесть!


    , которая затем инициализирует декодер из “черного ящика”:
    Код:
    sp<MediaSource> decoder = rkAudioDecoder(source, decoderType);
    По отладочным сообщениям сборки, на этапе декодирования тестовой записи с частотой дискретизации 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 менее информативны, но результат “работы” системных плееров идентичен:

    После прочтения съесть!


    Код:
    E/MediaPlayerFactory(   96): MediaPlayerFactory::getDefaultPlayerType
    I/MediaPlayerFactory(   96): getDefaultPlayerType in
    D/MediaPlayerFactory(   96): createPlayer:playerType=7
    I/MediaPlayerFactory(   96):  create FFPlayer
    I/FFMpegMediaPlayer(   96): setDataSource(file/fd::16,offset::0)
    E/FFMpegMediaPlayer(   96): ffmpeg version 2-19
    E/FFMpegMediaPlayer(   96): avio_open2:open
    E/FFMpegMediaPlayer(   96): avio_open2:open ok
    E/FFMpegMediaPlayer(   96): av_probe_input_buffer:avio_read
    I/FFMpegMediaPlayer(   96): flv_probe get probe score: 0
    E/FFMpegMediaPlayer(   96): Hery, probe size = 0
    E/FFMpegMediaPlayer(   96): avformat_open_input:read_header
    E/FFMpegMediaPlayer(   96): avformat_open_input:read_header ok
    E/FFMpegMediaPlayer(   96): Hery, s->iformat->name = wav
    E/FFMpegMediaPlayer(   96): FILE = /mnt/sdcard/Music/110408__sandyrb__tubular-009.wav
    I/FFMpegMediaPlayer(   96): prepareVideo
    E/FFMpegMediaPlayer(   96): mVideoStreamIndex is -1
    I/FFMpegMediaPlayer(   96): prepareAudio
    E/FFMpegMediaPlayer(   96): Hery, Audio stream->codec->codec_id = 65548
    I/FFMpegMediaPlayer(   96): prepareSubtitle
    V/MusicFXControlPanelReceiver( 2140): onReceive
    V/MusicFXControlPanelReceiver( 2140): Action: android.media.action.OPEN_AUDIO_EFFECT_CONTROL_SESSION
    V/MusicFXControlPanelReceiver( 2140): Package name: com.android.music
    V/MusicFXControlPanelReceiver( 2140): Audio session: 19
    D/MediaPlaybackService( 2261): **********************Playing file:/mnt/sdcard/Music/110408__sandyrb__tubular-009.wav
    I/AudioService(  355):  AudioFocus  requestAudioFocus() from android.media.AudioManager@414af290com.android.music.b@414ae320
    I/AudioService(  355):   Remote Control   registerMediaButtonIntent() for PendingIntent{414c2720: PendingIntentRecord{413c9fd0 com.android.music broadcastIntent}}
    E/FFMpegMediaPlayer(   96): start in mCurrentState in
    E/FFMpegMediaPlayer(   96): start in mCurrentState = 8
    I/RkAudioPlayer(   96): mAudioSink->open in mSampleRate = 48000 channels = 2
    I/FFMpegMediaPlayer(   96): ******************************************
    I/FFMpegMediaPlayer(   96): 
    I/FFMpegMediaPlayer(   96): starting main player thread:2013-2-24 
    I/FFMpegMediaPlayer(   96): 
    I/FFMpegMediaPlayer(   96): 
    I/FFMpegMediaPlayer(   96): ******************************************
    I/FFMpegMediaPlayer(   96): mCurrentState = 8
    E/FFMpegMediaPlayer(   96): Hery, FF_MediaPlayer::BufferingPlayer
    D/FFMpegMediaPlayer(   96): end of onBufferingThread
    I/        (   96): starting thread
    D/AUDIO_DECOE(   96): prepare()
    D/MediaPlaybackActivity( 2261): initListView
    D/MediaPlaybackActivity( 2261): mAdapter null
    D/MediaPlaybackActivity( 2261): getColumIndices
    D/MediaPlaybackActivity( 2261): getTrackCursor
    E/MediaPlayerFactory(   96): MediaPlayerFactory::getDefaultPlayerType
    I/MediaPlayerFactory(   96): getDefaultPlayerType in
    D/MetadataRetrieverClient(   96): start FFPLAYER
    I/RKMetadataRetriever(   96): setDataSource(35, 0, 1949074)
    D/RKMetadataRetriever(   96): setDataSource:filePath=/mnt/sdcard/Music/110408__sandyrb__tubular-009.wav
    E/FFMpegMediaPlayer(   96): ffmpeg version 2-19
    E/FFMpegMediaPlayer(   96): avio_open2:open
    E/FFMpegMediaPlayer(   96): avio_open2:open ok
    E/FFMpegMediaPlayer(   96): av_probe_input_buffer:avio_read
    I/FFMpegMediaPlayer(   96): flv_probe get probe score: 0
    E/FFMpegMediaPlayer(   96): Hery, probe size = 0
    E/FFMpegMediaPlayer(   96): avformat_open_input:read_header
    E/FFMpegMediaPlayer(   96): avformat_open_input:read_header ok
    E/MediaPlayerFactory(   96): MediaPlayerFactory::getDefaultPlayerType
    I/MediaPlayerFactory(   96): getDefaultPlayerType in
    
    D/MetadataRetrieverClient(   96): start FFPLAYER
    I/RKMetadataRetriever(   96): setDataSource(35, 0, 1949074)
    D/RKMetadataRetriever(   96): setDataSource:filePath=/mnt/sdcard/Music/110408__sandyrb__tubular-009.wav
    E/FFMpegMediaPlayer(   96): ffmpeg version 2-19
    E/FFMpegMediaPlayer(   96): avio_open2:open
    E/FFMpegMediaPlayer(   96): avio_open2:open ok
    E/FFMpegMediaPlayer(   96): av_probe_input_buffer:avio_read
    I/FFMpegMediaPlayer(   96): flv_probe get probe score: 0
    E/FFMpegMediaPlayer(   96): Hery, probe size = 0
    E/FFMpegMediaPlayer(   96): avformat_open_input:read_header
    E/FFMpegMediaPlayer(   96): avformat_open_input:read_header ok


    Чтобы не пытаться переписать libStageFright с обходчиком RK-декодера, можно поискать полный исходный код библиотек.
    Структура WAVDecoder’а известна по заголовочному файлу:

    После прочтения съесть!



    Пути в полном SDK (который имеется у разработчиков), и некоторую информацию о расположении недостающих файлах с исходным кодом, можно почерпнуть из бинарного файла библиотеки:

    После прочтения съесть!


    frameworks/av/media/libstagefright/rkaudiodecoder/wavdec/WAVDecoder.cpp:106 CHECK(!mStarted) failed.
    frameworks/av/media/libstagefright/rkaudiodecoder/wavdec/WAVDecoder.cpp:53 CHECK(srcFormat->findInt32(kKeyChannelCount, &mNumChannels)) failed.

    frameworks/av/media/libstagefright/rkaudiodecoder/wmadec/WMADecoder.cpp
    frameworks/av/media/libstagefright/rkaudiodecoder/wmapro/WMAPRODecoder.cpp


    Некоторые куски дикого кода из этой же серии



    , и, в частности, можно предположить заимствование частей кода из декодеров для других платформ (чтобы, по крайней мере, понять логику преобразований):

    После прочтения съесть!




    Пока без выводов, но довольно неожиданно, поскольку казалось что платформа уже была достаточно глубоко изучена в плане звуковоспроизведения под Андроид. Даже если на этом этапе есть неудобства или выявляются баги, то рано или поздно коды и этих библиотек будут доведены до ума, и аппаратные возможности обработки могут сыграть даже большую роль, чем развитие звуковых возможностей Linux/Android .


  2. # 0+

    Если Вы впервые на нашем Форуме:

    1. Обратите внимание на список полезных тем в первом сообщении.
    2. Термины и наиболее популярные модели в сообщениях подсвечиваются быстрыми подсказками и ссылками на соответствующие статьи в МагВикипедии и Каталоге.
    3. Для изучения Форума не обязательно регистрироваться - практически весь профильный контент, включая файлы, картинки и видео, открыты для гостей.

    С наилучшими пожеланиями,
    Администрация Форума автозвука Магнитола


     

  3. #442
    Активист Бригадир
    Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация
    Репутация: 66830 Аватар для aluver
    Регистрация
    17.02.2015
    Город/село
    Москва, ЮЗАО
    Сообщений
    581
    Спасибо (Раздал)
    315
    Спасибо (Получил)
    627

    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 (если креатив не обманывает), и звук в итоге должен замедлиться, а не ускорится
    Или я не прав?


  4. #443
    Ушел в ЛАС Технический директор Array Репутация: лучше не знать Аватар для HoSStiA
    Регистрация
    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:

    После прочтения съесть!


    Не меньший интерес представляет и ImaDecoder.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
    В этом интересно разобраться, так как пишут:

    После прочтения съесть!

    pda.ru/forum/index.php?showtopic=598542&st=7440#entry40513715

    , или используют
    media.demux.cfg=Matroska_Wmv_Wav_Flv_Mpg_Mpeg2ts_A vi_Mov_Wma_Rm_Ogg_Mp3_Amr_Aac
    media.decoder.cfg=MP3_AMRNB_AMRWB_AAC_DTS_WMA_AC3_ RA_WAV_AVC_RV_FLV_M2V_VC1_G711_M4vH263_Vorbis_VPX

    После прочтения съесть!

    http://forum.xda-developers.com/show....php?t=1893308

    3.2 media.decoder.cfg
    此属性用于设置支持解码器类型,如果设置了此属性,那在属性中没有出现的解码器类型的视频
    将不能播放。
    先支持的屏蔽解码器类型,且书写格式如下:
    AC3_DTS_ATARC_EAC3_AAC_MP3_FLAC_AMRNB_AMRWB_PCM_MP2_M1V_M2V_MPEG4_
    FLV_H264_RV30_RV40_VC1_WMV3_VP8_MJPEG_WMV1_WMV2_WMV3_H263
    在 device/rockchip/rksdk/device.mk 添加上面的属性值。不同的平台对应的目录结构不同,但是
    都是在 device.mk 文件里修改。

    , посредством которых могут быть возвращен софтверный (OMX.google.) декодер (?)

    После прочтения съесть!



    ---------- Сообщение добавлено 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


    Вложения

  5. #444
    Активист Бригадир
    Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация
    Репутация: 66830 Аватар для aluver
    Регистрация
    17.02.2015
    Город/село
    Москва, ЮЗАО
    Сообщений
    581
    Спасибо (Раздал)
    315
    Спасибо (Получил)
    627

    Re: USB DAC и USB Audio для Android

    Цитата Сообщение от HoSStiA Посмотреть сообщение
    Скриншот был сделан в момент воспроизведения через alsa_aplay, т.е. с честными 48kHz
    теперь все понятно, едем дальше.

    Цитата Сообщение от HoSStiA Посмотреть сообщение
    При этом сообщение прилетело как бы из OMX.dolby.ac3.decoder , на основе которого (судя по последнему комментарию в конце, и здесь тоже), построен WAV-декодер.
    а что будет, если воспроизводить не стоковым, а сторонним "умным" плеером типа poweramp, который сам будет декодировать поток в pcm? т.е. обойти декодирование системными средствами?

    Цитата Сообщение от HoSStiA Посмотреть сообщение
    посредством которых могут быть возвращен софтверный (OMX.google.) декодер (?)
    build properties поправить можно и попробовать ради эксперимента...
    и еще вариант, а не получится ли путем конфигурирования MediaDecoder.cfg отправить альсе недекодированный wav?


  6. #445
    Ушел в ЛАС Технический директор Array Репутация: лучше не знать Аватар для HoSStiA
    Регистрация
    11.01.2004
    Город/село
    Столиця
    Сообщений
    13,050
    Спасибо (Раздал)
    11289
    Спасибо (Получил)
    14942
    Автор

    Re: USB DAC и USB Audio для Android

    Цитата Сообщение от aluver Посмотреть сообщение
    и еще вариант, а не получится ли путем конфигурирования MediaDecoder.cfg отправить альсе недекодированный wav?
    Вышеприведенный конфигурационный файл принимает, в т.ч. если добавить строку вида
    Код:
    86018 65548 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)


  7. #446
    Активист Бригадир
    Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация
    Репутация: 66830 Аватар для aluver
    Регистрация
    17.02.2015
    Город/село
    Москва, ЮЗАО
    Сообщений
    581
    Спасибо (Раздал)
    315
    Спасибо (Получил)
    627

    Re: USB DAC и USB Audio для Android

    Цитата Сообщение от HoSStiA Посмотреть сообщение
    Вышеприведенный конфигурационный файл принимает, в т.ч. если добавить строку вида 86018 WAV A yes no, но это повлияло пока ни при одной комбинации значений yes/no.

    PowerAmp также решил воспользоваться услугами FFPlayer, декодировавшим в 44100, либо я не подобрал нужных настроек.

    Какие независимые приложения еще есть на примете? (не UAPP)
    И с комбинацией "no no" не прошло?

    Интересно, как poweramp может отдавать в wav, если он обязан декодировать еще перед применением своих обработок (eq и т.д.)?

    Neutron Music Player тоже должен декодировать сам.


  8. #447
    ***** Мастер-приемщик
    Репутация Репутация
    Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация
    Репутация: 689773 Аватар для x-diz
    Регистрация
    15.01.2007
    Город/село
    Москва
    Сообщений
    5,982
    Спасибо (Раздал)
    14532
    Спасибо (Получил)
    11575
    Ветеран форума

    Re: USB DAC и USB Audio для Android

    HoSStiA, а что скажете про чип RK3368? Вкратце. Без подробностей. Хуже/лучше чем те что тестируете?


  9. #448
    Ушел в ЛАС Технический директор Array Репутация: лучше не знать Аватар для HoSStiA
    Регистрация
    11.01.2004
    Город/село
    Столиця
    Сообщений
    13,050
    Спасибо (Раздал)
    11289
    Спасибо (Получил)
    14942
    Автор

    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

    Нажмите на изображение для увеличения
Название: Screenshot_2011-01-02-12-08-46.png
Просмотров: 0
Размер:	86.7 Кб
ID:	922504

    Кроме того, в SDK RK Android 5.1 код FFplayer в интерпретации RK полностью немного более открытый, равно как и все что связано с декодерами через libvpu. Что также упрощает поиски.


  10. #449
    Ушел в ЛАС Технический директор Array Репутация: лучше не знать Аватар для HoSStiA
    Регистрация
    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 есть специальные режимы, позволяющие дополнительно зафиксировать желаемые настройки,
    Нажмите на изображение для увеличения
Название: Screenshot_2011-01-02-10-13-54.png
Просмотров: 0
Размер:	171.2 Кб
ID:	923188Нажмите на изображение для увеличения
Название: Screenshot_2011-01-02-10-17-55.png
Просмотров: 0
Размер:	446.7 Кб
ID:	923190Нажмите на изображение для увеличения
Название: Screenshot_2011-01-02-10-19-08.png
Просмотров: 0
Размер:	459.9 Кб
ID:	923192Нажмите на изображение для увеличения
Название: Screenshot_2011-01-02-10-31-50.png
Просмотров: 0
Размер:	462.0 Кб
ID:	923194Нажмите на изображение для увеличения
Название: Screenshot_2011-01-02-10-46-11.png
Просмотров: 0
Размер:	458.2 Кб
ID:	923196Нажмите на изображение для увеличения
Название: Screenshot_2011-01-02-10-46-46.png
Просмотров: 0
Размер:	454.7 Кб
ID:	923198Нажмите на изображение для увеличения
Название: Screenshot_2015-12-06-11-22-34.png
Просмотров: 0
Размер:	113.2 Кб
ID:	923200,
    но на Android-RK форсирование частоты дискретизации потока до 48000 Гц в стерео-режиме приводит к конфликту с подсистемой AudioSystem:AudioTrack Андроида, которая всегда устанавливает по дескрипторам устройства частоту дискретизации потока в 44100 Гц (вне зависимости от частоты форсирования).

    Симптоматика для различных плееров, в целом, схожая, и говорит про невозможность передачи данных без преобразований:
    Код:
    E/FFplayer(  133): FILE = /mnt/internal_sd/Music/110408__sandyrb__tubular-009.wav
    D/FFplayer(  133): prepareAsync:prepare
    I/FFplayer(  133): prepareAudio
    E/FFplayer(  133): Hery, Audio stream->codec->codec_id = 65548
    D/FFplayer(  133): *******deltime=1216
    D/FFplayer(  133): this need HW/SW decode

    После прочтения съесть!

    Код:
    V/XBMC    ( 1517): Debug Print: Loading settings for /mnt/internal_sd/Music/110408__sandyrb__tubular-009.wav
    V/XBMC    ( 1517): Debug Print: CPlayerCoreFactory::GetPlayers(/mnt/internal_sd/Music/110408__sandyrb__tubular-009.wav)
    V/XBMC    ( 2361): Debug Print: CActiveAE::ApplySettings - Forcing samplerate to 48000
    V/XBMC    ( 2361): Debug Print: CActiveAESink::OpenSink - initialize sink
    V/XBMC    ( 2361): Debug Print: CActiveAESink::OpenSink - trying to open device AUDIOTRACK:AudioTrack
    I/AudioTrack( 2361): set() streamType 3 frameCount 3072 flags 0000 channelMask 3 sampleRate 44100 format 1
    V/XBMC    ( 2361): Debug Print: CActiveAESink::OpenSink - AUDIOTRACK Initialized:
    V/XBMC    ( 2361): Debug Print:   Output Device : android
    V/XBMC    ( 2361): Debug Print:   Sample Rate   : 44100
    V/XBMC    ( 2361): Debug Print:   Sample Format : AE_FMT_S16NE
    V/XBMC    ( 2361): Debug Print:   Channel Count : 2
    V/XBMC    ( 2361): Debug Print:   Channel Layout: FL,FR
    V/XBMC    ( 2361): Debug Print:   Frames        : 1536
    V/XBMC    ( 2361): Debug Print:   Frame Samples : 3072
    V/XBMC    ( 2361): Debug Print:   Frame Size    : 4
    V/XBMC    ( 2361): Debug Print: Running database version Addons16


    Назначение неверной частоты дискретизации инициируется из 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
    }
    }



  11. #450
    Активист Бригадир
    Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация
    Репутация: 66830 Аватар для aluver
    Регистрация
    17.02.2015
    Город/село
    Москва, ЮЗАО
    Сообщений
    581
    Спасибо (Раздал)
    315
    Спасибо (Получил)
    627

    Re: USB DAC и USB Audio для Android

    Жаль... в случае с AC3 & DTS он их отправит на spdif в недекодированном виде, то есть неизменно... По крайней мере кино можно посмотреть
    Теперь только править Audiotrack.cpp?


Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
  cc by-nc-sa