
Android-Audio
zhuyong006
这个作者很懒,什么都没留下…
展开
-
Audio -- Music Playback 框图
原创 2018-03-16 15:38:17 · 644 阅读 · 0 评论 -
Audio播放流程(三)---NuPlayer流程之setAudioStreamType以及prepare
1.setAudioStreamType的过程frameworks\av\media\libmediaplayerservice\MediaPlayerService.cppstatus_t MediaPlayerService::Client::setAudioStreamType(audio_stream_type_t type){ ALOGE("[%d] setAudioS...原创 2019-01-10 10:49:55 · 2487 阅读 · 0 评论 -
Audio播放流程(六)---数据进入AudioTrack
1. 音频数据流的框图2. AudioTrack播放音频数据的三个套路先看个音频播放例子吧,我是使用Native的AudioTrack播放PCM的音频,这个例子目前还是存在一些问题的,声音能够播放,但是播放的声音存在underrun的问题,目前还没找到原因。希望在分析完音频流后能够解决吧。#define BUF_SZ 44100#define FRAME_COUNT 1024#def...原创 2019-01-23 14:46:51 · 3261 阅读 · 2 评论 -
音频输出设备是如何决定的
1. 既然是分析音频输出设备,我们首先需要知道当前手机支持的音频输出设备有哪些adb shell dumpsys media.audio_policy > /home/jon/audio_policy.txt我们关注如下字段:- Available output devices: Device 1: - id: 1 - tag name: Earpiece原创 2019-03-05 16:21:39 · 7448 阅读 · 4 评论 -
如何查看当前音频的输出路径
前文分析了音频输出设备是如何决定的本文目的是确认音频的当前输出路径1.首先前文我们通过解析audio_policy_configuration.xml文件得到了众多的音频输出路径,正如前文分析并非所有的音频路径都能够被之后的音频输出流使用,真正被系统认可并加入的音频路径其实并不多,我们同样可以通过dump下media.audio_policy服务来获取adb shell dumpsys me...原创 2019-03-08 15:31:26 · 3412 阅读 · 0 评论 -
Android音频路由策略
Android音频路由策略1. 分析音频的默认路由在之前的文章音频输出设备是如何决定的中,我们知道AudioTrack的创建过程会调用到getOutputForAttrstatus_t AudioPolicyManager::getOutputForAttr(const audio_attributes_t *attr, ...原创 2019-03-14 17:57:53 · 7237 阅读 · 2 评论 -
Android中AudioPatch相关分析
AudioPatch中有篇文章分析的蛮好的,链接在这儿但是针对高通平台(例如MSM8953/SDM660等)其实是不支持的AudioPatch的,原因如下:frameworks\av\services\audioflinger\Threads.cppstatus_t AudioFlinger::PlaybackThread::createAudioPatch_l(const struct...原创 2019-03-20 15:01:57 · 10494 阅读 · 2 评论 -
Android7.1 Offload模式下的音频数据抽取过程
针对offload模式的AudioTrack,在构建的时候会new一个抽取音频数据的线程如下:AudioTrack.cpp (frameworks\av\media\libmedia)AudioTrack::set if (cbf != NULL) { mAudioTrackThread = new AudioTrackThread(*this, threadCan...原创 2019-04-10 19:17:19 · 1964 阅读 · 0 评论 -
Android7.1 音频声音控制策略
我们知道在AUDIO_STREAM_MUSIC的stream类型下,声音是从Speaker和耳机输出的,为了加深对AudioPolicy的认识,希望通过修改代码实现在AUDIO_STREAM_MUSIC的stream类型下,声音可以从Speaker和耳机同时输出。其实办法有2个,一个是改Framwork层,一个方法是改Hal层,原理其实是一致的。Track::start AudioPolicy...原创 2019-03-28 11:43:39 · 6041 阅读 · 1 评论 -
Android7.1 Audio Debug相关方法
1. Audio的FW和HAL层dump PCM数据(非offload的场景,对应offload,dump出来的还是原数据)1.抓取Systrace <1>怎么加参考:frameworks/av/services/audioflinger/Threads.cpp #define ATRACE_TAG ATRACE_TAG_AUDIO ATRACE_BEGIN("...原创 2019-04-11 19:18:27 · 1592 阅读 · 0 评论 -
Android7.1 怎么将Audio硬解码改为软解码
frameworks\av\media\libmediaplayerservice\nuplayer\NuPlayer.cppvoid NuPlayer::determineAudioModeChange(const sp<AMessage> &audioFormat) {{ ... bool canOffload = canOffloadStream( ...原创 2019-04-08 18:18:04 · 1550 阅读 · 0 评论 -
国内外优秀音视频博客
AVBlog国内外优秀音视频博客收录国内外知名音视频技术相关优秀博客,主要是DaveBobo整理,感谢@DaveBobo,我补充了一些团队号及一些个人,给有志于做音视频开发的朋友一些参考。还会持续更新。个人相关:雷霄骅:http://blog.youkuaiyun.com/leixiaohua1020/简介:雷神,永远的闪耀明星,国内音视频blog第一人卢俊:http://ticktick.blo...原创 2019-04-09 13:55:40 · 886 阅读 · 0 评论 -
Android-7.0-Nuplayer-启动流程
原帖地址:Nuplayer为异步架构,随处可见的AMessage看代码着实头大, 以下为个人总结,供大家参考,如有错误不吝赐教。Nuplayer简介Android2.3时引入流媒体框架,而流媒体框架的核心是NuPlayer。Android4.0之后HttpLive和RTSP协议开始使用NuPlayer播放器,Android5.0(L版本)之后本地播放也开始使用NuPlayer播放器。 ...转载 2019-04-09 18:50:32 · 343 阅读 · 0 评论 -
Android-7.0-Nuplayer概述
原帖地址:Nuplayer简介Android2.3时引入流媒体框架,而流媒体框架的核心是NuPlayer。Android4.0之后HttpLive和RTSP协议开始使用NuPlayer播放器,Android5.0(L版本)之后本地播放也开始使用NuPlayer播放器。MediaPlayer基本使用方式MediaPlayer mp = new MediaPlayer();mp.setDat...转载 2019-04-09 18:53:10 · 297 阅读 · 0 评论 -
Android7.1 Offload模式下的音频数据播放流程
在Android7.1 Offload模式下的音频数据抽取过程完成数据的抽取后,紧跟着会将数据交给AudioFlinger的track进行播放MixerThread是Android音频输出的核心部分,所有Android的音频都需要经过MixerThread进行混音后再输出到音频设备。 MixerThread的继承关系如下:MixerThread--->PlaybackThr...原创 2019-04-16 15:39:46 · 4894 阅读 · 2 评论 -
Android下OpenSLES播放PCM音频文件
源码如下:#include <jni.h>#include <string>#include <SLES/OpenSLES.h>#include <SLES/OpenSLES_Android.h>#include <android/log.h>#define LOGD(FORMAT,...) __android_log_pri...原创 2019-01-21 11:14:09 · 643 阅读 · 1 评论 -
Audio播放流程(二)---NuPlayer流程之setDataSource
先看看setDataSource从客户端传递到服务端的过程status_t MediaPlayer::setDataSource(int fd, int64_t offset, int64_t length) { status_t err = UNKNOWN_ERROR; const sp&amp;amp;amp;amp;amp;lt;IMediaPlayerService&amp;amp;amp;amp;amp;gt;&amp;原创 2019-01-09 16:05:06 · 1526 阅读 · 0 评论 -
Android设备音频部分一些概念
原帖地址:http://blog.youkuaiyun.com/loongembedded/article/details/72901643Android设备音频部分一些概念备注:基于高通平台 听筒是用来听对方传送过来的声音,手机放的MP3和开机铃声是从喇叭发出的。听筒模式,就是手机上一般听电话的内置小耳机,声音较小。扬声器模式,就是声音外放,声音较大 下面的名词是从/system/etc/mixer_pat...转载 2018-03-21 09:02:02 · 1532 阅读 · 0 评论 -
高通混频器配置文件如何选择
1.system/etc/mixer_paths_qrd_sku2.xm来源及hal采用哪个目录hardware\qcom\audio\hal目录下只看到msm8916、msm8960、msm8974,没有看到8937,那用哪个呢?看hardware\qcom\audio\hal\Android.mk有相关说明:[plain] view plain copy ifneq ($(filter msm...原创 2018-03-21 09:16:47 · 978 阅读 · 0 评论 -
Android 音频系统:从 AudioTrack 到 AudioFlinger
1. Android 音频框架概述Audio 是整个 Android 平台非常重要的一个组成部分,负责音频数据的采集和输出、音频流的控制、音频设备的管理、音量调节等,主要包括如下部分:Audio Application Framework:音频应用框架 AudioTrack:负责回放数据的输出,属 Android 应用框架 API 类AudioRecord:负责录音数据的采集,属...转载 2018-04-17 18:36:42 · 569 阅读 · 0 评论 -
关于USB-Audio(USB麦克风)设备的录音验证
1、确保设备节点被创建了 cat /proc/asound/cards 备注:获知新增了Card1(USB-Audio设备) 如果没有新增Card设备节点的话,则给kernel追加USB-Audio驱动,简述如下: 在./kernel-4.9/sound/usb/Kconfig中的config SND_USB_AUDIO块,...转载 2018-12-28 16:48:49 · 6620 阅读 · 0 评论 -
Qualcomm Audio HAL 音频通路设置
原帖地址:https://blog.youkuaiyun.com/sepnic/article/details/79383323 1. 音频框图概述| Front End PCMs | SoC DSP | Back End DAIs | Audio devices | *************PCM0 <------------&...转载 2018-12-28 16:52:19 · 3522 阅读 · 0 评论 -
USB-AUDIO初步分析
1.USB-AUDIO的声卡注册过程usb_probe_interface ---- driver.c usb_audio_probe ---- card.c snd_usb_create_stream ---- card.c snd_usb_parse_audio_interface ---- stream.c snd_usb_add_au...原创 2019-01-03 16:18:51 · 2567 阅读 · 1 评论 -
wav文件详解
工具我们这里使用的工具有ffmpeg, cooledit, ultraedit。音频文件我们以这音频文件为介绍例子文件链接http://pan.baidu.com/s/1j6fbtwav的基础知识介绍wav是微软开发的一种音频文件格式.它符合它符合RIFF(Resource Interchange File Format)文件规范,用于保存Windows平台的音频信息资源,被Wi...转载 2019-01-04 09:28:22 · 1525 阅读 · 0 评论 -
Audio播放流程(四)---MediaPlayerService流程之AudioTrack的创建
首先在每次MediaPlayer调用start之前,会先调用stop一下,从而将NuPlayer播放器的状态切换为STATE_STOPPED态之后在prepareAsync调用中status_t NuPlayerDriver::prepareAsync() { ALOGV(&quot;prepareAsync(%p)&quot;, this); Mutex::Autolock autoLock(m...原创 2019-01-10 18:22:04 · 1392 阅读 · 0 评论 -
Audio播放流程(五)---NuPlayer的Start流程
1.setLooping的调用流程很简单frameworks\av\media\libmediaplayerservice\MediaPlayerService.cppstatus_t MediaPlayerService::Client::setLooping(int loop){ ALOGE(&amp;amp;quot;[%d] setLooping(%d)&amp;amp;quot;, mConnId, loop); ...转载 2019-01-14 19:32:47 · 1751 阅读 · 3 评论 -
Android下最简单的Audio Player
源码:package com.sunmi.audio;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.media.MediaPlayer;import android.os.Bundle;import android.app.Activity;import...原创 2019-01-07 18:34:59 · 2124 阅读 · 0 评论 -
Android下最简单的AudioTrack播放PCM的例子
很简单的直接放出源码:package com.sunmi.audiotrack;import android.media.AudioFormat;import android.media.AudioManager;import android.media.AudioTrack;import android.os.Bundle;import android.support.v7.app...原创 2019-01-18 16:21:45 · 388 阅读 · 0 评论 -
Audio播放流程(一)---MediaPlayer流程
1. 对于APP而言要播放一个MP3很简单,只需要如下几步:mp3 = MediaPlayer.create(MainActivity.this,R.raw.gem);mp3.prepare(); mp3.start(); //开始播放如上即可完成,But,Android系统在后台需要完成哪些更复杂的逻辑呢 ?2. Android MediaPlayer流程第一步:...原创 2019-01-08 16:19:05 · 3183 阅读 · 1 评论 -
Android 音频系统:从 AudioTrack 到 AudioFlinger
1. Android 音频框架概述Audio 是整个 Android 平台非常重要的一个组成部分,负责音频数据的采集和输出、音频流的控制、音频设备的管理、音量调节等,主要包括如下部分:Audio Application Framework:音频应用框架 AudioTrack:负责回放数据的输出,属 Android 应用框架 API 类AudioRecord:负责录音数据的采集,属 An...转载 2019-01-09 14:02:11 · 1709 阅读 · 0 评论 -
高通平台耳机插拔检测
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.youkuaiyun.com/u012899335/article/details/82312766高通耳机的插拔检测需要配置NC或NO,并且使用匹配的耳机(欧标,美标)。欧标,美标市面的耳机有两种标准,即欧标(也叫国标)和美标。高通低端芯片无法兼...转载 2019-08-28 11:25:15 · 732 阅读 · 0 评论