首先说明作者采用的是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对应的设备没有声音,所以还有一定的缺陷,后续作者如果优化成功再发后续吧。

Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐