安卓DRM服务是一个什么程序?干嘛的?

安卓DRM服务是一个什么程序?干嘛的?,第1张

DRM,英文全称为Digital Rights Management,译困旦圆为数字版权管理。它是目前业界使用非常广泛的一种数字内容版权保护技术。

严格来讲,DRM不是一项技术,而是一类技术。很多机构和联盟都提出过相应的DRM标准[1]。汪塌例如Open Mobile Alliance推出的OMA DRM、Marlin Developer Community提出的Marlin DRM,而Google则通迟核过收购Widevine公司推出了Widevine DRM。

从Android智能终端来看,Google的原生Android(Android Open Source Project,简称AOSP)系统仅仅集成了OMA DRM V1的一部分功能,它远未构成一个完整的DRM解决方案。在这种情况下,设备厂商只能根据情况选择合适的DRM解决方案并集成到Android平台中来。例如,手机厂商可以通过Google的授权以获取Widevine DRM对应的软件包从而将Widevine DRM集成到自己的产品中。

为了方便设备厂商的集成,Android设计了一个通用的DRM软件框架,不同的DRM解决方案可通过Plugin的方式集成到Android系统中。

DRM是Linux内核层的显示驱动框架。它把显示功能封装成 open/close/ioctl 等标准接口,用户空间的程序调用这些接口,驱动设备,显示数据。

libdrm库封装了DRM driver提供的这些接口。通过libdrm库,程序可以间接调用DRM Driver。

DRM驱动会在/dev/dri下创建3个设备节点:

使用drmOpen()打开设备。它根据指定的name和busid,在上述三个设备中选择匹配的节点。

也可以使用open(),直接则兄打开指定设备。

得到、设置capability。

下图显示各个组件,以及组件之间的关联关系。在DRM的函数名中称作资源(Resource)。如drmModeGetResources()。

每种资源的结构都定义了一个成孙袭袭员,唯一标识这个资源。如drmModeCrtc的crtc_id、drmModeConnector的connector_id、drmModeEncoder的encoder_id、drmModePlane的plane_id。

显示设备的设置、状态,保存在若干结构、变量中,禅乎如下图。如drmModeModeInfo,保存设备大小,刷新率。drmModeConnection保存连接状态。

drmModeRes结构保存DRM设备的资源集。

drmModeRes的成员fbs、crtcs、connectors、encoders是变长数组,数组长度保存在对应的变量,如count_fbs中。数组中保存的是资源ID。

函数drmModeGetResources()用于得到资源集。

根据资源 ID 得到对应的资源,包括connector、encoder、crtc。

与其他资源不同,plane资源不在drmModeRes结构中,而是保存在drmModePlaneRes结构。

成员planes是变长数组,数组长度保存在count_planes中。这里保存是plane的资源ID。

drmModeGetPlaneResources()得到plane资源集。

drmModeGetPlane() 根据Plane ID得到Plane。

drmModeProperty结构保存属性。

drmModeObjectProperties保存资源的属性集。

drmModeObjectGetProperties()得到资源属性集。

drmModeGetProperty()得到属性,drmModeObjectSetProperty()设置属性。

使用drmIoctl()创建、映射framebuffer。

使用Linux API函数 mmap(),将framebuffer映射到用户空间。

加入framebuffer(不是提交显示!)。

drmModeAtomicReq保存DRM请求。

drmModeAtomicCommit()提交请求。比如,将framebuffer保存的图像提交显示。

将framebuffer绑定到plane。程序更新framebuffer,就是更新plane。

Linux DRM API - NVIDIA

DRM示例工程 zizimumu/DRM_test


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12557675.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存