本人现在在做NVida Tegra2的OpenMax硬解码,采用IOMX.h中的适配层接口,调用service端的相应接口来实现解码器创建,h264解码组件的端口设置和端口buffer的分配,但是在进行端口buffer分配完成以后,程序直接挂掉了,打印信息显示Media server挂掉了: 相关打印信息如下:
10-12 10:30:46.293: WARN/AudioSystem(1052): AudioFlinger server died!
10-12 10:30:46.293: WARN/AudioSystem(1052): AudioPolicyService server died!
10-12 10:30:46.293: INFO/ServiceManager(966): service 'media.audio_flinger' died
10-12 10:30:46.293: INFO/ServiceManager(966): service 'media.player' died
10-12 10:30:46.293: INFO/ServiceManager(966): service 'media.camera' died
10-12 10:30:46.293: INFO/ServiceManager(966): service 'media.audio_policy' died10-12 14:16:21.485: ERROR/AudioService(1059): Media server died.
10-12 14:16:21.485: ERROR/AudioService(1059): Media server started.
这个问题纠结了2天了,希望大牛们给点建议!!!

解决方案 »

  1.   

    出现这样的原因, 你给的数据并不能帮助判断错误出在那里,再者AudioFlinger 是先挂断的,但并不能确定问题就出在这里。另外openmax是由stagefright来调用的,两者是不能很好的能够传送数据也很重要。
      

  2.   

    出现这样的原因, 你给的数据并不能帮助判断错误出在那里,再者AudioFlinger 是先挂断的,但并不能确定问题就出在这里。另外openmax是由stagefright来调用的,两者是不能很好的能够传送数据也很重要。
      

  3.   

    没做过硬件编码,不过软件编码 openmax做了不少。楼主问题,mediaserver died,可能是crash在编解码器里面。如访问非法地址,内存越界等等,从而导致died。
      

  4.   

    重新进行测试以后发现,调用service端的allocateBuffer进行buffer分配的时候,返回值是ok的,但是用来分配内存的指针仍然是NULL,也就是buffer其实分配是失败的,以为是buffer设置的大小过大或过小造成的,结果设置不同buffer的大小进行测试,用来分配内存的指针还是NULL。还在纠结中,继续查找问题根源~~