热度 1|
查看当前系统有哪些声卡:
shell@rk3288_box:/ # ll /proc/asound/
lrwxrwxrwx root root 2013-01-21 10:56 RKRK1000 ->
card0
lrwxrwxrwx root root 2013-01-21 10:56 RKSPDIFCARD
-> card1
dr-xr-xr-x root root 2013-01-21 10:56 card0
dr-xr-xr-x root root 2013-01-21 10:56 card1
-r--r--r-- root root 0 2013-01-21 10:56 cards
-r--r--r-- root root 0 2013-01-21 10:56 devices
-r--r--r-- root root 0 2013-01-21 10:56 hwdep
-r--r--r-- root root
0 2013-01-21 10:56 pcm
-r--r--r-- root root 0 2013-01-21 10:56 timers
-r--r--r-- root root 0 2013-01-21 10:56 version
看声卡是否正确打开:
播放音乐的情况:
shell@rk322x_box:/ # cat
/proc/asound/card0/pcm0p/sub0/hw_params
closed
录音的情况
shell@rk322x_box:/ # cat
/proc/asound/card0/pcm0c/sub0/hw_params
closed
目前 closed 状态表示此声卡没打开,如果想查看card1,则将上面的card0改为card1即可,即适用于3.10以上的所有内核支持的所有声卡类型。
当播放或录音都差不多:下面例子是播放时的例子:
shell@rk322x_box:/ # cat
/proc/asound/card0/pcm0p/sub0/hw_params
cat /proc/asound/card1/pcm0p/sub0/hw_params
access: RW_INTERLEAVED
format: S16_LE
subformat: STD
channels: 2
rate: 44100 (44100/1)
period_size: 2048
buffer_size: 8192
可以看到我们
pcm_open 时的参数。
系统默认支持 codec
sound card card0
Hdmi(spdif) 为card
1插入HDMI 时候系统会自动切换到card1 可以通过route 来确认
route =28
插HDMI 不需要 进**切换,
可以更改 framework
diff --git
a/services/java/com/android/server/WiredAccessoryManager.java
b/services/java/com/android/server/WiredAccessoryManager.java
index c8d3510..2fb231e 100644
--- a/services/java/com/android/server/WiredAccessoryManager.java
+++
b/services/java/com/android/server/WiredAccessoryManager.java
@@ -374,7 +374,7 @@ final class
WiredAccessoryManager implements WiredAccessoryCallbacks {
//
// If the kernel does not have an "hdmi_audio" switch, just
fall back on the older
// "hdmi" switch instead.
-
uei = new UEventInfo(NAME_HDMI_AUDIO, BIT_HDMI_AUDIO, 0);
+/*
uei = new UEventInfo(NAME_HDMI_AUDIO, BIT_HDMI_AUDIO, 0);
if (uei.checkSwitchExists()) {
retVal.add(uei);
} else {
@@ -385,7 +385,7 @@ final class
WiredAccessoryManager implements WiredAccessoryCallbacks {
Slog.w(TAG, "This kernel does not have HDMI audio support");
}
}
-
+*/
return retVal;
}
或者 将kernel 里面的HDMI 读取到的 state 不进行上报
diff --git
a/drivers/video/rockchip/hdmi/rk_hdmi_task.c
b/drivers/video/rockchip/hdmi/rk_hdmi_task.c
index 6cdb9eb..2ca862f 100755
--- a/drivers/video/rockchip/hdmi/rk_hdmi_task.c
+++ b/drivers/video/rockchip/hdmi/rk_hdmi_task.c
@@ -258,7 +258,7 @@ void hdmi_work(struct
work_struct *work)
hdmi_dbg(hdmi->dev,"base_audio_support =%d,sink_hdmi =
%d\n",hdmi->edid.base_audio_suppo
#ifdef
CONFIG_SWITCH
if(hdmi->edid.base_audio_support == 1 && hdmi->edid.sink_hdmi == 1)
-
switch_set_state(&(hdmi->switch_hdmi), 1);
+
switch_set_state(&(hdmi->switch_hdmi), 0);
#endif
#ifdef
CONFIG_RK_HDMI_CTL_CODEC
#ifdef CONFIG_MACH_RK_FAC
Usb audio 为card2 4.4
SDK 默认支持usb audio route =29 、30,
5.1之后的SDK
kernel 固定usb audio 为card3,使用google
原生的 usb audio hal。
//usb
audio
.usb_normal = {
.sound_card = 2,
.devices = DEVICES_0,
.controls_count = 0,
},
.usb_capture = {
.sound_card = 2,
.devices = DEVICES_0,
.controls_count = 0,
},