自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(100)
  • 资源 (6)
  • 收藏
  • 关注

原创 从CarAudioManager调用流程开始学习Vendor Interface(Client部分)

1.需求解决系统升级困难的问题(模块化)a.以前用.h头文件的形式,各自Vendor有各自的so去实现硬件功能。现在改成.hal文件的形式(Binder化),类似.aidl.Thegoal of HIDL is that the framework can be replaced without having torebuild HALs. HALs will be built b

2017-10-26 18:06:56 3893 2

原创 Chromium源码视频播放分析

​下载代码,调试方法等见Chromium视频播放相关调试记录_bberdong的博客-CSDN博客。

2023-05-12 16:59:36 1132

原创 Chromium视频播放相关调试记录

enable-logging=stderr --v=1 > log.txt 2>&1 # Capture stderr and stdout to a log file gdb调试 gdb -tui -ex=r --args out/Default/chrome。不然会出现如下错误(chrome://gpu中就可以看到打印),说明当前vaapi版本太低(vainfo可以看到vaapi版本)然后在我们日常使用的release版本的chrome中即可打开分析。// 如果要调试vaapi,硬解。

2023-05-12 16:45:00 1266 1

原创 Android MediaCodec message机制分析

注释中也写明白了,AHierarchicalStateMachine实现消息处理,因为AHierarchicalStateMachine是ACodec的父类,所以子类没实现的方法,就调用父类的。在ALooper中没有发现gLooperRoster的使用,它是一个全局变量。也就是说ACodec调用完setID方法之后,首先它获得了一个唯一生成的id,其次ACodec的mLooper对象被赋值为mCodecLooper。这样的话,很巧妙的,每次调用完changeState,发出去的消息就会发给不同的类了!

2022-09-16 14:30:07 972

原创 miracast uibc详解

用户输入反向控制通道(UIBC)是一个可选的WFD特性,实现该扩展功能,有助于用户从WFD sink端控制WFD source端的通信。wifi display spec文档定义:HIDC user inputs are formatted using the HIDC Input Body. 翻译一下4.11 UIBC UIBC是WFD的可选feature,便于用户在UI上用户交流?展现在sink端,到source端?什么鬼!

2022-08-19 14:37:27 2284 1

原创 miracast技术详解

特殊情况下,由于要投射的内容是手机决定的,所以如果手机侧的miracast不想投某些画面的时候,两侧显示的会有区别,比如说密码输入界面,版权保护的界面,锁屏之后的界面等。请注意,这些接口很多都是无法让第三方APP访问的,所以做这些的前提是整个系统的源码是开放的,这样你才可以给你的 apk 添加系统签名,在源码树中去编译,才能访问这些方法。很明显,会有更高的权限,因为自己是组长。到这一步,我们可以复习一下,整个miracast的架构了,下图是WFD官方的工作模块框图,基本和前面提到的内容是大体对应的。....

2022-08-18 11:02:23 9023 2

原创 Android Nuplayer学习笔记

作为一个audio工程师,需要了解一些Nuplayer框架和audio framework之间的联系!先从熟悉的着手,先分析下Nuplayer对AudioTrack的使用Nuplayer是在如何使用AudioTrack的?先看一个类的继承关系//MediaPlayerService.hclass MediaPlayerService : public BnMediaPlayerService{ ... class AudioOutput : public MediaPlayerBase::

2020-07-21 09:53:44 1520 1

原创 给Android车载蓝牙音乐添加盘控控制功能

1. 方向盘事件转换假设方向盘是通过lin总线转换的,最终来到安卓侧就是标准的keyevent:/** Key code constant: Play/Pause media key. */public static final int KEYCODE_MEDIA_PLAY_PAUSE= 85;/** Key code constant: Stop media key. */ ...

2019-03-09 19:43:23 4605 8

原创 Android录音的几个过程控制

1.如何监控其他app的录音行为?​ 经过一番查找,发现了这个API:android.media.AudioManager.AudioRecordingCallback使用方式,大体是这样:mAudioManger = (AudioManager)mContext.getSystemService(Context.AUDIO_SERVICE); mRecordingCal...

2019-01-04 10:47:17 5584 11

原创 Android FM录音功能

最近有个需求,FM需要做听歌识曲,然后我就发现,Andoid原生就提供了一个这个://MediaRecorder.java/*** Audio source for capturing broadcast radio tuner output.* @hide*/@SystemApipublic static final int RADIO_TUNER = 1998;​ 那我就要试...

2018-12-05 10:11:48 2448

原创 Android多声道录音研究

原生Android只支持2 channel的录音。可是偏偏会有多mic的需求,比如说语音识别。目前已知TDM协议可以将多mic数据从kernel送到hal,从内核空间搬运到用户空间中。可是原生AudioRecord接口是完全不支持多channel录音数据的采集的,怎么修改,才能让原生进行支持呢?我们就从AudioRecord的构造函数开始往下研究。无论行不行,都要研究出个所以然来!​我们如果写...

2018-11-30 21:36:34 8907 3

原创 (没有最终结论)Android 为何无法将通话音量调到最低

捋一捋代码流程:上层流程之前有分析过,可以参考这个:https://blog.csdn.net/bberdong/article/details/51792319(抱歉,那时候写的太随意)咱们就从AudioPolicyManager::checkAndSetVolume说起:status_t AudioPolicyManager::checkAndSetVolume(    a...

2018-10-16 10:04:59 3119 13

转载 Android中的PCM设备

Android上的应用一般都是通过AudioTrack类来播放音频,通过AudioRecord类来录制音频。AudioTrack类和AudioRecord类是Android Frameworks封装提供给应用使用的音频接口类。这些类经过层层的Binder、JNI等调用后会调用Audio HAL层提供的相关接口。这些接口实现了对音频设备、通路等一系列操作。就这样最终完成Android App和硬件...

2018-10-10 10:34:50 1962

原创 蓝牙电话(hfp)与Android audio hal的关联

通话的时候,需要打开音频通路,音频设备(上下行都要)我们从这里开始:packages/apps/Bluetooth/src/com/android/bluetooth/hfpclient// in Connected stateprivate void processAudioEvent(int state, BluetoothDevice device) {   ...   ...

2018-09-30 18:33:00 6466 2

原创 Android O 收音机学习研究(基于Car)

 应用层Demo路径:packages/apps/Car/RadioBootupReceiver类监听了ACTION_BOOT_COMPLETED,然后在onReceive里启动了RadioService.CarRadioActivity作为主Activity,在onCreate里创建了mRadioController.收音机主界面有个RadioDrawer(收音机抽屉...

2018-08-20 09:38:05 9451 4

原创 Android audio 输出设备选择过程分析(下)

上篇的分析到audio_route,现在接个力,也算是7月的作业,再不交这个月就落下了。audio_route_apply_and_update_path分两个过程,从函数名字都能看出来,一个是apply,一个是updata:audio_route_apply_path/* Apply an audio route path by name */int audio_route_ap...

2018-07-25 21:27:26 12229 1

原创 Android audio不同设备输出不同音频研究(上)

目前Android平台,不同设备,输出相同音频是怎么做的比如说.Android平台接入新设备(3.5mm耳机插入,或者蓝牙耳机连接)之后status_t AudioPolicyManager::setDeviceConnectionStateInt(audio_devices_t device,                                                   ...

2018-06-27 10:56:38 6598

原创 Android audio 输出设备选择过程分析(上)

众(搞音频的(此处应该有个笑哭的表情)所周知的,要播放一个声音,创建AudioTrack之后,set函数设置参数的时候,会调用createTrack_l函数。第一步:获取outputcreateTrack_l用binder去调用AudioFlinger的createTrack创建AudioFlinger::Track之前,首先会去调用getOutputForAttr:...

2018-05-28 16:50:09 28026 10

原创 Android O配置audio_policy

Android 7.0之前一直是用device/<company>/<device>/audio/audio_policy.conf这个文件来描述音频设备.audio_policy_conf.h中定义了audio_policy.conf路径.AudioPolicyManager.cpp:40: #include "audio_policy_conf.h"AudioPolic...

2018-04-12 11:09:05 3478

原创 Android O Audio libaudiohal模块分析

Android O Audio模块,多了一个libaudiohal文件夹:Android.mk               DeviceHalLocal.h             DevicesFactoryHalLocal.h EffectHalHidl.h             EffectsFactoryHalLocal.h StreamHalLocal.cppConversio...

2018-03-07 15:43:40 6147 1

原创 基于Android O平台Audio Focus分析(主要结合Car)(下)

Car相关经过一番查找,只有这个地方设置了mFocusListener,我们就拿Car来做研究吧packages/services/Car/service/src/com/android/car/CarAudioService.javapublic void init() { AudioPolicy.Builder builder = new AudioPolicy.Builder(mC...

2018-02-06 10:58:11 3296

原创 基于Android O平台Audio Focus分析(主要结合Car)(上)

基于Android O平台Audio Focus分析(主要结合Car)1.调用示例packages/apps/Car/LocalMediaPlayer/src/com/android/car/media/localmediaplayer/Player.javaprivate boolean requestAudioFocus(Runnable onSuccess) {        int re...

2018-02-06 10:56:08 8244 1

原创 从CarAudioManager调用流程开始学习Vendor Interface(Service部分)

接下来就是Vendor的实现了!如果要作为一个Service来提供,我们应该怎么设计呢?TODO:QA:怎么设计比较合理。首先,在Android 系统启动的时候init进程/system/core/[email protected] main(int argc, char** argv) { ... parser.ParseConfig("/init

2018-01-15 13:45:55 4655 1

原创 Android Location开关过程分析

Android Location开关过程分析有同事发现目前车机的location位置在刷机(线刷之后),每次的location初始值(在settings中看见的)都不一致.之前对这个是一点都没接触过,所以今天拿出来研究下,凑一篇博客.location的三种工作模式?从settings->location界面来看,location主要有三种工作模式:high_accuracy battery_savi

2017-12-28 13:36:19 6071

原创 Android InputFlinger简单分析(主要分析Touch)

Android InputFlinger简单分析(主要分析Touch)首先,它有个服务,InputManagerService.InputManagerService启动[email protected] = new InputManagerService(context);wm = WindowManagerService.main(c

2017-11-24 16:59:38 5886

原创 Android O(8.0)音频write数据流程变化(HIDL)

简单回顾下,Audio write数据流程, AudioTrack->write AudioFlinger::PlaybackThread::threadLoop_write() mNormalSink->write 而mNormalSink其实是NBAIO_Sink,实现类是:AudioStreamOutSink 那我们直接看 frameworks/av/media/li...

2017-10-25 21:06:53 9689 2

原创 Audio知识总结(Android)

人的耳朵能够听到的范围,是20Hz到20000Hz.就是指物体每秒中振动20-20000次。PCM16LE双声道数据中左声道和右声道的采样值是间隔存储的。每个采样值占用2Byte空间。采样率是指:声音信号在“模→数”转换过程中单位时间内采样的次数。采样值是指每一次采样周期内声音模拟信号的积分值。对于单声道声音文件,采样数据为八位的短整数(short int 00H-FFH),而对于双声道立...

2017-05-16 11:01:21 2457

原创 用wifi连接adb

确保手机和PC在一个网段。1. 用USB线将手机和电脑连接起来  2. 然后在手机端执行 adb root  然后使用adb shell登录手机,执行下面的命令: setprop service.adb.tcp.port 5555 stop adbd &&  start adbd &   3. 然后在PC上面执行下面的命令 adb

2017-05-16 10:54:12 688

原创 Android Toast订制

1.首先,当然是要找到Toast的代码了:老规矩,framework/base底下find -name Toast.java即可。2.找到Toast界面显示的地方:真的也是蛮好找的,搜索inflate函数就找到了public static Toast makeText(Context context, CharSequence text, @Duration int duration) {

2017-05-02 16:40:59 853 1

原创 Android 自己实现Keyguard的一些问题

1.原生Keyguard简单探究:IKeyguardStateCallback.java文件是out底下生成的。因为在framework底下有IKeyguardStateCallback.aidl文件。所有编译之后就会由编译系统生成。 stub内部类有onTransact接口,底下还有个Proxy接口public class KeyguardStateMonitor extends IKeygua

2017-04-05 15:14:21 2395 1

原创 rom定制笔记(一)

1.怎么开启mass_storage(5.1上的方法)当然首先得有调用系统API的权限,然后UsbManager的setCurrentFunctions(UsbManager.USB_FUNCTION_MASS_STORAGE, true)StorageManager的enableUsbMassStorage();2.怎么预装sogouInput1.将sougouinput.apk放在apps

2017-04-05 14:28:22 448

转载 公钥与私钥

写的这么棒,不转都不好意思。转自:

2017-03-20 10:27:33 361

原创 Android蓝牙音频两个问题

1.qq通话,微信通话,打电话,铃声想起时,为何铃声只在手机端响起?而蓝牙耳机里只有嘟嘟声?(1)来电铃声播放streamType = 2(AUDIO_STREAM_RING)APM::AudioPolicyManager: startOutput() output 18, stream 2, session 24(2)Engine::getStrategyForStream()...

2016-11-04 16:42:10 14206 2

原创 #Android N Ringtone总结

10月份什么都没写,怪不好意思的,今天赶紧补上一篇。这博客我是先在haroopad(ubantu)上写完之后才贴到CSDN的markDown编辑器里的。效果非常棒,推荐1.出厂默认铃声设置:vendor/xiaomi(huawei and so on)/ config/common_full_phone.mk# Default ringtonePRODUCT_PROPERTY_...

2016-11-02 17:15:39 4153

原创 从setPhoneState的调用过程中学习C++版Binder的用法

1.先从调用者说起AudioSystemsetPhoneState中:aps->setPhoneState(state),aps类型:sp2.IAudioPolicyService是一个抽象类,找子类,共两位BnAudioPolicyServicepublic BnInterfaceBpAudioPolicyServicepublic BpInterfa

2016-09-18 18:11:49 1460 2

原创 AudioTrack学习笔记

1.AudioTrackThread  threadLoop函数里会调用    nsecs_t ns = mReceiver.processAudioBuffer();  mReceiver就是一个AudioTrack,接收者?天知道为嘛这么叫。  咱们先不说这个很重要的函数 processAudioBuffer,先来看看AudioTrackThread是在哪使用...

2016-08-09 11:48:22 5490 4

原创 FILE文件读写注意事项

就说一点,如果不调用fclose关闭文件,可能你程序不会奔溃。不会有任何异常。但是你的fwrite()将不会起作用。你的文件永远都是0kb状态。找到原因之后感觉自己真tmd的脑残。

2016-07-05 14:42:00 820

原创 android源码中&运算符的妙用

祭出代码: uint32_t device2 = AUDIO_DEVICE_NONE;if (device2 == AUDIO_DEVICE_NONE) { device2 = availableOutputDevicesType & AUDIO_DEVICE_OUT_WIRED_HEADSET;}AUDIO_DEVICE_OUT_WIRED_HEADSET

2016-07-01 18:20:55 1823

原创 C++覆盖特性在android源码中的实际应用

事情的起因是这样的:用SourceInsight研究android源码,看到了一个这样的地方。status_t AudioPolicyManager::startOutput(audio_io_handle_t output, audio_stream_type_t stream,

2016-07-01 12:04:16 810

原创 Andorid6.0音量调整(设置)流程

按文件分步骤,代码版本Android6.0.11.上层调用AudioManager的接口,要么是setStreamVolume(),要么是按了音量键adjustStreamVolume().2.AudioService.java: 1.1分两种情况 情况一:如果setStreamVolume()--------------------------应用层调用 (1)setStreamVo...

2016-06-30 17:57:26 9016

vooya_u16-1.9-amd64.deb

vooya_u16-1.9-amd64.deb

2022-08-30

正则表达式学习资料

通过该文档,能对正则表达式快速入门。可恶的大于20字。

2013-12-04

网上能找到的最清晰C++Primer答案

这是最全最清晰的版本了,放大了还是那么清晰,爽

2012-07-29

自己做的控制台库存管理器C++

自己学完C++之后做的课程设计,是自己第一次写的相对大一点的程序 300多行代码 代码为文本文档格式,需要复制到VC里才能用哦 我用VS2010编译通过

2012-04-10

C++播放器很漂亮的界面

自己在网上找的。界面很漂亮,功能很全面,支持多格式的播放器

2012-04-10

mplayer播放器

我在网上找的播放器的源代码,感觉很不错,希望大家能喜欢 谢谢支持

2012-04-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除