当前位置: 首页 > news >正文

贵阳地铁建设网站2021年uc秒懂网址推荐

贵阳地铁建设网站,2021年uc秒懂网址推荐,办公室装修专业网站,宁波网站设计高清多媒体接口#xff08;High Definition Multimedia Interface#xff0c;HDMI #xff09;是一种全数字化视频和声音发送接口#xff0c;可以发送未压缩的音频及视频信号。HDMI可用于机顶盒、DVD播放机、个人计算机、电视、游戏主机、综合扩大机、数字音响与电视机等设… 高清多媒体接口High Definition Multimedia InterfaceHDMI  是一种全数字化视频和声音发送接口可以发送未压缩的音频及视频信号。HDMI可用于机顶盒、DVD播放机、个人计算机、电视、游戏主机、综合扩大机、数字音响与电视机等设备。HDMI可以同时发送音频和视频信号由于音频和视频信号采用同一条线材大大简化系统线路的安装难度。这块是百度百科对HDMI的简单介绍我们再看看HDMI不同版本对音频的支持情况 当前我们使用最多的是2.0版本本文介绍了OpenHarmony系统支持HDMI声卡的适配过程带有HDMI声卡的设备包括电视、投影仪和一些带有音响的显示器。 1 功能描述 OpenHarmony系统中音频系统使用ADM框架下面是ADM框架的组成 ADM框架是基于HDF系统框架开发Card Manager是用来管理多个声卡链表Controller是声卡的控制模块包含了音量、静音、通路选择等控制功能。 Audio Control Dispath是控制功能的中转站负责接收HDI下发的控制命令和将控制命令转发给各个声卡组件。Audio Stream Dispatch是数据流的中转站播放过程中负责接收HDI的数据流在录音过程中负责上传声卡的录音数据流。 Run Time Device中包括的这些模块就是一个声卡工作需要的驱动服务。其中codec编解码模块驱动服务、dai数字音频接口驱动服务和platform片上系统也就是DMA模块驱动服务是大多数声卡所必须的。HDMI声卡和其他声卡一样由三个模块组成codec编解码模块、dai数字音频接口和platform片上系统也就是DMA模块。 HDMI的codec是集成在HDMI转换芯片内部的我们只需要将PCM音频流给到HDMI转换芯片就可以。DAI这块使用的是I2S总线连接HDMI芯片和platform。要实现对HDMI声卡的支持就需要将这几个模块的驱动注册到ADM框架中。 本文基于3月1日的OpenHarmony master分支进行介绍。基于yangfan平台介绍如适配其他平台相关配置根据具体平台进行修改。 OpenHarmony系统支持HDMI声卡的插拔识别支持HDMI声卡的播放功能包括启动、停止、暂停、恢复功能。 2 准备工作 2.1 查询物理连接 这是一个HDMI设备模块的逻辑试图图中可以看到音频数据可以通过两种接口I2S或者SPIDIF将音频数据传给HDMI设备此处我们使用的是I2S总线。 首先需要查看芯片手册HDMI模块和SOC是如何连接的找到音频数据传输相应的I2S总线这块是更具rk3568芯片查到的数据I2S0连接的是HDMI。 2.2 查询寄存器地址 因为我们使用I2S总线就要对其进行配置所以我们需要找到I2S总线的基地址和I2S总线的寄存器说明。查看芯片手册找到I2S总线对应的寄存器基地址。 3 代码介绍 HDMI的驱动codec的代码ADM框架中已经实现了我们只需要根据不同的单板平台修改平台下面的配置文件。Dai和platform的驱动代码需要根据各自平台自行开发。yangfan开发板Dai和platform驱动代码路径在device\board\isoftstone\yangfan\kernel\hdf\drivers\audio下面的dai和soc目录下面。 涉及到的配置文件如下vendor/isoftstone/yangfan/hdf_config/khdf/audio$ tree ├── audio_config.hcs   // 此配置文件配置声卡信息 ├── codec_config.hcs   // 此配置文件配置codec信息 ├── dai_config.hcs     // 此配置文件配置dai信息 └── dma_config.hcs    // 此配置文件配置platform信息 vendor/isoftstone/yangfan/hdf_config/khdf/device_info/ device_info.hcs  //此配置文件配置声卡驱动服务信息修改涉及的代码仓device_board_hihope、vendor_isoftstone和kernel_linux_config 4 构建开关 OpenHarmony系统要支持HDMI声卡首先要打开构建开关在文件kernel/linux/config/linux-5.10/arch/arm64/configs/rockchip_standard_defconfig 添加CONFIG_DRIVERS_HDF_AUDIO_HDMIy 5 功能配置 HCS(HDF Configuration Source)是HDF驱动框架的配置描述源码内容以Key-Value为主要形式。它实现了配置代码与驱动代码解耦便于开发者进行配置管理。 5.1 配置文件device_info.hcs 添加hdmi声卡节点信息。 文件路径vendor/isoftstone/yangfan/hdf_config/khdf/device_info/ HDMI声卡插入后系统会根据此处配置的声卡节点加载HDMI声卡驱动。         audio :: host {hostName  audio_host;priority  110;device_dai :: device {...device_hdmi :: deviceNode {policy  1;priority  50;preload  0;permission  0666;moduleName  DAI_RK3568;serviceName  hdmi_dai_service;deviceMatchAttr  hdf_hdmi_dai_driver;}}device_codec :: device {...device_hdmi :: deviceNode {policy  1;priority  50;preload  0;permission  0666;moduleName  AUDIO_HDMI_CODEC;serviceName  codec_service_1;deviceMatchAttr  hdf_codec_driver_1;} ...} ...device_dma :: device {...device_hdmi :: deviceNode {policy  1;priority  50;preload  0;permission  0666;moduleName  DMA_RK3568;serviceName  hdmi_dma_service_0;deviceMatchAttr  hdf_hdmi_dma_driver;} ...}            device_audio :: device {...device_hdmi :: deviceNode {policy  2;priority  60;preload  2;permission  0666;moduleName  HDF_AUDIO;deviceMatchAttr  hdf_audio_driver_1;serviceName  hdf_audio_codec_hdmi_dev0;} ...} ...}moduleName 配置组件名称和驱动代码中的moduleName相对应系统会根据此名称加载驱动。 deviceMatchAttr私有配置的属性名称根据此名称可以找到相应的私有配置。 serviceName驱动服务名称根据此名称可以使用对应的驱动。 preload 配置加载方式2为动态加载当HDMI声卡插入时加载HDMI声卡驱动。 此文件中首先配置了文件首先先配置了HDMI的dai、codec和dma驱动服务最后配置了HDMI声卡设备。 5.2 配置文件audio_config.hcs 添加hdmi声卡服务信息。 文件路径vendor/isoftstone/yangfan/hdf_config/khdf/audio/ 此处配置一个HDMI声卡驱动包括哪些驱动服务。 root {platform { ...controller_0x120c1001 :: card_controller {match_attr  hdf_audio_driver_1;serviceName  hdf_audio_codec_hdmi_dev0;codecName  codec_service_1;platformName  hdmi_dma_service_0;cpuDaiName  hdmi_dai_service;codecDaiName  hdmi_codec_dai;} ...} }card_controller配置项根据声卡包含的驱动服务进行配置不同声卡包含的驱动服务可能不同HDMI声卡包含platform、dai和codec所以需要配置codecName codec驱动服务名称platformName platform驱动服务名称、cpuDaiName platform侧dai服务名称、codecDaiName codec侧驱动服务名称。 match_attr配置项名称和HDMI声卡设备的私有配置名称相匹配声卡设备可以根据这个私有配置找到声卡对应的codec、dai、platform驱动服务。 serviceName HDMI声卡服务名称声卡加载成功后会生成/dev/hdf_audio_codec_hdmi_dev0结点。 5.3 配置文件dma_config.hcs 添加HDMI声卡硬件信息。 文件路径vendor/isoftstone/yangfan/hdf_config/khdf/audio/ 此文件配置和HDMI声卡连接的SOC侧的DMA信息。具体信息可以通过查看cpu芯片手册得到。 root {platform {template dma_controller {match_attr  ;serviceName  ;} ...controller_0x120c1011 :: dma_controller {match_attr  hdf_hdmi_dma_driver;serviceName  hdmi_dma_service_0;            idInfo {chipName  /i2sfe400000; // 根据hdmi驱动芯片连接的I2S总线地址进行配置chipIdRegister  0xfe400000; // 根据hdmi驱动芯片连接的I2S总线地址进行配置chipIdSize  0x1000;}regConfig {daiStartupSeqConfig  [0x00, 0x00, 0, 0, 0, 0xFFFFFFFF, 0xFFFFFFFF, 0, 0x0, //Transmit Operation Init];}}} }此文件配置了HDMI声卡使用的dma信息。 match_attr配置项名称和HDMI声卡设备的dma服务私有配置名称相匹配。serviceName HDMI声卡dma驱动服务名称需要和device_info配置文件中HDMI声卡的dma驱动服务名称相同。 HDMI模块只需要配置idInfo配置项信息其他配置项HDMI模块未使用。 5.4 配置文件dai_config.hcs 添加HDMI声卡硬件信息。 文件路径vendor/isoftstone/yangfan/hdf_config/khdf/audio/ 此文件配置和HDMI声卡连接的SOC侧的i2s信息。具体信息可以通过查看cpu芯片手册得到。 root {platform {template dai_controller {match_attr  ;serviceName  ;} ...controller_0x120c1021 :: dai_controller {match_attr  hdf_hdmi_dai_driver;serviceName  hdmi_dai_service;            idInfo {chipName  /i2sfe400000; // 根据hdmi驱动芯片连接的I2S总线地址进行配置chipIdRegister  0xfe400000; // 根据hdmi驱动芯片连接的I2S总线地址进行配置chipIdSize  0x1000;}regConfig {daiStartupSeqConfig  [0x00, 0x00, 0, 0, 0, 0xFFFFFFFF, 0xFFFFFFFF, 0, 0x0, //Transmit Operation Init];}}} }此文件配置了HDMI声卡使用的dai信息。match_attr配置项名称和HDMI声卡设备的dai服务私有配置名称相匹配。serviceName HDMI声卡dai驱动服务名称需要和device_info配置文件中HDMI声卡的dai驱动服务名称相同。 chipIdRegister HDMI驱动芯片连接的I2S总线地址此信息可以通过cpu的芯片手册获取。 chipIdSize物理地址映射的虚拟地址大小。 5.5 配置文件codec_config.hcs 添加HDMI声卡硬件信息。 文件路径vendor/isoftstone/yangfan/hdf_config/khdf/audio/ 此文件配置HDMI声卡信息。由于HDMI声卡只支持播放此处只配置了播放的参数信息。 root {platform {template codec_controller {match_attr  ;serviceName  ;codecDaiName  ;} ...controller_0x120c1031 :: codec_controller {match_attr  hdf_codec_driver_1;serviceName  codec_service_1;codecDaiName  hdmi_codec_dai;            hwInfo  [/*Playback/Captrue, formats, rates, rate_min, rate_max, channels_min, channels_max,buffer_bytes_max, period_bytes_min, period_bytes_max, periods_min, periods_max*/1, 0xF, 0xFF, 8000, 96000, 1, 2, 1, 2, 3, 4, 5];} ... }此文件配置了HDMI声卡使用的codec信息。 match_attr配置项名称和HDMI声卡设备的codec服务私有配置名称相匹配。serviceName HDMI声卡codec驱动服务名称需要和device_info配置文件中HDMI声卡的codec驱动服务名称相同。 codecDaiName HDMI声卡使用的codec dai的设备名称此处名称需要和audio_config配置文件中的codecDaiName名称相同。 hwInfo配置声卡的信息包括声卡播放和录音支持的格式、采样率范围、通道范围、缓存buffer最大值、每个周期的字节范围、周期的范围。第一个配置项Playback对应的值为1Captrue对应的值为2。其他配置项没有使用。 HDMI声卡只支持播放这里只配置了播放有些参数没有生效可以随便配置。 6 应用样例 audio_sample_render是用来测试录音功能的工具audio_sample_capture是用来测试播放功能的工具audio_sample_event是用来检测USB插拔事件上报的工具。这两个工具可以通过编译得到编译命令如下 ./build.sh --product-name yangfan -T audio_sample_render -T audio_sample_capture -T audio_sample_event hdc shell cd /data/ ./audio_sample_render YoungForYou.wav7 功能验证 使用hdc工具推送audio_sample_render和audio_sample_event和wav音频文件到开发板data目录下 hdc file send E:\audio_sample_render /data hdc file send E:\audio_sample_event /data hdc file send E:\xxx.wav /dataHDMI音频类设备插拔检测 进入shell端口进行一次HDMI设备插入、拔出流程。 hdc shell # cd /data/# chmod x audio_sample_event#./audio_sample_event插入打印 serviceName: audio_hdi_pnp_servicedeviceClass: 32status     : 1info       : EVENT_TYPE0x1;DEVICE_TYPE0x400拔出打印 serviceName: audio_hdi_pnp_servicedeviceClass: 32status     : 1info       : EVENT_TYPE0x2;DEVICE_TYPE0x400HDMI音频类设备放音 进入shell端口进行一次完整的播放、停止、退出流程。 hdc shell # cd /data/# chmod x audio_sample_render## ./audio_sample_render YoungForYou.wav Loading Mode  | 1. Passthrough Loading                               | | 2. IPC Loading                                       | Please enter your choice: 2 Select Audio Card 1. primary2. primary13. hdmi4. usb5. a2dp Please enter your choice: 3 Play Render Menu  | 1. Render Start                                      | | 2. Render Stop                                       | | 3. Render Resume                                     | | 4. Render Pause                                      | | 5. Render SetVolume                                  | | 6. Render GetGain                                    | | 7. Render SetMute                                    | | 8. Render SetAttributes                              | | 9. Render SelectScene                                | | 10. Render getEXtParams                              | | 11. Render getMmapPosition                           | | 12.Exit                                              | your choice is: 1 Music channels  2 Music Rate      44100 Hz Music Bit       16 bit Play Render Mode  | 1. Render non-mmap                     | | 2. Render mmap                         | Please enter your choice: 1 Start Successful,Music is playing Play Render Menu  | 1. Render Start                                      | | 2. Render Stop                                       | | 3. Render Resume                                     | | 4. Render Pause                                      | | 5. Render SetVolume                                  | | 6. Render GetGain                                    | | 7. Render SetMute                                    | | 8. Render SetAttributes                              | | 9. Render SelectScene                                | | 10. Render getEXtParams                              | | 11. Render getMmapPosition                           | | 12.Exit                                              | your choice is: 2 Stop Successful Play Render Menu  | 1. Render Start                                      | | 2. Render Stop                                       | | 3. Render Resume                                     | | 4. Render Pause                                      | | 5. Render SetVolume                                  | | 6. Render GetGain                                    | | 7. Render SetMute                                    | | 8. Render SetAttributes                              | | 9. Render SelectScene                                | | 10. Render getEXtParams                              | | 11. Render getMmapPosition                           | | 12.Exit                                              | your choice is: 128 总结 本文没有介绍HDMI声卡codec驱动的具体实现代码路径drivers/hdf_core/framework/model/audio/hdmi。平台适配支持HDMI声卡可以不用关注驱动的具体实现。 支持HDMI声卡是OpenHarmony系统使用中不可或缺的一部分是OpenHarmony系统用于投影仪、电视显示和生活场景的重要功能本文介绍了OpenHarmony系统支持HDMI声卡的适配步骤希望对您有所帮助。
http://www.hkea.cn/news/14496281/

相关文章:

  • 网站开发和运行模式的搭建网站被k原因
  • 山西路桥建设集团有限公司网站网站模版怎么上传到空间
  • 中小企业网站建设与推广宁波网站搜索优化
  • 青岛做网站wordpress 函数api文件
  • 杭州建设局网站首页 柳兰溪网站建设
  • 大连公司企业网站建设免费网络教学平台
  • 深圳Ic网站建设网站下面的站长统计很逗
  • 成品网站设计网站网站设计模板源码
  • 济南做网站推广有哪些公司网站开发兼容
  • 自己做网站推广费用大可信赖的菏泽网站建设
  • 自动优化网站软件没有了安平县建设局网站
  • 谷歌网站建设代理怒江州住房和城乡建设局网站
  • 网站设计与制作前景宁波网站推广规划
  • 商城网站后续费用网站备案证书下载不了
  • 网站建设原因做微商去哪些社交网站
  • 榆林国贸网站建设wordpress前端框架
  • 建网站需要怎样做wordpress多域名不稳定
  • 国外哪些网站可以注册域名有什么做服装的网站好
  • php网站开发技术环境要求企业邮箱登录入口首页
  • 网上接网站做asp 微信网站
  • 鞋网站建设网站群站优化
  • 网站建设 报价单 doc免费咨询广东律师事务所
  • 企业网站的建设与应用开题报告东莞的网站建设
  • 查询网站怎么做静态网站可以做留言板
  • 滁州项目建设公示在哪个网站html网站登录界面模板
  • asp.net开发移动网站模板下载龙岩app开发定制
  • 网站的管理系统搜索推广和信息流推广
  • 网站开发培训达内江苏省城市建设信用手册网站
  • 网站虚拟主机哪个好黄石网站建设价格
  • 怎样自己建设网站免费自助建站自助建站平台