Hi everyone,


I am porting my Android AOSP-based distribution from Android K to Android 
N. It includes a modified version of the Media Player that decodes DVD 
subtitles. The architecture of the Media Player evolved a lot between those 
2 versions. In particular, it is now split into 3 processes (see 
https://source.android.com/devices/media/framework-hardening).

I am thus trying to use Shared Memory to make the *MediaCodecService* send 
decoded bitmap subtitles to the *MediaServer*. I modified the contents of 
the structure that was previously created by *MediaCodecService* and added 
a *subtitle_fd* attribute, file descriptor to the decoded bitmap subtitle. 
When a message is received by the *MediaServer*'s *Nuplayer* for rendering, 
the code tries to map the aforementioned file descriptor.


Unfortunately, the result of the call to *::mmap* is always *MAP_FAILED*.


Do you have an idea of what I missed ?


   - 
   
   *Code of the MediaCodecService part*
   
   AVSubtitleRect *rect = sub->rects[0];size_t len = sizeof(*rect);int fd = 
ashmem_create_region("subtitle rect", len);
   ashmem_set_prot_region(fd, PROT_READ | PROT_WRITE);void* ptr = ::mmap(NULL, 
len, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);if (ptr == MAP_FAILED) {
       ALOGI("%s[%d] dvb ptr == MAP_FAILED", __FUNCTION__, __LINE__);} else {
       ALOGI("Success creating FD with value %d", fd);}
   memcpy(ptr, rect, len);sub->subtitle_fd = fd;sub->subtitle_size = len;
   
   - 
   
   *Code of the MediaServer part*
   
   int fd = mSubtitle->subtitle_fd;size_t len = mSubtitle->subtitle_size;
   ALOGI("Trying to map shared memory with FD = %d", fd);void* ptr = 
::mmap(NULL, len, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);if (ptr == 
MAP_FAILED) {
       ALOGI("Subtitle mmap ptr==MAP_FAILED %s", strerror(errno));} else {
       ALOGI("Subtitle get ptr %p", ptr);}AVSubtitleRect *rect = 
(AVSubtitleRect *)ptr;
   
   
Thank you very much for your help !

-- 
-- 
unsubscribe: [email protected]
website: http://groups.google.com/group/android-porting

--- 
You received this message because you are subscribed to the Google Groups 
"android-porting" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to