Привет. Вот тут мы с аноном подключили к Onion Omega2+ через i2s (не путать с i2c) АЦП pcm1808 и я получил худо-бедно звук с подключенных к ЦАП микрофонов. ЦАП выдает 24bit отсчеты с частотой 32000 в два канала. Проблем две:
-
arecord пишет звук нормально первые n минут/секунд после первого вызова. Потом начинает писать белый шум.
-
при этом gstreamer пишет всегда нормально, но только S16LE (не BE), на запрос S24BE/S16BE возвращает
streaming stopped, reason not-negotiated (-4)
, на запрос S24LE пишет шум.
Вопрос только один - как заставить gstreamer писать сырые данные в S24BE/S24LE? Почему не работает arecord меня волнует мало, сообщил для полноты картины.
Запись через arecord:
root@Omega-E194:~# arecord -d 10 -D plughw:0,0 -c 2 -r 32000 -f S24_BE -t raw /mnt/mmcblk0p1/alsa.raw --disable-channels --disable-resample -vvvv
Recording raw data '/mnt/mmcblk0p1/alsa.raw' : Signed 24 bit Big Endian, Rate 32000 Hz, Stereo
Plug PCM: Hardware PCM card 0 'Audio-I2S' device 0 subdevice 0
Its setup is:
stream : CAPTURE
access : RW_INTERLEAVED
format : S24_BE
subformat : STD
channels : 2
rate : 32000
exact rate : 32000 (32000/1)
msbits : 32
buffer_size : 16384
period_size : 1024
period_time : 32000
tstamp_mode : NONE
tstamp_type : MONOTONIC
period_step : 1
avail_min : 1024
period_event : 0
start_threshold : 1
stop_threshold : 16384
silence_threshold: 0
silence_size : 0
boundary : 1073741824
appl_ptr : 0
hw_ptr : 0
Версии софта
root@Omega-E194:~# arecord --version
arecord: version 1.1.6 by Jaroslav Kysela <perex@perex.cz>
root@Omega-E194:~# gst-launch-1.0 --version
gst-launch-1.0 version 1.12.4
hw caps с альсы
root@Omega-E194:~# arecord -D plughw:0,0 --dump-hw-params
Recording WAVE 'stdin' : Unsigned 8 bit, Rate 8000 Hz, Mono
HW Params of device "plughw:0,0":
--------------------
ACCESS: MMAP_INTERLEAVED MMAP_NONINTERLEAVED MMAP_COMPLEX RW_INTERLEAVED RW_NONINTERLEAVED
FORMAT: S8 U8 S16_LE S16_BE U16_LE U16_BE S24_LE S24_BE U24_LE U24_BE S32_LE S32_BE U32_LE U32_BE FLOAT_LE FLOAT_BE FLOAT64_LE FLOAT64_BE MU_LAW A_LAW IMA_ADPCM S24_3LE S24_3BE U24_3LE U24_3BE S20_3LE S20_3BE U20_3LE U20_3BE S18_3LE S18_3BE U18_3LE U18_3BE
SUBFORMAT: STD
SAMPLE_BITS: [4 64]
FRAME_BITS: [4 640000]
CHANNELS: [1 10000]
RATE: [4000 4294967295)
PERIOD_TIME: (2666 256000]
PERIOD_SIZE: (10 1099511628)
PERIOD_BYTES: (5 4294967295)
PERIODS: (0 429496730)
BUFFER_TIME: [1 4294967295]
BUFFER_SIZE: [21 4294967294]
BUFFER_BYTES: [11 4294967295]
TICK_TIME: ALL