From 04cbfe03fc562a30fafc37eb1a55811c393ff01c Mon Sep 17 00:00:00 2001 From: hwwuhaobo Date: Wed, 29 Mar 2023 14:58:18 +0800 Subject: [PATCH 1/5] fix readme Signed-off-by: hwwuhaobo --- README_zh.md | 52 ++++++++++++++++++++++++++++------------------------ 1 file changed, 28 insertions(+), 24 deletions(-) diff --git a/README_zh.md b/README_zh.md index 2287f419..3e88fef2 100644 --- a/README_zh.md +++ b/README_zh.md @@ -2,21 +2,43 @@ ## **简介** -分布式音频是多个设备的音频同时协同使用的能力。分布式音频部件是为分布式硬件子系统提供这一能力的部件。本部件不直接对接应用,只向分布式硬件框架子系统提供C++接口。应用可以通过音频框架的接口使用分布式音频部件操作其他设备的音频设备,使用方式与本地音频一致。 +分布式音频是指多个设备的音频同时协同使用的能力,如将设备A的音频通过设备B的Spk进行投播,或者设备A使用设备B的Mic进行录音。分布式音频部件正是为分布式硬件子系统提供这一能力的部件。本部件不直接向应用提供接口,应用可以通过音频框架的接口使用分布式音频部件从而操作其他设备的音频设备,使用方式与本地音频一致。 其系统架构图如下图所示: ![](figures/distributedaudio_arch.png) +### **概念说明** +主控端(source):控制端,通过调用分布式音频能力,使用被控端的音频播放,录音等功能; +被控端(sink):被控制端,通过分布式音频接收主控端的命令,使用本地音频为主控端提供音频数据。 + +### **接口说明** +分布式音频部件实现分布式硬件管理框架提供的接口,分布式硬件管理框架统一调用接口实现虚拟硬件驱动注册等功能。 + +### **场景说明** +被控端设备上线之后,主控端可以使能该设备音频并像使用本地音频一样使用被控端音频,直到被控端设备下线。 + +### **流程说明** +#### **1. 设备开机启动** +系统拉起分布式音频的SA服务,Source侧被初始化,相关模块被初始化。 + +#### **2. 设备组网上线** +设备上线后,分布式硬件管理框架同步到上线设备的音频硬件信息并使能,使能成功后在系统中会新增分布式音频驱动并通知到音频框架,音频框架统一管理本地音频和分布式音频驱动;上层应用通过音频框架接口可以查询到分布式音频设备,并按照和本地音频相同的接口使用分布式音频设备。 + +#### **3. 设备下线** +设备下线后,分布式硬件管理框架去使能下线设备的音频硬件,本地移除分布式音频驱动并通知到音频框架,此时下线设备的分布式音频不可用。 + +### **架构实现** + **分布式音频框架实现(DistributedAudioFwkImpl)**:为分布式硬件管理框架提供分布式音频初始化、释放、使能、去使能能力,以及音频设备配置参数能力。 **分布式音频主控端管理模块(DAudioSourceManager)**:管理和创建主控端Fwk层分布式音频设备实体。 **分布式音频被控端管理模块(DAudioSinkManager)**:管理和创建被控端Fwk层分布式音频设备实体,以及本地设备信息。 -**主控端分布式音频设备的抽象实体(DAudioSourceDevice)**:被控端音频设备在主控端的抽象,拥有被控端音频的参数属性,实现被控端音频设备音量、焦点、媒体键事件的控制。执行录音功能时,接收从被控端传来的音频编码数据,完成解码操作后,送给主控端音频框架pcm流。当知执行放音功能时,接收主控端音频框架采集音频pcm流,进行编码处理后,将音频编码数据传送给被控端。 +**主控端分布式音频设备的抽象实体(DAudioSourceDevice)**:被控端音频设备在主控端的抽象,拥有被控端音频的参数属性,实现被控端音频设备音量、焦点、媒体键事件的控制。执行录音功能时,接收从被控端传来的音频编码数据,完成解码操作后,送给主控端音频框架pcm流。当执行放音功能时,接收主控端音频框架采集音频pcm流,进行编码处理后,将音频编码数据传送给被控端。 -**被控端分布式音频源设备的抽象实体(DAudioSinkDevice)**:作为主控端音频设备在被控端的代理,实现对被控端音频设备音量、焦点、媒体键事件的直接响应和控制。当执行录音功能时,接收被控端音频框架采集音频pcm流,进行编码处理后,将音频编码数据传送给主控端。当知执行放音功能时,接收从主控端传来的音频编码数据,完成解码操作,送给被控端音频框架pcm流播放。 +**被控端分布式音频源设备的抽象实体(DAudioSinkDevice)**:作为主控端音频设备在被控端的代理,实现对被控端音频设备音量、焦点、媒体键事件的直接响应和控制。当执行录音功能时,接收被控端音频框架采集音频pcm流,进行编码处理后,将音频编码数据传送给主控端。当执行放音功能时,接收从主控端传来的音频编码数据,完成解码操作,送给被控端音频框架进行pcm流播放。 **分布式音频主控端控制管理模块(DAudioSourceCtrlMgr)**:负责响应被控端媒体键事件、主控端与被控端之间音量同步、主控端远程控制被控端设备音量、响应被控端音频焦点状态等任务的处理。 @@ -57,28 +79,10 @@ ## **约束** **语言限制**:C++语言。 **组网环境**:必须确保设备在同一个局域网中。 -**操作系统限制**:OpenHarmony操作系统。 - -## **说明** -### **概念说明** -主控端(source):控制端,通过调用分布式音频能力,使用被控端的音频播放,录音等功能。 -被控端(sink):被控制端,通过分布式音频接收主控端的命令,使用本地音频为主控端提供音频数据。 - -### **接口说明** -分布式音频部件实现分布式硬件管理框架提供的接口,分布式硬件管理框架统一调用接口实现虚拟硬件驱动注册等功能。 - -### **场景说明** -被控端设备上线之后,主控端可以使能该设备音频并像使用本地音频一样使用被控端音频,直到被控端设备下线。 - -### **流程说明** -#### **1. 设备开机启动** -系统拉起分布式音频的SA服务,Source侧被初始化,相关模块被初始化。 +**操作系统限制**:OpenHarmony-标准操作系统。 -#### **2. 设备组网上线** -设备上线后,分布式硬件管理框架同步到上线设备的音频硬件信息并使能,使能成功后在系统中会新增分布式音频驱动并通知到音频框架,音频框架统一管理本地音频和分布式音频驱动;上层应用通过音频框架接口可以查询到分布式音频,并按照和本地音频相同的接口使用分布式音频。 - -#### **3. 设备下线** -设备下线后,分布式硬件管理框架去使能下线设备的音频硬件,本地移除分布式音频驱动并通知到音频框架,此时下线设备的分布式音频不可用。 +## **编译调试** +可以根据需要对代码进行修改编译,编译时可以通过添加编译选项 "--build-target=distributed_audio"来只对分布式音频及其相关依赖模块进行编译。 ## **相关仓** **** -- Gitee From 43d9d63fcbce60db3f075292b4aff2492776fcb6 Mon Sep 17 00:00:00 2001 From: hwwuhaobo Date: Wed, 29 Mar 2023 17:35:16 +0800 Subject: [PATCH 2/5] fix readme Signed-off-by: hwwuhaobo --- README_zh.md | 46 +++++++++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/README_zh.md b/README_zh.md index 3e88fef2..73f8ca10 100644 --- a/README_zh.md +++ b/README_zh.md @@ -2,28 +2,28 @@ ## **简介** -分布式音频是指多个设备的音频同时协同使用的能力,如将设备A的音频通过设备B的Spk进行投播,或者设备A使用设备B的Mic进行录音。分布式音频部件正是为分布式硬件子系统提供这一能力的部件。本部件不直接向应用提供接口,应用可以通过音频框架的接口使用分布式音频部件从而操作其他设备的音频设备,使用方式与本地音频一致。 +分布式音频是指多个设备的音频协同使用的能力,如将设备A的音频通过设备B的Speaker进行播音,或者设备A使用设备B的Mic进行录音。分布式音频不直接向应用提供接口,应用可以通过音频框架的接口来使用分布式音频,从而操作其他设备的音频外设实现播音和录音,使用方式与本地音频一致。 其系统架构图如下图所示: ![](figures/distributedaudio_arch.png) ### **概念说明** -主控端(source):控制端,通过调用分布式音频能力,使用被控端的音频播放,录音等功能; -被控端(sink):被控制端,通过分布式音频接收主控端的命令,使用本地音频为主控端提供音频数据。 +主控端(source):控制端,通过分布式音频向其他设备发送指令和数据,实现在其他设备上音频播放、录音功能; +被控端(sink):被控制端,接收来自其他设备的命令和数据,协助控制端完成音频播放和录制功能。 ### **接口说明** -分布式音频部件实现分布式硬件管理框架提供的接口,分布式硬件管理框架统一调用接口实现虚拟硬件驱动注册等功能。 +分布式音频部件不对外提供接口,接口由音频框架统一提供。 ### **场景说明** -被控端设备上线之后,主控端可以使能该设备音频并像使用本地音频一样使用被控端音频,直到被控端设备下线。 +两台设备完成组网后,主控端设备就可以查询到被控端设备,并像使用本地音频一样使用被控端音频外设完成播音和录音。被控端设备下线即组网关系断开后,将会无法查询到被控端设备。 ### **流程说明** -#### **1. 设备开机启动** -系统拉起分布式音频的SA服务,Source侧被初始化,相关模块被初始化。 +#### **1. 设备组网上线** +设备组网后,分布式硬件管理框架同步到上线设备的音频硬件信息并使能,使能成功后在系统中会新增分布式音频驱动并通知到音频框架,音频框架统一管理本地音频和分布式音频驱动;上层应用通过音频框架接口可以查询到分布式音频设备。 -#### **2. 设备组网上线** -设备上线后,分布式硬件管理框架同步到上线设备的音频硬件信息并使能,使能成功后在系统中会新增分布式音频驱动并通知到音频框架,音频框架统一管理本地音频和分布式音频驱动;上层应用通过音频框架接口可以查询到分布式音频设备,并按照和本地音频相同的接口使用分布式音频设备。 +#### **2. 设备使用** +应用可以通过音频框架接口使用分布式音频的能力,调用被控端设备的Speaker进行播音,或者调用被控端设备的Mic进行录音。 #### **3. 设备下线** 设备下线后,分布式硬件管理框架去使能下线设备的音频硬件,本地移除分布式音频驱动并通知到音频框架,此时下线设备的分布式音频不可用。 @@ -32,27 +32,27 @@ **分布式音频框架实现(DistributedAudioFwkImpl)**:为分布式硬件管理框架提供分布式音频初始化、释放、使能、去使能能力,以及音频设备配置参数能力。 -**分布式音频主控端管理模块(DAudioSourceManager)**:管理和创建主控端Fwk层分布式音频设备实体。 +**分布式音频主控端管理模块(DAudioSourceManager)**:主控端音频设备管理模块。 -**分布式音频被控端管理模块(DAudioSinkManager)**:管理和创建被控端Fwk层分布式音频设备实体,以及本地设备信息。 +**分布式音频被控端管理模块(DAudioSinkManager)**:被控端音频设备管理模块。 -**主控端分布式音频设备的抽象实体(DAudioSourceDevice)**:被控端音频设备在主控端的抽象,拥有被控端音频的参数属性,实现被控端音频设备音量、焦点、媒体键事件的控制。执行录音功能时,接收从被控端传来的音频编码数据,完成解码操作后,送给主控端音频框架pcm流。当执行放音功能时,接收主控端音频框架采集音频pcm流,进行编码处理后,将音频编码数据传送给被控端。 +**主控端分布式音频设备的抽象实体(DAudioSourceDevice)**:被控端设备在主控端的抽象,实现被控端音频设备音量、焦点、媒体键事件的控制。当执行录音功能时,该模块接收从被控端传来的音频编码数据,完成解码操作后,将音频流送给主控端音频框架。当执行放音功能时,该模块接收主控端音频框架传递的音频流,进行编码处理后,将编码数据发送给被控端。 -**被控端分布式音频源设备的抽象实体(DAudioSinkDevice)**:作为主控端音频设备在被控端的代理,实现对被控端音频设备音量、焦点、媒体键事件的直接响应和控制。当执行录音功能时,接收被控端音频框架采集音频pcm流,进行编码处理后,将音频编码数据传送给主控端。当执行放音功能时,接收从主控端传来的音频编码数据,完成解码操作,送给被控端音频框架进行pcm流播放。 +**被控端分布式音频源设备的抽象实体(DAudioSinkDevice)**:主控端设备在被控端的代理,实现对主控端发送的音量、焦点、媒体键事件的响应和处理。当执行录音功能时,该模块接受本地采集音频的流,进行编码处理后,将编码数据发送给主控端。当执行放音功能时,该模块接收从主控端传来的音频流数据,完成解码操作,送给本地音频框架进行播放。 -**分布式音频主控端控制管理模块(DAudioSourceCtrlMgr)**:负责响应被控端媒体键事件、主控端与被控端之间音量同步、主控端远程控制被控端设备音量、响应被控端音频焦点状态等任务的处理。 +**分布式音频主控端控制管理模块(DAudioSourceCtrlMgr)**:负责响应被控端媒体键事件、主控端与被控端之间音量同步、响应被控端音频焦点状态等任务的处理。 **分布式音频被控端控制管理模块(DAudioSinkCtrlMgr)**:负责监听被控端的设备音量、音频焦点状态、媒体键事件,执行主控端音量调节指令、反馈被控端音频焦点状态和被控端媒体键事件。 -**分布式音频被控端传输处理模块(DAudioTransport)**:负责主控端和被控端音频数据的处理和传输,包括音频编码、音频解码、音频数据发送、音频数据接收等操作。 +**分布式音频被控端传输处理模块(DAudioTransport)**:负责主控端和被控端之间音频数据的处理和传输,包括音频编码、音频解码、音频数据发送、音频数据接收等操作。 -**分布式音频被控端代理模块(DAudioSinkClient)**:与被控端音频框架交互,完成音频pcm流的播放或者采集。 +**分布式音频被控端代理模块(DAudioSinkClient)**:与被控端音频框架交互,完成音频流的播放或者采集。 **HDF分布式音频设备管理扩展模块(DAudio Manager)**:负责分布式音频驱动与分布式音频服务间的交互,包括设备注册、去注册、打开、关闭等。 -**HDF分布式音频设备管理模块(Audio Manager)**:负责创建和管理HDF层分布式音频设备实体,与音频框架跨进程交互,通知设备上下线状态。 +**HDF分布式音频设备管理模块(Audio Manager)**:负责创建和管理驱动层音频设备,与音频框架跨进程交互,通知设备上下线状态。 -**HDF分布式音频设备驱动实体(Audio Adapter)**:作为驱动层分布式音频设备的抽象实体,描述被控端音频设备在主控端的驱动对象。 +**HDF分布式音频设备驱动实体(Audio Adapter)**:是远端设备在驱动层的抽象,负责执行和转发具体驱动层的事件。 ## **目录** @@ -79,10 +79,7 @@ ## **约束** **语言限制**:C++语言。 **组网环境**:必须确保设备在同一个局域网中。 -**操作系统限制**:OpenHarmony-标准操作系统。 - -## **编译调试** -可以根据需要对代码进行修改编译,编译时可以通过添加编译选项 "--build-target=distributed_audio"来只对分布式音频及其相关依赖模块进行编译。 +**操作系统限制**:OpenHarmony标准操作系统。 ## **相关仓** **** @@ -100,5 +97,8 @@ 分布式屏幕 [distributed_screen](https://gitee.com/openharmony/distributedhardware_distributed_screen) +分布式输入 +[distributed_input](https://gitee.com/openharmony/distributedhardware_distributed_input) + **分布式音频** -[distributed_audio](http://mgit-tm.rnd.huawei.com/hmf/distributedhardware/distributed_audio) +[distributed_audio](https://gitee.com/openharmony/distributedhardware_distributed_audio) -- Gitee From ef00bbe3697b013a98530dbe4a61c8969484661e Mon Sep 17 00:00:00 2001 From: hwwuhaobo Date: Wed, 29 Mar 2023 17:38:31 +0800 Subject: [PATCH 3/5] fix readme Signed-off-by: hwwuhaobo --- README_zh.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README_zh.md b/README_zh.md index 73f8ca10..4ed73b70 100644 --- a/README_zh.md +++ b/README_zh.md @@ -13,7 +13,7 @@ 被控端(sink):被控制端,接收来自其他设备的命令和数据,协助控制端完成音频播放和录制功能。 ### **接口说明** -分布式音频部件不对外提供接口,接口由音频框架统一提供。 +分布式音频部件不对外提供接口,由音频框架提供接口供开发者调用分布式音频能力。 ### **场景说明** 两台设备完成组网后,主控端设备就可以查询到被控端设备,并像使用本地音频一样使用被控端音频外设完成播音和录音。被控端设备下线即组网关系断开后,将会无法查询到被控端设备。 -- Gitee From 31568053fb04c25bbf6dc7f62bedf42a03fdc5f3 Mon Sep 17 00:00:00 2001 From: hwwuhaobo Date: Wed, 29 Mar 2023 17:40:53 +0800 Subject: [PATCH 4/5] fix readme Signed-off-by: hwwuhaobo --- README_zh.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README_zh.md b/README_zh.md index 4ed73b70..adc44c61 100644 --- a/README_zh.md +++ b/README_zh.md @@ -9,8 +9,8 @@ ![](figures/distributedaudio_arch.png) ### **概念说明** -主控端(source):控制端,通过分布式音频向其他设备发送指令和数据,实现在其他设备上音频播放、录音功能; -被控端(sink):被控制端,接收来自其他设备的命令和数据,协助控制端完成音频播放和录制功能。 +主控端(source):控制端,通过分布式音频向其他设备发送命令,实现在其他设备上音频播放、录音功能; +被控端(sink):被控制端,接收主控端的命令,使本地音频外设为主控端设备所用,用来播音或录音。 ### **接口说明** 分布式音频部件不对外提供接口,由音频框架提供接口供开发者调用分布式音频能力。 -- Gitee From a72b02ea2f686622b7fed0c21af80e9369cbafd3 Mon Sep 17 00:00:00 2001 From: hwwuhaobo Date: Thu, 30 Mar 2023 10:01:53 +0800 Subject: [PATCH 5/5] fix readme Signed-off-by: hwwuhaobo --- README_zh.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README_zh.md b/README_zh.md index adc44c61..b1005f1e 100644 --- a/README_zh.md +++ b/README_zh.md @@ -36,9 +36,9 @@ **分布式音频被控端管理模块(DAudioSinkManager)**:被控端音频设备管理模块。 -**主控端分布式音频设备的抽象实体(DAudioSourceDevice)**:被控端设备在主控端的抽象,实现被控端音频设备音量、焦点、媒体键事件的控制。当执行录音功能时,该模块接收从被控端传来的音频编码数据,完成解码操作后,将音频流送给主控端音频框架。当执行放音功能时,该模块接收主控端音频框架传递的音频流,进行编码处理后,将编码数据发送给被控端。 +**主控端分布式音频设备抽象实体(DAudioSourceDevice)**:被控端设备在主控端的抽象,实现被控端音频设备音量、焦点、媒体键事件的控制。当执行录音功能时,该模块接收从被控端传来的音频编码数据,完成解码操作后,将音频流送给主控端音频框架。当执行放音功能时,该模块接收主控端音频框架传递的音频流,进行编码处理后,将编码数据发送给被控端。 -**被控端分布式音频源设备的抽象实体(DAudioSinkDevice)**:主控端设备在被控端的代理,实现对主控端发送的音量、焦点、媒体键事件的响应和处理。当执行录音功能时,该模块接受本地采集音频的流,进行编码处理后,将编码数据发送给主控端。当执行放音功能时,该模块接收从主控端传来的音频流数据,完成解码操作,送给本地音频框架进行播放。 +**被控端分布式音频源设备抽象实体(DAudioSinkDevice)**:主控端设备在被控端的代理,实现对主控端发送的音量、焦点、媒体键事件的响应和处理。当执行录音功能时,该模块接受本地采集音频的流,进行编码处理后,将编码数据发送给主控端。当执行放音功能时,该模块接收从主控端传来的音频流数据,完成解码操作,送给本地音频框架进行播放。 **分布式音频主控端控制管理模块(DAudioSourceCtrlMgr)**:负责响应被控端媒体键事件、主控端与被控端之间音量同步、响应被控端音频焦点状态等任务的处理。 -- Gitee