Android 音频源码分析——Thread Track分析

基于Andorid9.0源码

分析下AudioRecord、AudioTrack对应 audioserver中的关键类。

一.ThreadBase

ThreadBase,线程类对音频数据处理(混音、音效),从Hal层读数据、写数据

分析AudioRecord和AudioTrack源码,发现有多种Thread,都继承ThreadBase。其结构如下图

在这里插入图片描述

  • RecordThread:录音线程

  • PlaybackThread:播放线程,包括多个子类,对应不同的播放模式;

    MixerThread:混音线程

    DuplicatingThread:混音线程子类,特殊在于音频数据复制成两份分别输出

    DirectOutputThread:直接输出,软件层不需要mixer混音,直接交给hal层数据

    OffloadThread:压缩的音频数据,直接输出到hal层,由音频DSP进行解码处理;

  • MmapThread:映射线程,AAudio使用,后续研究。。。

MixerThread

以MixerThread为例分析下其内部使用

MixerThread由AudioFlinger openOutput创建,其父类PlaybackThread重写了Thread的threadLoop,onFirstRef方法,MixerThread没有重写.

void AudioFlinger::PlaybackThread::onFirstRef()
{
   
    run(mThreadName, ANDROID_PRIORITY_URGENT_AUDIO);
}

MixerThread对象创建时会调用onFirstRef函数,run 方法启动线程循环体threadLoop

bool AudioFlinger::PlaybackThread::threadLoop(){
   
	while (!exitPending())
    {
   	//....
    	processConfigEvents_l();
    	
    	mMixerStatus = prepareTracks_l(
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android网络连接源码分析主要涉及到Android系统中网络连接的相关实现和机制。下面是Android网络连接的源码分析: 1. 网络连接管理类:Android中的网络连接管理由ConnectivityManager类负责。该类提供了获取网络状态、监听网络状态变化等功能。其源码位于frameworks/base/core/java/android/net/ConnectivityManager.java。 2. 网络请求类:Android中的网络请求由HttpClient或HttpURLConnection实现。在Android 6.0及以上版本中,Google推荐使用HttpURLConnection。HttpClient的源码位于frameworks/base/core/java/org/apache/http/impl/client/DefaultHttpClient.java,HttpURLConnection的源码位于libcore/luni/src/main/java/java/net/HttpURLConnection.java。 3. 网络请求处理类:Android中的网络请求处理由AsyncTask或者Thread实现。AsyncTask是一个封装了线程池和Handler的异步任务类,用于在后台执行耗时操作,并在主线程更新UI。其源码位于frameworks/base/core/java/android/os/AsyncTask.java。 4. 网络请求结果处理类:Android中的网络请求结果处理由Handler或者Callback实现。Handler用于在主线程中处理异步任务的结果,Callback则是一种回调机制,用于在异步任务完成后执行相应的操作。 5. 网络缓存类:Android中的网络缓存由DiskLruCache或者LruCache实现。DiskLruCache用于将网络请求结果缓存到本地磁盘,LruCache则是一种内存缓存机制,用于缓存网络请求结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值