Nexus 9 声称是 64 位设备,但所有媒体库都是 32 位,如 mediaserver
, stagefright
, OMX
, MediaPlayerservice
ETC 。谁能帮助我知道为什么会这样?我需要将它们设为 64 位,我该怎么做?
提前致谢:)
最佳答案
在当前的 AOSP 堆栈中,有些代码需要由 OMX
等供应商开发,或者依赖于 widevine
libs 等公共(public)库。由于并非所有代码部分都由 Google 处理,并且并非所有部分都已完全迁移,因此当前代码已为 media
相关部分启用 32 位代码。
要启用完整的 64 位
构建,请执行以下更改并重新编译整个 AOSP
平台。请注意,基本假设是平台的其余部分已迁移到64 位
:
通过禁用 this line 来启用 64 位
媒体服务器
.通过禁用 this line 来启用 64 位
MediaPlayerService
.将底层
OMX
组件迁移到64 位
后,在libstagefright 的
仅针对特定情况启用Android.mk
中添加一行32 位
构建。ACodec
和OMXCodec
的相关宏为OMX_ANDROID_COMPILE_AS_32BIT_ON_64BIT_PLATFORMS
OMX
的 header 也必须在frameworks/native
中进行相应编译,如 here 。请确保启用真正的64位
构建。通过禁用 this line 来启用 64 位
medialoggerservice
.如果您希望使用
drmserver
,请禁用 this line对于64 位
构建。
通过这些更改,您应该能够使用 64 位
mediaserver
。此列表不包括 SurfaceFlinger
或 RS
,我希望能够相应地处理它们。
关于android - Nexus 9 中的 64 位媒体服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29935571/