Android Audio之AudioTrack和AudioFlinger怎么联系起来的?
来源:互联网 发布:细集料坚固性试验数据 编辑:程序博客网 时间:2024/04/27 23:51
参考:http://blog.csdn.net/special_lin/article/details/12849637
http://blog.csdn.net/yangwen123/article/details/39989751
http://lastwarmth.win/2016/10/22/live-audio/
https://github.com/oswystan/android/tree/master/audio_rec
1、1.frameworks/base/media/java/android/media/AudioTrack.java
private native final int native_setup(Object audiotrack_this);public AudioTrack(…)//AudioTrack构造函数
{
int initResult = native_setup(new WeakReference<AudioTrack>(this));
}
2.frameworks/base/core/jni/android_media_AudioTrack.cpp
static jint android_media_AudioTrack_setup(JNIEnv *env, jobject thiz, jobject weak_this)
{
sp<AudioTrack> lpTrack = new AudioTrack();
status = lpTrack->set(AUDIO_STREAM_DEFAULT);
}
3.frameworks/av/media/libmedia/AudioTrack.cpp
frameworks/av/include/media/AudioTrack.h
sp<IAudioTrack> mAudioTrack;
<1>status_t AudioTrack::set()
{
status_t status = createTrack_l();
}
<2>status_t AudioTrack::createTrack_l()
{
const sp<IAudioFlinger>& audioFlinger = AudioSystem::get_audio_flinger();
sp<IAudioTrack> track = audioFlinger->createTrack();
}
4.frameworks/av/services/audioflinger/AudioFlinger.cpp
sp<IAudioTrack> AudioFlinger::createTrack()
{
sp<PlaybackThread::Track> track;
PlaybackThread *thread = checkPlaybackThread_l(output);
track = thread->createTrack_l();
}
5.frameworks/av/services/audioflinger/Threads.cpp
sp<AudioFlinger::PlaybackThread::Track> AudioFlinger::PlaybackThread::createTrack_l()
{
uint32_t latencyMs = mOutput->stream->get_latency(mOutput->stream);
}
6.frameworks/av/services/audioflinger/Threads.h
AudioStreamOut *mOutput;
<1>frameworks/av/services/audioflinger/AudioFlinger.h
struct AudioStreamOut
{
AudioHwDevice* const audioHwDev;
audio_stream_out_t* const stream;
};
<2>hardware/libhardware/include/hardware/audio.h
struct audio_stream_out {
uint32_t (*get_latency)(const struct audio_stream_out *stream);
};
<1>static int adev_open_output_stream()
{
out->stream.get_latency = out_get_latency;
}
<2>static uint32_t out_get_latency(const struct audio_stream_out *stream)
{
}
阅读全文
0 0
- Android Audio之AudioTrack和AudioFlinger怎么联系起来的?
- Android多媒体:AudioTrack和AudioFlinger的交互
- Android Audio 02 - AudioTrack/AudioFlinger/AudioPolicyService 构架
- Andorid之MediaPlayer和AudioTrack播放Audio的区别与联系
- MediaPlayer和AudioTrack播放Audio的区别与联系
- MediaPlayer和AudioTrack播放Audio的区别与联系
- MediaPlayer和AudioTrack播放Audio的区别与联系
- MediaPlayer和AudioTrack播放Audio的区别与联系
- MediaPlayer和AudioTrack播放Audio的区别与联系
- MediaPlayer和AudioTrack播放Audio的区别与联系
- MediaPlayer和AudioTrack播放Audio的区别与联系
- MediaPlayer和AudioTrack播放Audio的区别与联系
- [Android Audio]AudioFlinger(一)AudioFlinger的启动
- 【Android Audio】Android Audio System 之一:AudioTrack如何与AudioFlinger交换音频数据
- Android Audio System 之一 Audio (1) AudioTrack如何与AudioFlinger交换音频数据
- Android Audio System 之二:AudioFlinger
- Android Audio System 之二: AudioFlinger
- Android Audio System 之二:AudioFlinger
- fastjson,gson,jackson类型性能对比
- K路归并问题小结
- HTMT颜色标签的应用
- 构造方法和析构方法的区别
- Unity笔记:cloth布料穿透
- Android Audio之AudioTrack和AudioFlinger怎么联系起来的?
- c++模板一点
- 对决
- 基本排序算法
- 如何解决在eclipse部署项目无法访问到Tomcat预览界面
- 深入理解uCOS-II内核之任务
- Linux运维笔记-文档总结-Firewalld服务
- Spark RDD API 参考示例(五)
- 显示文件中的所有字符