news 2026/7/7 20:29:11

安卓 之 PassthruPatchRecord

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
安卓 之 PassthruPatchRecord

1. 类介绍

PassthruPatchRecord 是 Android AudioFlinger 中一个特殊的 patch。它的核心设计目标是实现一种 “直通” 模式,用于 AUDIO_SOURCE_VOICE_PERFORMANCE 等需要极低延迟的音频场景。

• 继承关系: PassthruPatchRecord -> PatchRecord -> RecordTrack -> TrackBase。

• 特殊之处: 普通的 PatchRecord 在两个音频线程(如 PlaybackThread 和 RecordThread)之间建立一个软件缓冲区进行数据中转。而 PassthruPatchRecord 旨在绕过内部软件混音器,尽可能直接地将来自输入流(如麦克风)的数据传递到输出流(如扬声器/耳机),以最小化延迟。

• 工作原理: 它本质上是一个“傀儡”或“桥梁”。它本身不持有大的音频缓冲区,而是在 RecordThread(生产者)和 PlaybackThread(消费者)之间协调,促使数据直接从 HAL 层读取后,尽快写入到 HAL 层。

2. 数据流转

数据流转涉及两个关键的线程和它们之间的交互:

  1. RecordThread(录制线程 - 生产者):
    这个线程代表音频输入源(如麦克风)。

    它调用 PassthruPatchRecord 的 read 方法,试图获取音频数据。

    关键点: PassthruPatchRecord 的 read 方法并不提供真实的音频数据,而是模拟读取(返回静音数据),并同时通知另一个线程去执行真正的 I/O 操作。

  2. PlaybackThread(播放线程 - 消费者):
    这个线程代表音频输出目标(如扬声器)。

    它调用 PassthruPatchRecord 的 obtainBuffer 方法,请求可用的音频数据进行播放。

    关键点: 正是在 obtainBuffer 方法中,真正的音频 I/

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/7 9:46:23

csp信奥赛C++标准模板库STL(11):STL常用算法详解

csp信奥赛C标准模板库STL&#xff08;11&#xff09;&#xff1a;STL常用算法详解 一、排序算法 1. sort - 快速排序 #include <algorithm> #include <vector> #include <iostream>using namespace std;int main() {vector<int> v {5, 3, 8, 1, 4};…

作者头像 李华
网站建设 2026/7/7 7:43:12

微观交通流仿真软件:AIMSUN_(6).交通信号控制优化

交通信号控制优化 1. 交通信号控制的基本概念 交通信号控制是交通管理和优化中的一项重要技术&#xff0c;通过合理设置和调整信号灯的时间配比&#xff0c;可以显著提高交叉口的通行效率&#xff0c;减少交通拥堵&#xff0c;降低交通事故率。在微观交通流仿真软件中&#x…

作者头像 李华
网站建设 2026/7/7 16:29:15

鸿蒙中 pasteboard进行数据复制、粘贴

本文同步发表于我的微信公众号&#xff0c;微信搜索 程语新视界 即可关注&#xff0c;每个工作日都有文章更新 在鸿蒙&#xff08;HarmonyOS&#xff09;中实现复制粘贴功能需使用kit.BasicServicesKit的剪贴板服务&#xff1a; 一、约束限制 容量限制&#xff1a; 剪贴板内容…

作者头像 李华
网站建设 2026/7/7 9:05:53

线段树模板讲解

题目描述如题&#xff0c;已知一个数列 {ai​}&#xff0c;你需要进行下面两种操作&#xff1a;将某区间每一个数加上 k。求出某区间每一个数的和。输入格式第一行包含两个整数 n,m&#xff0c;分别表示该数列数字的个数和操作的总个数。第二行包含 n 个用空格分隔的整数 ai​&…

作者头像 李华
网站建设 2026/7/7 16:52:09

LabVIEW开发FCT测试

某消费电子类5V/2A USB 快充模块&#xff0c;需完成出厂功能全检&#xff0c;核心测试项如下&#xff1a;输入电压 / 电流检测&#xff08;AC 220V 输入&#xff0c;转换前的电气参数&#xff09;&#xff1b;输出电压 / 电流检测&#xff08;DC 5V 输出&#xff0c;空载 / 带载…

作者头像 李华