他能够播放几次,但是不断循环的话就会decoder 出错你在buffer或者底层可能有泄漏

解决方案 »

  1.   

    这位老兄, tempbuf->bffer 
    的代码在哪里出错了
      

  2.   


    这里的decoder出错是因为 传入decoder的数据错了,所以就error了而数据传错的在opencore最底下的是在 OSCL_file_cache.cpp的read函数中oscl_memcpy(destBuf, _pCacheBufferStart + _currentCachePos, thisRead);这句话,destBuf和_pCacheBufferStart + _currentCachePos内容不一致而如果我修改为:   oscl_memcpy(destBuf, _pCacheBufferStart + _currentCachePos, thisRead);
      
       if((oscl_memcmp(destBuf, _pCacheBufferStart + _currentCachePos, thisRead))!=0)
       {
         oscl_memcpy(destBuf, _pCacheBufferStart + _currentCachePos, thisRead);
       }就是说比较内容是否相同,如果不同在copy一次,但是这样操作的话,错误就是另外的错误了,放到一定时间后就会:
       This file can not play   
      然后mediaserver died了  Mediaplayer(100,0)
    假如我用pvplayer_engine_test 进行test的话 ,两次copy的话的错误是Bus busy
      

  3.   

    我们用的是软解码,在连续播放20个小时左右也会遇到This file can not play 的情况,然后media server会出问题,一直不知道什么原因。
      

  4.   

    楼主:打开pv log,然后编译debug版本的库,那么ddms会把crash的时候以前的mediaserver调用堆栈以及 寄存器值打印出来,贴出来。这样大家更好帮你。