不符合网站外链建设原则的是个人备案网站能用公司

news/2025/9/29 21:53:03/文章来源:
不符合网站外链建设原则的是,个人备案网站能用公司,wordpress 互动模块,专业建站公司提供详细的功能描述及报价文章目录 前言音频服务audioserver音频数据链路hal 提供什么样的作用 前言 Android 的音频是一个相当复杂的部分。从应用到框架、hal、kernel、最后到硬件#xff0c;每个部分的知识点都相当的多。而android 这部分代码在版本之间改动很大、其中充斥着各种workaround的处理每个部分的知识点都相当的多。而android 这部分代码在版本之间改动很大、其中充斥着各种workaround的处理让人看的云里雾里。网上相应的分析文章也很多有些就贴大段的代码 是很不容易理解的。本系列就遵循从整体到局部 从简单到复杂来分析。很多时候可能是带着问题来看文章。而写博客的目的 一是记录分析的过程从迷茫 混乱到清晰 有序的关键概念和流程的理解。二是对系统或者框架思想的一个整体理解为解决问题打下基础。总体的一个理解借用android 官网的一张图 从应用层开始所有封装中的音频数据经过解码后为pcm数据或者音频的裸数据这个数据就拷贝到framework层framework根据设备和配置文件中定义的路由情况将应用层指定的数据送到对应的设备进行输出。 本篇文章的目标包括以下几点 从开机出发理解android audioservice 中audioflinger、audiopolicy提供怎样的服务。从播放出发理解android的音频数据如何一路送到硬件。从vendor.auio-hal出发理解hal层提供了怎样的服务。 音频服务audioserver 首先从开机启动的音频相关服务audioserver开始 开机init.rc文件中和音频有关的service audioserver其包括android 音频框架两个最重要的服务audioflinger 和audiopolicy。当然这两个服务之间并没有相互隔离的很开有些函数会在这两个服务直接相互调用。 audioflinger的作用 跟HAL层的接口进行交互的地方 包括load具体的某个module的实现open相应的stream、往stream中写数据。为每个open的stream 创建相对应的线程并维护线程和dev之间的关系创建线程的时机是在成功open stream之后。维护和暴露给外部接口相对应的track对外部track写到stream的数据进行处理包括mix、格式转换、采样率转换、音效处理、音量处理等等。创建patch为音频输入和输出直接创建通路和线程 使输入的数据直接输出到输出设备而不需要通过应用层。根据配置track的模式、生成不同的线程对数据进行不同的处理 主要有三种分别为directtrack的数据直接写到hal、mix经过混音 格式转换等处理、offload 不经过解码数据直接写到dsp中。 audiopolicy的作用 载入音频audio_policy_configuration.xml配置文件并将配置文件中的moules、module、port、profile、routes抽象成代码中的各种概念比如modules、device、port等等。并在解析到attach device后 去调用audioflinger的openOutput stream打开设备.保存路由的信息、这里面包括xml定义的 和 通过外部注册到policy的mix。track 启动播放的时候 会调用audiopolicy的接口getoutputfromattr 通过attr获取输出的设备。获取设备后同时可以找到对应的线程这样往track写的数据 就会写到hal。 音频数据链路 简单的来讲 外部通过解码或者未解码的数据 buffer 写到track这个track 可以是应用层也可以是framework层应用层的调用到mediaPlayerservice 中的AudioOutput 其继承了AudioSinkaudioSink是外部用的 从前面的分析可以往这个track写数据最终都会要通过output device对应的线程里面去写的。可以看出这两个是属于不同的进程。一个是mediaserver 一个是audioserver其数据交互是通过匿名共享内存来实现。 这个共享内存在audioflinger创建track的时候分配的。在mediaserver 往track写数据的时候会把数据拷贝到这个共享内存中然后audioflinger 把数据从共享内存中拷贝出来 经过一系列处理写到hal中。 hal 提供什么样的作用 hal的功能有定义的一系列的接口主要就是打开声卡设备、然后往声卡设备里面写数据。hal提供给外部audioFlinger的主要接口是openDevice 和open_output_stream。不同vendor实现的方式不一样目前看到的大部分的实现是基于tinyalsa提供的接口来实现对声卡控件的操作和声卡的读写。 open_output_stream 实现是创建了stream_out结构体并赋值实现stream_out结构体中的不同函数指针。并将这个结构体返回给外部调用。这个会转换为外部的结构体 AudioStreamOut。 这个结构体会传递到audioFlinger 创建MixerThread中后续应用调用audiotrack的write 函数会调用到hal层的write函数hal层使用tinyalsa 或者alsa的写到内核驱动中。 out_write hal中只有在out_write里面才会真正的去打开底层的硬件 进行数据的写入。 总结 总的来说 外部 framework audioflinger 通过hal提供的接口创建出dev 和stream以用来获取hal层的能力相关的接口实现在audio hal中有定义然后audioFlinger 通过调用dev和stream的指针函数来操作hal主要的接口有打开设备 打开流 写数据 读数据等等。

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

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

相关文章

摄影学习网站连云港市建设局网站安全员考试

文章目录 前言一、安装与运行命令行运行 python 文件 二、变量和简单数据类型2.1 变量命名规则2.2 字符串2.2.1 字符串的简单运算title()upper()、lower() 2.2.2 合并(拼接)字符串2.2.3 使用制表符或换行符来添加空白2.2.4 删除空白2.2.5 Python 2 中的 …

北京seo网站内部优化电子商务网站建设的定义

随着科技的不断进步和创新,无人机技术在各个领域中都发挥着越来越重要的作用。其中,光伏电站对于无人机的应用也成为了行业内的高效运维方式之一,凭借无人机卓越的性能和可靠性,有效的减少了人力运维的危险性和延迟性,…

2025.9.29

今天又是非常疲惫的周一,一天都是满课,上午两节,下午三个半小时,上完课之后我去好想来买零食,回来时候拿外卖,吃完饭后去洗澡,然后录下午课的视频。

网站开发使用的工具类做网站的技术理论

const用法主要是防止定义的对象再次被修改,定义对象变量时要初始化变量 下面我就介绍一下几种常见的用法 1.用于定义常量变量,这样这个变量在后面就不可以再被修改 const int Val 10; //Val 20; //错误,不可被修改 2. 保护传参时参数不被修改,如果使用引用传递参数或按地址传…

网站开发的语言做网站个人

From: http://www.cnblogs.com/caosiyang/archive/2012/08/21/2648870.html printf()和fprintf()这些输出函数的参数是可变的,在调试程序时,你可能希望定义自己的参数可变的输出函数, 那么可变参数宏会是一个选择。 C99中规定宏可以像函数…

深入解析:前端笔记:HTML output标签介绍及用法

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

成都网络推广建站深圳华强北商业圈

使用基于全球知名的 Corel Painter 画笔技术构建的 100 款逼真像素画笔,以全新的方式将您独特的想法变为现实!试用 CorelDRAW 的全新美术画笔,探索您的创意想法。 使用 CorelDRAW 中现在可用的远程字体,畅享更多创作自由&#xf…

无锡网站程序北京设计公司招聘信息

前言 在《Unix网络编程》一书中提到了五种IO模型,分别是:阻塞IO、非阻塞IO、IO复用、信号驱动IO以及异步IO。本篇文章主要介绍IO的基本概念以及阻塞IO、非阻塞IO、IO复用三种模型,供大家参考学习。 一、什么是IO 计算机视角理解IO: 对于计…

设计模版网站wordpress侧栏插件

1.获取SDK,并写入常量表 2.引入MiPush_SDK_Sever.jar文件和json-simple-1.1.1.jar 3.开发服务端代码(这里是用别名进行推送) /*小米推送*//** * 指定alias推送(单个或多个) * * param messagePayload 消息 * param title 消息标题 *…

如何创建一个自己的平台北京网站建设 优化

题目: $num$_GET[num]; if(!is_numeric($num)) { echo $num; if($num1) echo flag{**********}; }关键在于绕过is_numeric,PHP中字符串与数字弱比较,会将字符串转换为数字,截至到非数字字符,如果第一个字符就是非数字…

Linux CentOS 7 安装 zip-3.0-11.el7.x86_64.rpm 详细步骤(命令行教程)​(附安装包)

Linux CentOS 7 安装 zip-3.0-11.el7.x86_64.rpm 详细步骤(命令行教程)​(附安装包)​一、先确认你的系统是 CentOS 7 或 RHEL 7 这个包名字里有 el7,说明它是专门给 ​CentOS 7​ 或者 ​RHEL 7​ 用的。如果你不是…

网站开发logo关键字排名优化工具

三星有子初长成气宇轩昂 秀美俊逸减之一分则嫌柔增之一分则嫌赘2019年8月7日于纽约巴克莱发布Galaxy Note 10系列用简约 重构美三星Galaxy Note 10与Galaxy Note 10分别搭载了6.3英寸和6.8英寸的超感官全视曲面屏,均采用单摄挖孔屏,开孔位于屏幕正上方。…

用动物做logo的旅游网站小说网站如何做书源

原标题:特斯拉最大的对手竟是华为?Hicar鸿蒙OS无人驾驶技术不再一家独大!短短几个月的时间,特斯拉的市值翻了近4倍,对于一个超级企业来说一切都显得那么不可思议,如果把它单纯的看成一家车企,恐…

怎么样让百度收录网站企业网站icp

概述 通过本文,您将学会如何利用 Streamlit 框架快速搭建前端交互界面。该界面将集成图像上传功能,让用户可以方便地提交待处理图片。在后端,我们将借助 Amazon Bedrock 的 Message API,调用 Claude 3 家族中的 Sonnet 模型对图像…

高维前缀和 笔记

你知道学完一个东西不写笔记会有什么后果吗?——直接失忆。

Unbranched

简化题意 给定一个有 \(N\) 个顶点、\(M\) 条边的无向图,顶点有标签,边没有标签。该图不一定是简单图,也不一定是连通图。请计算满足以下条件的图的数量,并将结果对 \(10^9+7\) 取模:不包含自环。 所有顶点的度数…

免费申请网站空间教学网站开发背景

目录 1. 数据结构1-1. 动态字符串(SDS)1-2. intset1-3. Dict 2. 网络模型3. 通信协议4. 内存策略 1. 数据结构 1-1. 动态字符串(SDS) 我们都知道Redis中保存的Key是字符串,value往往是字符串或者字符串的集合。可见字…

必应搜索引擎入口seo现在还有前景吗

打开注册表编辑器,在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager中找到PendingFileRenameOperations项目,并删除它。这样就可以清除安装暂挂项目。 方法二: 1、添加/删除程序中彻底删除sql server。 2、将没有删除…

P5469 [NOI2019] 机器人 题解

P5469 [NOI2019] 机器人 题解 分析最右侧的最大值的位置,发现当 \(n\) 为偶数时只能在中间两个位置,当 \(n\) 为奇数时只能在中间三个位置。可以 DP,设 \(f_{l,r,i}\) 表示 \([l,r]\) 的最大值小于等于 \(i\) 的方案…

肥城网站建设广州外地车牌注册建筑公司需要什么条件

go编译程序出现错误提示: go.mod file not found in current directory or any parent directory; see ‘go help modules’ (exit status 1) 解决方法: cmd切换到go工程目录下,执行: go mod init 工程名称