- 博客(38)
- 资源 (8)
- 收藏
- 关注
原创 【Android Audio】Parameter Framework - pfw
使用来取缔默认安卓音频引擎,因为默认安卓音频引擎是通过代码来决定策略,然而采用读取pfw类型的文件来实现音频策略配置。
2025-04-07 20:33:26
663
原创 {Fixed} Android TV / Google TV国内开机不会自动连接WIFI / 连接国内网络不会更新时间
引用:使用usb adb、网络adb、串口敲以下命令修改安卓全局数据库。
2023-08-04 16:28:11
3260
原创 【Android Audio】Framework Audio 调试替换文件
编译:frameworks/base/services目录下mm -j替换:/system/framework/services.jar。
2023-08-04 10:46:57
827
原创 【Bug-Fixes】【Android Audio】{surround mode设置Manual,打开DD/DDP之后重启平台,exoplayer播放Dolby输出是PCM} [OTT-41237]
根据打印分析,当前开机过程中,AudioService的surround format刷新早于connect hdmitx,导致surround format无法刷新到APM的mManualSurroundFormats变量;
2023-06-09 13:15:56
669
原创 Android apk手动签名
Jenkins上面编译的安卓镜像版本中所包含的apk签名跟本地编译安卓代码生成的apk签名不一致,导致push进去自己编译的apk到平台上之后apk无法使用。
2023-05-30 16:24:40
402
原创 【Android Audio】TimeCheck机制
TimeCheck守护线程的作用:当audioserver中IAudioFlinger,IAudioPolicyService,IEffect中的每一个binder函数调用时间超过5s (kDefaultTimeOutMs = 5000)就会触发audioserver进程自杀行为。(最新Google trunk修改为2s)TimeCheck线程属于audioserver进程,在每次Binder通信时创建一个TimeCheck的对象,同时创建守护线程,在每次调用结束之后销毁。
2023-04-17 20:59:51
2127
原创 【Android Audio】onAudioPortListUpdate 和 onAudioPatchListUpdate回调流程
当系统的output和input发生变化、output device和input device发生变化时都会触发该函数的调用当系统的audio patch发生变化,切换、新增、删除时都会触发该函数
2022-07-06 16:55:28
1433
原创 格式(这里写自定义目录标题)
这里写自定义目录标题欢迎使用Markdown编辑器功能快捷键项目场景:问题描述:项目场景:问题描述:原因分析:解决方案:原因分析:解决方案:合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次
2022-01-20 15:07:16
192
原创 bmp的24bit位宽转16bit
转载来自:https://blog.youkuaiyun.com/youyoufengxinzi/article/details/1516523#include <stdio.h#include <stdlib.h>#include <string.h>#define BMP_TYPE 0x424D#define BI_RGB 0#define BMP1555_BYTE 2#define BMP24_BYTE 3#de
2021-09-29 14:25:03
930
原创 【Android Audio】dumpsys audio分析【不定期更新文章】
dumpsys audio显示当前所有stream type的音量状态显示AudioDeviceBroker状态命令:dumpsys audioMessage handler (watch for unhandled messages): Handler (com.android.server.audio.AudioService$AudioHandler) {4adb93d} @ 5038924 Looper (AudioService, tid 87) {e96a532}
2021-07-19 16:51:53
3467
原创 【Bug-Fixes】【Audio】{断开蓝牙音箱时收不到AudioService的Routes信息} [SWPL-52581]
项目场景: Android TV,Android R 1、连接蓝牙音箱,进入LiveTv播放DVB节目,然后断开蓝牙音箱,预期TV的Speaker正常播放声音。问题描述:非ms12版本,连接蓝牙音箱,进入LiveTv播放非Dolby的DVB节目,然后断开蓝牙音箱,TV的Speaker无声。 frameworks/base/services/core/java/com/android/server/audio/AudioService.java /* 这里是TV平台所以是STR
2021-06-17 10:10:39
786
原创 【Android Audio】安卓音量管理
安卓音量管理1、Android音量的保存AudioService.javaAudioSystem.java1、Android音量的保存存放到数据库AudioHandler.persistVolumeprivate void persistVolume(VolumeStreamState streamState, int device) {... System.putIntForUser(mContentResolver, streamState.getSet
2021-06-04 16:40:19
3162
原创 【Android Audio】dumpsys media.audio_policy分析【不定期更新文章】
命令:dumpsys media.audio_policyAudioPolicyManager: 0xf1e5a000Command Thread: 0xf1ff3300Supported System Usages:AudioCommandThread 0xf1ff3300 Dump- Commands: Command Time Wait pParam Last Command 01 014581.648 0 0xf19e5440Aud.
2021-05-31 20:07:40
4784
6
原创 【Bug-Fixes】【Audio】{Launcher下遥控器按mute,然后再按音量+,之后无按键音} [SWPL-26283]
项目场景: Android TV,Android Q 1、在Launcher下通过遥控器按mute,然后再按音量+,之后系统音无声音(按键音) 2、在Launcher下通过遥控器按mute,然后再按mute,之后系统音是正常有声音的问题描述:在Launcher下通过遥控器按mute,然后再按音量+,之后系统音无声音(按键音) frameworks/base/services/core/java/com/android/server/audio/AudioService.
2020-12-11 15:24:33
427
原创 【Android Audio】4、音频设备管理 【基于Android Q 】
4、音频设备管理 【基于Android Q 】audio policy xml里面有2种角色:source和sink,每种角色又分为devicePorts和mixPorts。type为AUDIO_PORT_TYPE_DEVICEdevicePorts(source):为实际的硬件输入设备,对应安卓的role为AUDIO_PORT_ROLE_SOURCE ;devicePorts(sink):为实际的硬件输出设备,对应安卓的role为AUDIO_PORT_ROLE_SINK ;type为AUDI
2020-12-03 20:19:50
2610
原创 【Multi Media】Android多媒体播放
多媒体和编解码器(组件)之前交互流程分为两个,对于组件端来说,一个是输入一个是输出,以音频解码器流程为例:输入流程:mNuPlayer::Decoder::fetchInputData MediaCodec 从source中获取音频流A(从Source获取音频流)AmNuPlayer::Decoder::onInputBufferFetched 将音频流送入指定index的bufferMediaCodec::queueInputBuffer 发送MediaCodec::kWhatQueueInp
2020-11-13 19:59:16
1129
原创 【Linux】1、内存管理
1、内存管理1.1、虚拟内存与物理内存1.1、虚拟内存与物理内存64位系统的虚拟地址分配0x0000000000000000~0x00007fffffffffff 表示用户空间(128T), 0xFFFF800000000000~ 0xFFFFFFFFFFFFFFFF 表示内核空间(128T)64位Linux一般使用48位来表示虚拟地址空间,40位表示物理地址(512G)32位系统的虚拟地址分配0x0000 0000~0xC000 0000(3G)为用户空间,0xC000 0000~0xFFFF
2020-10-16 15:14:55
225
原创 【Android Audio】5、EngineBase加载音量曲线和策略 【基于Android Q 】
5、音量曲线 【基于Android Q 】5.1、音量曲线加载code5.2、音量转换5.1、音量曲线加载code路径:frameworks/av/services/audiopolicy/managerdefault/engine/common/src/EngineBase.cppengineConfig::ParsingResult EngineBase::loadAudioPolicyEngineConfig(){... auto loadVolumeGroups = [](auto
2020-10-13 14:35:53
3037
原创 三个线程ABC,依次打印
#include <stdio.h>#include <stddef.h>#include <stdlib.h>#include <semaphore.h>#include <unistd.h>sem_t signal_thread[3];#define PRINT_CNT (9)static int g_s32Cnt = 0;static void *printThread(void *pArg) { int index
2020-09-28 15:49:16
129
原创 【C++】3、new、malloc、delete、delete[]、free
3、new、malloc、delete、delete[]、free3.1、malloc3.2、new3.2.1、new单个实例3.2.2、new一个数组64位机器平台实验3.1、mallocchar *pValue = (char *)malloc(10);free(pValue);malloc实际分配内存比实际要多一个header,header里面包含了内存的大小等信息;malloc返回的地址为实际data的地址,header存储在data之前;free的时候会根据pValue 向前偏
2020-09-28 13:52:39
145
原创 【C++】2、虚函数表和虚继承
2、虚函数表和虚继承2.1、虚函数表2.2、虚继承2.1、虚函数表class CBase{ public: CBase() : m_s64Value(0){} virtual void FunTest0(){printf("[%s:%d]:%p, () CBase\n", __func__, __LINE__, this);} virtual void FunTest1(){printf("[%s:%d]:%p, CBase\n", __func
2020-09-26 18:35:52
245
原创 【C++】1、C++ 11新特性
1、C++ 11新特性1.1、移动构造和移动赋值1.1、移动构造和移动赋值OOOOOOOOO类和机构体YHC_TEMP_T定义typedef struct { int s32Value; int s32Str;} YHC_TEMP_T;class OOOOOOOOO{public: OOOOOOOOO() {// m_pstData = new YHC_TEMP_T(); m_pstData = nullptr; pr
2020-09-26 16:11:16
327
原创 【Android Debug】Android 加堆栈打印信息
Android O/P/Q在native 层加堆栈打印信息1、步骤1.1、包含头文件 #include "utils/CallStack.h"1.2、引用动态库1.3、然后在要打印堆栈处加入android::CallStack cs("haha")2、差异原因Native C++层加堆栈打印:1、步骤1.1、包含头文件 #include “utils/CallStack.h”1.2、引用动态库Andorid P / QAndroid.mk: LOCAL_SHARED_LIBRARIES里包含li
2020-09-09 12:05:59
2977
2
原创 【Android Audio】dumpsys media.audio_flinger 分析【基于Android Q 】【不定期更新文章】
AudioFlinger dumpsys1、第一部分2、第二部分dumpsys media.audio_flinger 1、第一部分1、Output thread:表示当前线程为输出流的线程2、I/O handle:表示当前的线程handle3、Standby:no表示当前线程在运行。4、Sample rate:采样率6、HAL foramt:送给audio hal的格式13、Output device:当前线程处理的数据输出到的音频设备30、flags:标记输出流hal
2020-09-08 16:25:11
8303
2
原创 【ALSA音频】一、音频定位手段
1、音频定位手段1.1、查看音频声卡1.1.1、查看当前Soc的声卡状态1.1.2、查看当前声卡工作状态1.2、tinymix使用1.2.1、可通过该命令查看当前音频运行状态1.2.2、可通过该命令debug1.1、查看音频声卡1.1.1、查看当前Soc的声卡状态 cat /proc/asound/cards 例如,插入USB声卡之后,会新增声卡节点,USB声卡无声可优先查看该状态。1.1.2、查看当前声卡工作状态声卡分两种通道,一种是Capture、一种是Playback。Captu
2020-09-08 16:05:04
4957
原创 【Android Audio】audioserver与audio hal hidl通信
安卓primary设备调用流程Hal audio系统上下文Hal audio第一步AudioFlingereg: AudioFlinger::PatchPanel::createAudioPatchframeworks/av/services/audioflinger/PatchPanel.cpp/system/lib/ibaudioflinger.so第二步libaudiohaleg: DeviceHalHidl::createAudioPatchAndroid P:framew
2020-09-03 17:19:41
3427
原创 安卓音频同步头分析
音频流中的同步头分两个version同步头,version number=1时,为16字节同步头;version number=2时,为20字节同步头。0 - 2字节:0x55 0x55 0x00 (固定)3字节:version number,为1或者24 - 7字节:帧大小,当前帧头所带音频数据帧的大小8 - 15字节:apt值,单位为ns16 - 19字节:保留位,只有version number为2时才有...
2020-07-06 19:48:25
753
原创 【Android Audio】Audio系统架构图
原流程图下载地址:https://download.youkuaiyun.com/download/u013120422/11937942
2020-04-09 20:37:05
896
原创 【Android Audio】AudioTrack和AudioFlinger之间数据通信架构,以及内存分配
1、AF中最多支持32个Track;2、一个应用进程创建多个AT时只会拥有一个Client,多个AT申请内存由该进程的Client从ClientSharedHeapSize大小的内存中分配;3、一个Client管理的空间是固定的,由变量ClientSharedHeapSize决定;4、每一个创建AT的进程都会创建一个Client,分配ClientSharedHeapSize大小的内存;获取...
2019-10-28 16:35:26
825
原创 【Android Audio】AAudio 架构讲解以及实现范例 (附带visio流程图)
Google官方网站:Audio Hal 适配: https://source.android.google.cn/devices/audio/aaudioAAudio 上层应用使用说明:https://developer.android.google.cn/ndk/guides/audio/aaudio/aaudioAAudio API说明文档:https://developer.andr...
2019-10-21 17:34:03
9352
16
原创 【Android Audio】AudioRecord数据流处理详细流程
1.1 AudioRecord重采样处理流程mPipeSource 为null, 将hal数据in_read到mRsmpInBuffer中, mInput->stream->read();获取track的share buffer,activeTrack->getNextBuffer(&activeTrack->mSink);activeTrack->...
2019-06-20 16:38:17
2505
原创 【Android Audio】Android Tv中Audio Output Format 开机刷新流程
可通过粘性广播获取audio format。 /*------------------hippo encode -------------------------------*/ Intent temp = context.registerReceiver( /* receiver= */ null, new IntentFilter(AudioManager.ACTION_HDMI_AUDIO_PLUG)); int[] formats = temp.getIn
2019-05-31 17:15:21
449
原创 Linux常用工具及命令
1、从网站FTP下载文件到当前目录wget命令wget http://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz2、Linux卸载软件方法一、如果你知道要删除软件的具体名称,可以使用 sudo apt-get remove --purge 软件名称 sudo apt-get autoremove --purge 软...
2017-10-14 10:54:27
493
转载 TensorFlow安装
AI这个概念好像突然就火起来了,年初大比分战胜李世石的AlphaGo成功的吸引了大量的关注,但其实看看你的手机上的语音助手,相机上的人脸识别,今日头条上帮你自动筛选出来的新闻,还有各大音乐软件的歌曲“每日推荐”……形形色色的AI早已进入我们生活的方方面面。深刻的影响了着我们,可以说,这是一个AI的时代。其实早在去年年底,谷歌就开源了其用来制作AlphaGo的深度学习系统Tensorflow
2017-10-13 23:35:19
198
转载 Android.mk 文件语法详解
转:http://blog.sina.com.cn/s/blog_602f8770010148ce.html=====================================================================================0. Android.mk简介:Android.mk文件用来告知NDK Build 系统关于Sou
2017-04-07 23:11:19
198
原创 Git在LINUX上安装
2. 设置Git(1)设置用户名和email。git config --global user.name "Your Name"git config --global user.email "youremail@domain.com"此时,Home目录下会新建一个.gitconfig文件3. 为GitHub账号添加SSH Keys以公钥认证方式访问SSH协议的
2017-03-10 21:41:41
137
原创 Samba的命令
useradd +用户名命令新建用户samba服务器里,命令是smbpasswd -a (记得一定要加-a)+用户名。/etc/init.d/smbd restart 重启Samba
2017-03-03 22:00:39
443
ISO-IEC-11172-3 MPEG-1_Audio_CD.xls
2020-04-27
MPEG2_CHS中文版
2020-04-27
ISO-IEC-13818-3
2020-04-27
ISO-IEC-14496-3. MPEG-4 Part 3 Audio
2020-04-27
ISO-IEC-13818-1
2020-04-27
ISO IEC 13818-7
2020-04-24
Audio Framework.vsdx
2019-10-29
Android AAudio 架构.vsdx
2019-10-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人