OpenHarmony4.0调试hdmi声卡记录
上面的alsa_adapter.jsonalsa_paths.json和alsa_paths.json两个配置文件每次修改完后再去编译烧录验证太麻烦了,建议直接通过hdc工具去开发板里修改vendor/etc/hdfconfig/目录下面对应的配置文件。5、修改文件vendor\hihope\rk3568\hals\audio\alsa_adapter.json中hdmi的配置(完成上面的操作编译
首先说明作者采用的是alsa适配方法,开发板是rk3568的产品
1、关闭内核编译开关配置
打开linux驱动
CONFIG_SOUND=y
CONFIG_SND=y
关闭hdf驱动
#CONFIG_DRIVERS_HDF_AUDIO=y
#CONFIG_DRIVERS_HDF_AUDIO_RK3568=y
2、产品化编译开关配置
1、在vendor\hihope\rk3568\config.json中将alsa_lib的控制开关打开
"drivers_peripheral_audio_feature_alsa_lib = true"
2、drivers\peripheral\audio\audio.gni
"drivers_peripheral_audio_feature_alsa_lib = true"
3、在vendor\hihope\rk3568\hals\audio\product.gni中中将alsa模式和alsa_lib打开
enable_audio_alsa_mode = true
"drivers_peripheral_audio_feature_alsa_lib = true"
4、alsa-lib和alsa-utils组件编译依赖添加
在drivers\peripheral\audio\bundle.json中配置alsa_lib和alsa_utils库
"third_party": [
"alsa-lib"
]
"sub_component": [
"//third_party/alsa-utils:alsa-utils"
],
5、修改文件vendor\hihope\rk3568\hals\audio\alsa_adapter.json中hdmi的配置(完成上面的操作编译烧录后再去执行第五步,不然用不了aplay命令等)
{
"name": "hdmi",
"cardId": "rockchiphdmi",
"daiId": ""
}
cardid获取方式可以通过aplay -l 命令或者cat proc/asound/card0/id
# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: rockchiphdmi [rockchip,hdmi], device 0: fe400000.i2s-i2s-hifi i2s-hifi-0 [fe400000.i2s-i2s-hifi i2s-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: rockchiprk809co [rockchip,rk809-codec], device 0: fe410000.i2s-rk817-hifi rk817-hifi-0 [fe410000.i2s-rk817-hifi rk817-hifi-0]
Subdevices: 0/1
Subdevice #0: subdevice #0
# cat proc/asound/card
card0/ card1/ cards
# cat proc/asound/card0/id
rockchiphdmi
6、修改vendor\hihope\rk3568\hals\audio\alsa_paths.json配置命令
参考 hdf_audio_codec_primary_dev0的配置添加hdmi的配置
"hdf_audio_codec_hdmi_dev0": [
{
"deep-buffer-playback": [
{
"headphones": [
{
"name": "Playback Path",
"value": 2
}
],
"Speaker": [
{
"name": "Playback Path",
"value": 3
}
],
"mic": [
{
"name": "Capture MIC Path",
"value": 1
}
]
}
],
"low-latency-communication": [
{
"Speaker": [
{
"name": "Playback Path",
"value": 2
}
],
"headphones": [
{
"name": "Playback Path",
"value": 3
}
],
"mic": [
{
"name": "Capture MIC Path",
"value": 1
}
]
}
],
"ringtone-playback": [
{
"Speaker": [
{
"name": "Playback Path",
"value": 10
}
]
}
],
"voice-call": [
{
"Speaker": [
{
"name": "Playback Path",
"value": 7
}
],
"Headphones": [
{
"name": "Playback Path",
"value": 8
}
],
"MIC": [
{
"name": "Capture MIC Path",
"value": 1
}
]
}
],
"low-latency-noirq-playback": [
{
"Speaker": [
{
"name": "Playback Path",
"value": 2
}
],
"Headphones": [
{
"name": "Playback Path",
"value": 3
}
]
}
]
}
]
7、修改vendor\hihope\rk3568\hals\audio\config\arm64\audio_policy_config.xml配置文件
在第21行把primary修改为hdmi
8、快速验证/修改的方法
上面的alsa_adapter.jsonalsa_paths.json和alsa_paths.json两个配置文件每次修改完后再去编译烧录验证太麻烦了,建议直接通过hdc工具去开发板里修改vendor/etc/hdfconfig/目录下面对应的配置文件
总结:通过这种方法HDMI声卡输出是有声音了,但是原先的primary配置被修改成了hdmi,会导致原来的primary对应的设备没有声音,所以还有一定的缺陷,后续作者如果优化成功再发后续吧。
更多推荐

所有评论(0)