当前位置:网站首页>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 进行消息交互。
边栏推荐
猜你喜欢

exchange2010 邮件数据库无法装入

所谓软件测试工作能力强,其实就是这 5 点

Example 044: Matrix Addition

单体架构应用和分布式架构应用的区别

flex 的 三个参数:flex-grow、flex-shrink、flex-basis

【CC3200AI 实验教程5】疯壳·AI语音人脸识别(会议记录仪/人脸打卡机)-定时器

从8k到13k,我全靠这本《接口自动化测试——从入门到精通》

新零售社交电商APP系统平台如何打造公域+私域流量?

Mini Program Navigation and Navigation Parameters

Meteor accelerator Trojan analysis and disposal plan
随机推荐
flink 12 源码编译及使用idea运行、debug
有关视频传输时粘包问题的一些解决方法
Software life cycle (the work of each phase of software engineering)
MongoDB 常用查询语句
【Image Classification】2022-ConvMixer ICLR
js阻止事件冒泡方案
6 common plugin recommendations in Pycharm
Meteor accelerator Trojan analysis and disposal plan
流星加速器木马分析与处置方案
量化投资学习——在FPGA上运行高频交易策略
【红队】ATT&CK - 自启动 - 注册表运行键、启动文件夹
Flink CDC 2.0及其他数据同步工具对比
笔试题记录
2022/08/09 学习笔记 (day26) IO流
Example 047: Functions Swap Variables
三极管开关电路参数设计与参数介绍
Kettle 裁剪表详解(truncate)
Little rookie Hebei Unicom induction training essay
Leetcode 47 全排列Ⅱ
使用注解实现限流