arecord -c 2 -r 44100 -f S16_LE -D plughw:4,0 record.pcm
root@atlas7-arm:/media/disk#
root@atlas7-arm:/media/disk# aplay -D plughw:0,1 greetlogo.wav
Playing WAVE 'greetlogo.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
root@atlas7-arm:/media/disk# aplay -D hw:0,1 greetlogo.wav
Playing WAVE 'greetlogo.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
Warning: rate is not accurate (requested = 44100Hz, got = 48000Hz) please, try the plug plugin
aplay: pcm_write:1947: write error: Bad address
root@atlas7-arm:/media/disk# aplay -D plughw:0,1 greetlogo.wav
Playing WAVE 'greetlogo.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
aplay -Dplug:dmix
手机互联:
echo 1 > /sys/bus/platform/devices/ci_hdrc.0/inputs/a_apple_rs_req
roleswitch /dev/bus/usb/001/002 1
./roleswitch /dev/bus/usb/001/003 1
Request role switch (Support CarPlay) successful
///////////////////////////////////////////////////////////////////////////
车速
单片机工作时对gpio0管脚有配置:devmem 0x10E40100 0x44220300 读出结果为
转速设置成功方法:
1.短接主板上U8 4与6脚后上电
2. devmem 0x10E40100 //0x44230303 查看管脚配置成功
cat /sys/bus/platform/devices/10d90000.pulsec/l_num //与主电源一起的当蓝色线短路时有脉冲计数
seep_ ill_det
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
gst-launch-1.0 v4l2src device=/dev/video0 norm=45056 ! video/x-raw, format=RGB,width=800,height=480 ! queue ! v4l2sink device=/dev/video2
gst-launch-1.0 v4l2src device=/dev/video0 norm=45056 ! video/x-raw, width=720,height=480 ! v4l2sink device=/dev/video1
gst-inspect-1.0 v4l2src
gst-inspect-1.0 v4l2sink
gst-launch-1.0 v4l2src device=/dev/video0 norm=45056 \
! video/x-raw, width=720,height=480 ! v4l2sink device=/dev/video2
gst-inspect-1.0 v4l2src
gst-inspect-1.0 v4l2sink
cvbs 切换
devmem 0x10db281c 8 66 // cvbs1
devmem 0x10db281c 8 2 // cvbs0
sudo cp -af * /media/a/root/
/////////////////////////////////////////////////////////////////////////////////
测试LINE0
amixer sset 'Input path' LINE0
arecord -f S16_LE -r 8000 -t wav | aplay
aux 探测事件
#define KEY_AUX 0x186
hexdump -C /dev/input/event0
00000200 de 39 e2 57 29 a1 08 00 01 00 86 01 01 00 00 00 |.9.W)...........| 按下
00000210 de 39 e2 57 29 a1 08 00 00 00 00 00 00 00 00 00 |.9.W)...........|
00000220 df 39 e2 57 08 05 08 00 01 00 86 01 00 00 00 00 |.9.W............| 抬起
00000230 df 39 e2 57 08 05 08 00 00 00 00 00 00 00 00 00 |.9.W............|
/////////////////////////////////////////////////////////////////////////////////////////
麦克风测试
amixer sset 'Input path' MIC0
arecord -f S16_LE -r 8000 -t wav | aplay
arecord -c 1 -t wav -r 16000 -f S16_LE -Dhw:0,10 /tmp/record_16kHz-carplayvoicecall.wav
arecord -c 1 -t wav -r 8000 -f S16_LE -Dhw:0,10
mic调整
devmem 0x10E40354
devmem 0x10E40350 32 0x3
//clr
devmem 0x10E4025C 32
//set
devmem 0x10E40258 32 0x3
//
Direct Stream Mixing PCM
Its setup is:
stream : PLAYBACK
access : RW_INTERLEAVED
format : S16_LE
subformat : STD
channels : 2
rate : 48000
exact rate : 48000 (48000/1)
msbits : 16
buffer_size : 23760
period_size : 720 每次传输的数据长度。值越小,时延越小,cpu占用就越高。
period_time : 15000
tstamp_mode : NONE
period_step : 1
avail_min : 720 缓冲区空闲区大于该值时,pcm_mmap_write()才往缓冲写数据。这个 值越大,往缓冲区写入数据的次数就越少,面临XRUN的机会就越大。Android samsung tuna 设备在screen_off时增大该值以减小功耗,在screen_on时减小该 值以减小XRUN的机会。
period_event : 0
start_threshold : 23760 缓冲区的数据超过该值时,硬件开始启动数据传输。如果太大, 从开始播放到声音出来时延太长,甚至可导致太短促的声音根本播不出来;如果太小, 又可能容易导致XRUN.
stop_threshold : 23760 缓冲区空闲区大于该值时,硬件停止传输。默认情况下,这个数 为整个缓冲区的大小,即整个缓冲区空了,就停止传输。但偶尔的原因导致缓冲区空, 如CPU忙,增大该值,继续播放缓冲区的历史数据,而不关闭再启动硬件传输(一般此 时有明显的声音卡顿),可以达到更好的体验。
silence_threshold: 0 silence_threshold.这个值本来是配合stop_threshold使用,往缓冲区填充静音 数据,这样就不会重播历史数据了。但如果没有设定silence_size,这个值会生效吗? 求解??
silence_size : 0
boundary : 1557135360
Hardware PCM card 0 'kas-audio-card' device0 subdevice 0
Its setup is:
stream : PLAYBACK
access :MMAP_INTERLEAVED
format : S16 : 48000
exact rate : 48000(48000/1)
msbits : 16
buffer_size : 28800
period_size : 720
period_time : 15000
tstamp_mode : ENABLE
period_step : 1
avail_min : 720
period_event : 0
start_threshold : 1
stop_threshold : 1887436800
silence_threshold: 0
silence_size : 1887436800
boundary : 1887436800
appl_ptr : 0
hw_ptr : 0
ALSA使用了环形buffer来存储回放和录音的数据,这里使用了2个指针来维护设备和应用间的通信,一个指针指向硬件当前处理的数据,另一个指针指向应用程序最后处理的数据,现代的的音频芯片允许编程改变传输的时间周期,这意味着音频流的数据被分割成很多小块,当一个小块传输完成时,设备对应用程序进行响应。
ALSA编程有buffer、period、frame、sample,byte等概念,之间的关系如下:
buffer = N periods;
period = N frames;
frame = N bytes; //如:对于单声道16位AD,N=2
主要有三大技术标准组织制定压缩标准:
a)ITU,主要制定有线语音的压缩标准(g系列),有g711/g722/g726/g729等。
b)3GPP,主要制定无线语音的压缩标准(amr系列等), 有amr-nb/amr-wb。后来ITU吸纳了amr-wb,形成了g722.2。
c)MPEG,主要制定音乐的压缩标准,有11172-3,13818-3/7,14496-3等。
一些大公司或者组织也制定压缩标准,比如iLBC,OPUS。