当前位置:网站首页>mediaserver创建
mediaserver创建
2022-08-10 03:12:00 【木希】
在前面我们说过安卓的开机流程,在内核初始化完成后,init 进程创建后会根据/system/etc/init 目录下的.rc文件进行创建服务,今天介绍下mediaserver的创建,跟实现的对应的功能。
我们先看看framework/av/media/mediaserver/mediaserver.rc,这个很简单就起mediaserver
on property:init.svc.media=*
setprop init.svc.mediadrm ${init.svc.media}
service media /system/bin/mediaserver
class main
user media
group audio camera inet net_bt net_bt_admin net_bw_acct drmrpc mediadrm
ioprio rt 4
task_profiles ProcessCapacityHigh HighPerformance
服务。看看mediaserver的main函数framework/av/media/mediaserver/main_mediaserver.cpp
int main(int argc __unused, char **argv __unused)
{
signal(SIGPIPE, SIG_IGN);
//打开/dev/binder设备,得到binder设备的fd
//将bidner设备fd映射到当前进程虚拟地址空间建立交互的通道;
sp<ProcessState> proc(ProcessState::self());
///获取ServiceManager的代理对象
sp<IServiceManager> sm(defaultServiceManager());
ALOGI("ServiceManager: %p", sm.get());
//将MediaPlayerService加入到ServiceManager中,BpServiceManager的AddService将数据写入到
//Binder设备传递给ServiceManager。
MediaPlayerService::instantiate();
ResourceManagerService::instantiate();
registerExtensions();
::android::hardware::configureRpcThreadpool(16, false);
//启动进程的线程池
ProcessState::self()->startThreadPool();
//执行线程消息循环
IPCThreadState::self()->joinThreadPool();
::android::hardware::joinRpcThreadpool();
}
这里mediaserver服务器就起来了,等待mediaplayer 同mediaserver的通信。
安卓mediaplayer的启动会比较简单MediaPlayer.java 提供API接口---> android_media_MediaPlayer.cpp对应jni接口--->MediaPlayer.cpp调用MediaPlayerService接口,创建binder client 同MediaPlayerService 进行消息交互。
边栏推荐
- 轻流CEO薄智元:从无代码到无边界
- 成功执行数字化转型的9个因素
- MySQL: Introduction to Logging System | Error Log | Query Log | Binary Log: Bin-log Data Recovery Practice | Slow Log Query
- How to quickly become a software test engineer?What skills do testers need for a monthly salary of 15k?
- Classes and interfaces
- Kettle 裁剪表详解(truncate)
- 【单调栈】【概念讲解&&模板代码】
- applet wxs
- 当我操作dms客户端的时候,我要操控好几个阿里云账号下的数据库,但是这边每次切换都会把我的登录记录删
- 线程和线程间通信(C语言)
猜你喜欢
随机推荐
YAPI使用
liunx PS1 settings
新零售社交电商APP系统平台如何打造公域+私域流量?
...spread、命名空间、假报错、变化事件、async/await
js阻止事件冒泡方案
nodejs 时钟案例(fs模块),重复使用fs.writeFile方法,旧内容会被覆盖
动态网页开发基础
论文理解:“PIAT: Physics Informed Adversarial Training for Solving Partial Differential Equations“
uni-app自定义导航栏
清洁环保的小型风电滑环基本介绍
电子产品结构设计中的电磁兼容性(EMC)设计
单体架构应用和分布式架构应用的区别
量化投资学习——在FPGA上运行高频交易策略
leetcode-218.天际线问题
从零开始配置 vim(10)——快捷键配置
[Semantic Segmentation] 2022-HRViT CVPR
软件测试这些基本类型你知道吗?
uva1392
湖仓一体电商项目(四):项目数据种类与采集
How to quickly become a software test engineer?What skills do testers need for a monthly salary of 15k?