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

Android Audio基础(53)——PCM逻辑设备Write数据

1. 前言

本文,我们将以回放(Playback,播放音频)为例,讲解PCM Data是如何从用户空间到内核空间,最后传递到Codec。
在 ASoC音频框架简介中,我们给出了回放(Playback)PCM数据流示意图。:

在这里插入图片描述

对于Linux来说,由于分为 user space 和kernel space,而且两者之间数据不能随便互相访问。因此用户如果播放音频,则需要调用copy_from_user()将用户数据从user space拷贝到kernel space (DMA Buffer)。
DMA 负责将DMA Buffer中的音频数据搬运到I2S TX FIFO。(soc内存到设备内存)
通过I2S总线,将音频数据传送到Codec。
Codec内部经过DAC转换,将模拟信号传到扬声器SPK(头戴式耳机、耳塞式耳机)。如果我们跳出所谓的ASOC框架。任何一个框架想要将音频数据从应用播出,都需要经历上面的步骤。
用户态>>内核态>>设备内存>>设备内存>>codec。
下面基于源码看看ASOC的Da


http://www.kler.cn/a/472142.html

相关文章:

  • IT面试求职系列主题-Jenkins
  • STM32供电参考设计
  • 嵌入式系统 (2.嵌入式硬件系统基础)
  • 继承(6)
  • 【和春笋一起学C++】文本输入与读取(二)
  • 平面坐标转大地坐标(arcgisPro中进行)
  • 让你的网页动起来:深入理解 CSS 动画和过渡
  • 红日靶场12457-2024
  • 【flink-cdc】flink-cdc 3版本debug启动pipeline任务,mysql-doris
  • 【马来西亚理工大学主办,ACM出版】2025年大数据、通信技术与计算机应用国际学术会议(BDCTA 2025)
  • Python3刷算法来呀,贪心系列题单
  • 大数据-234 离线数仓 - 异构数据源 DataX 将数据 从 HDFS 到 MySQL
  • SQL编程语言
  • pytorch 比较两个张量的是否相等的函数介绍
  • Python爬虫应用领域
  • 计算机网络:虚拟机虚拟网络配置
  • 鸿蒙中黑白版
  • 基于RedHat9部署WordPress+WooCommerce架设购物网站
  • SQL Server存储过程来实现分页功能
  • TRELLIS - 生成 3D 作品的开源模型
  • KUKA机器人如何修改程序并下载到机器人控制器中?
  • uniapp uni-popup使用scroll-view滚动时,底部按钮设置position:fixed失效,部分ios设置有问题
  • 大模型RAG面试内容有哪些?(附面试资料合集)
  • redis学习-value数据结构
  • # Kafka组件化及拓展
  • Bash语言的数据类型