首页 > 解决方案 > 使用 Android Nougat 的共享内存进行媒体解码

问题描述

我正在将我的基于 Android AOSP 的发行版从 Android K 移植到 Android N。它包括一个可以解码 DVD 字幕的媒体播放器的修改版本。媒体播放器的架构在这两个版本之间发生了很大变化。特别是,它现在分为 3 个进程(请参阅https://source.android.com/devices/media/framework-hardening)。

因此,我试图使用 Shared Memory 使MediaCodecService将解码的位图字幕发送到MediaServer。我修改了之前由MediaCodecService创建的结构的内容,并在解码的位图字幕中添加了subtitle_fd属性,文件描述符。当MediaServerNuplayer接收到要渲染的消息时,代码会尝试映射上述文件描述符。

不幸的是,调用::mmap的结果总是MAP_FAILED

你知道我错过了什么吗?

太感谢了 !

标签: androidmemorynativemediaashmem

解决方案


推荐阅读