【瑞昱RTL8763E】音频

news2024/10/6 21:43:05

1 音乐播放控制

1.1 播放列表更新

文件系统在sd卡中保存header.bin及name.bin两份文件用于歌曲名称的存储。为方便应用层进行歌曲显示及列表管理,可将这两个bin文件信息读取并保存到nor flash中。需要播放指定名称的歌曲时,将对于歌曲名称传递给文件系统接口,可直接完成歌曲的播放。

uint32_t audio_fs_get_header_list_size(void);

uint32_t audio_fs_get_name_list_size(void);

uint16_t audio_fs_read_header_list(uint32_t offset, uint8_t *readBuf, uint32_t readLen, uint32_t *len);

uint16_t audio_fs_read_name_list(uint32_t offset, uint8_t *readBuf, uint32_t readLen, uint32_t *len);

  • offset,文件偏移地址
  • readBuf,读取数据buffer
  • readLen,期望读取长度
  • len,实际读取长度

header.bin描述歌曲总数及各个歌曲名称在name.bin中的偏移及长度信息。header.bin格式如下。

Count

Reserved

Song info1

Song info2

……

2bytes

4bytes

Sizeof(T_SONG_NAME_INFO)

Sizeof(T_SONG_NAME_INFO)

typedef struct

{

    uint32_t    offset;    //Start offset of the song name

    uint16_t    length;       //Length of the song name

    uint16_t    plIndex;    /*Play List Index, indicate which playlist the song belongs to.

    uint8_t     isDeleted : 1;  /* flag of if song is deleted.1: deleted,0: not deleted */

    uint8_t     needToUnlink : 1;  /* flag of if song need to unlink. */

    uint8_t     extension : 6;

    uint16_t     rsv;            /* Reserve for future usage, should set to "0" */

} __attribute__((packed)) T_SONG_NAME_INFO;

 name.bin保存各个歌曲的名称信息,结合song info中提供的offset和length部分,可以提取到各个歌曲的名称。

Song name 1

Song name 2

……

Name data(Unicode)

Name data(Unicode)

1.2音乐播放控制

T_APP_AUDIO_FS_ERROR app_audio_fs_interface_play_by_name(uint8_t *file_name, uint16_t length)

void app_mmi_handle_action(uint8_t action)

    case IO_MSG_MMI:

        {

            uint8_t action = p_watch_msg->u.param;

            app_mmi_handle_action(action);

        }

        break;

    case IO_MSG_PLAY_BY_NAME:

        {

            if (app_db.usb_status == USB_PLUG_OUT)

            {

                T_SONG_NAME_INFO *play_name = (T_SONG_NAME_INFO *)p_watch_msg->u.param;

                app_audio_fs_interface_play_by_name((uint8_t *)(MUSIC_NAME_BIN_ADDR + play_name->offset), play_name->length);

            }

            else

            {

                APP_PRINT_INFO0("ERROR: USB plug in, disallow play media now!");

            }

        }

        break;

 音频控制,包括播放、暂停、音量调节等,可通过MMI(Man Machine Interface)和app_audio_fs_interface_play_by_name完成播放列表的维护由上层进行切换歌曲时上层只需要控制传入歌曲的名称信息即可MMI命令所定义的action可参考T_MMI_ACTION,已实现的功能参考void app_mmi_handle_action(uint8_t action)

本地播放模式与耳机播放模式下,上层共用MMI命令,底下会做区分。不同模式之间的切换也可通过MMI命令完成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2192973.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Maven安装使用

说明:Maven是Apache旗下的一个开源项目,是一款用于管理和构建java项目的工具。一般来说,它帮助我们管理依赖、构建项目。本文介绍在Windows系统下安装Maven。 下载&安装&验证 下载 首先,在Maven官网(https:…

【第十五周】PyTorch深度学习实践2

目录 摘要Abstract1.多分类问题1.1.Softmax1.2.维度问题1.3.NLLLoss v.s. CrossEntropy1.4.代码实践1.4.1.导入相应的包1.4.2.准备数据集1.4.3.模型设计1.4.4.构造损失和优化器1.4.5.模型训练 2.卷积神经网络基础篇2.1.代码实践2.1.1.导入相应的包:2.1.2.准备数据集…

我谈巴特沃斯滤波器

目录 写在前面的内容我谈巴特沃斯滤波器巴特沃斯滤波器的幅频响应频率变换巴特沃斯各种滤波器例子 写在前面的内容 先看看冈萨雷斯对巴特沃斯滤波器的介绍。 低通 高通 带阻 带通 第一个问题,截止频率处的增益。 0.5的增益是不是陡度小了?巴特沃…

ai智能论文生成系统有用吗?分享5款ai文献综述自动生成器

近年来,人工智能(AI)技术在学术写作领域的应用越来越广泛,尤其是在文献综述的自动生成方面。AI智能论文生成系统通过深度学习和自然语言处理技术,能够帮助研究人员快速生成高质量的文献综述,从而提高写作效…

深度扩展AntSK,让.NET Aspire助力您的AI项目

引言 在现今飞速发展的技术世界中,引用最新的工具和框架来提升项目的性能和可管理性至关重要。作为一名开发者,我最近在自己的AI知识库项目AntSK中集成了.NET Aspire,这为我的项目注入了新的活力。如果你还不清楚什么是.NET Aspire&#xff0…

[单master节点k8s部署]32.ceph分布式存储(三)

基于ceph rbd生成pv 在集群中认证ceph 用下面代码生成ceph的secret .创建 ceph 的 secret,在 k8s 的控制节点操作: 回到 ceph 管理节点创建 pool 池: [rootmaster1-admin ~]# ceph osd pool create k8stest 56 pool k8stest created [rootm…

BERT论文解读及情感分类实战(论文复现)

BERT论文解读及情感分类实战(论文复现) 本文所涉及所有资源均在传知代码平台可获取 文章目录 BERT论文解读及情感分类实战(论文复现)简介BERT文章主要贡献BERT模型架构技术细节任务1 Masked LM(MLM)任务2 N…

【web安全】——常见框架漏洞

1.ThinkPHP框架漏洞 thinkphp是一个国内轻量级的开发框架,采用phpapache,在更新迭代中,thinkphp也经常爆出各种漏洞,thinkphp一般有thinkphp2、thinkphp3、thinkphp5、thinkphp6版本,前两个版本已经停止更新&#xff…

【详细教程】如何使用YOLOv11进行图像与视频的目标检测

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…

m4a怎么转换成mp3?音频转换MP3只需要这6个小工具!

m4a怎么转换成mp3?M4A和MP3是两种常见的音频格式,M4A通常使用AAC(高级音频编码)进行压缩,提供更高的音质和更小的文件体积,特别适合在Apple设备上使用。而MP3则以其高压缩比和广泛的兼容性著称,…

TM1618数码管控制芯片使用共阳极数码管过程中的问题和解决办法

控制芯片的基本了解 相比于不用控制芯片的电路:这里带2根电源线和3个信号线,共使用了5根线,但可以控制4个8段数码管显示。若是电路直接控制4个8段数码管需要84113个接口,这对于MCU的珍贵引脚简直是浪费。 这里不会出现余晖效应也…

大花蔷薇T2T基因组-60

Multi-omics analyzes of Rosa gigantea illuminate tea scent biosynthesis and release mechanisms 多组学分析揭示了大花蔷薇茶香合成及释放机制 摘要 玫瑰是一种全球广泛栽培的重要观赏作物,用于香水生产。然而,由于缺乏茶玫瑰的参考基因组&#x…

鸿蒙开发(NEXT/API 12)【穿戴设备传感器获取】手机侧应用开发

手机侧应用可以通过Wear Engine获取穿戴设备上的传感器信息,并通过打开、关闭命令控制获取传感器数据。 使用传感器相关接口前,需要向手机侧用户申请获取对应权限的授权 传感器类型申请权限ECG、PPG、HR[HEALTH_SENSOR]人体传感器ACC、GYRO、MAG[MOTIO…

汇编DEBUG程序调用

工具 系统:Windows 11 应用:DOSBox 0.74-3 下载安装教程:本人写的《DOSBox下载安装(Windows系统 DOSBox 0.74-3)》 https://blog.csdn.net/just_do_it_sq/article/details/142715182?spm1001.2014.3001.5501 相关文…

C++ 算法学习——1.3 深度优先搜索

深度优先搜索:简单讲就是搜到某条路尽头,再掉头回溯搜其他的路。此中重点是尽头的判断,和对走过的路进行标记。 一般采用递归的写法,模板大致如下: DFS(node,visited):if node is in visited:returnadd node to visi…

通用mybatis-plus查询封装(QueryGenerator)

结果如下图所示 java类代码分别如下 1 package com.hdx.contractor.util.mybatis;import com.hdx.contractor.common.user.SecurityUser; import com.hdx.contractor.common.user.UserDetail; import com.hdx.contractor.util.query.oConvertUtils; import lombok.extern.slf…

OpenHarmony(鸿蒙南向开发)——轻量系统芯片移植案例(一)

往期知识点记录: 鸿蒙(HarmonyOS)应用层开发(北向)知识点汇总 鸿蒙(OpenHarmony)南向开发保姆级知识点汇总~ 持续更新中…… 轻量带屏解决方案之恒玄芯片移植案例 本文章基于恒玄科技BES2600W…

【AI知识点】交叉验证(Cross-Validation)

交叉验证(Cross-Validation) 是机器学习中常用的一种模型评估方法,用于评估模型的性能和泛化能力。它通过在不同的训练集和验证集上多次训练和测试模型,从而有效地评估模型在未见数据上的表现,帮助防止模型的过拟合和欠…

【RTD MCAL 篇2】 K312 UART DMA

【RTD MCAL 篇2】 K312 UART DMA 一,文档简介二, 功能实现2.1 K312 MINIEVB硬件配置2.2 EB 配置2.2.1 Mcl module2.2.2 Mcu module2.2.3 Platform module2.2.4 Port module2.2.5 Uart module2.2.6 Rm module 2.3 main code 三,测试结果 一&am…

Clio——麻省理工学院增强机器人场景理解算法

概述 机器人感知长期以来一直受到现实世界环境复杂性的挑战,通常需要固定设置和预定义对象。麻省理工学院的工程师 已经开发了Clio这项突破性的系统可以让机器人直观地理解并优先考虑周围环境中的相关元素,从而提高其高效执行任务的能力。 了解对更智…