最近在调试一个应用,在lenovo A750上老是crash,其它平台OK,请大侠们帮忙分析一下,谢谢!!
D/MtkOmxVdec(91): 0x000583b0 MtkOmxVdec::HandleEmptyThisBuffer pBufHead(0x00040E48), pBuffer(0x41D1D000), nFilledLen(14534)
D/MtkOmxVdec(91): 0x000583b0 MtkOmxVdec::HandleFillThisBuffer pBufHead(0x00040FB8), pBuffer(0x41D9D000), nAllocLen(610576)
V/MtkOmxVdec(91): 0x000583b0 SIGNAL mDecodeSem from HandleFillThisBuffer() 1
D/MtkOmxVdec(91): ## 0x000583b0 out from sem
D/MtkOmxVdec(91): AvcDecode TS = 0, nFlags = 0x90 (0x52508, 0x40FB8)
D/MtkOmxVdec(91): AvcDecode dump input 0x1e404d67, Input Size : 27
I/VDO_LOG(91): [M4U][eVideoMemAlloc] pvMemVa = 0x59540, pvAlignMemVa = 0x59540, pvMemPa = 0x1540540, pvAlignMemPa = 0x1540540, MemSize = 1032, ByteAlignment = 1
I/VDO_LOG(91): [M4U][eVideoMemAlloc] pvMemVa = 0x2a668, pvAlignMemVa = 0x2a668, pvMemPa = 0x1580668, pvAlignMemPa = 0x1580668, MemSize = 52, ByteAlignment = 1
E/VDO_LOG(91): VDEC_DRV_SET_TYPE_SET_OMX_TIDS tid1=14206, tid2=14207
I/VDO_LOG(91): [eValInit] pid = 5b
E/VDO_LOG(91): [ERROR] fail to open mem_bw_ctrl driver file
I/VDO_LOG(91): [M4U][eVideoMemAlloc] pvMemVa = 0x2a700, pvAlignMemVa = 0x2a700, pvMemPa = 0x15c0700, pvAlignMemPa = 0x15c0700, MemSize = 27, ByteAlignment = 1
D/H264DEC(91): $0 H264_GMRE 3243
D/H264DEC(91): $0 H264_GMRE 3449
D/H264DEC(91): $595e0 H264_OA 771
D/H264DEC(91): h264dec.playing = 1
I/VDO_LOG(91): [M4U][eVideoMemAlloc] pvMemVa = 0x32248, pvAlignMemVa = 0x32260, pvMemPa = 0x1600248, pvAlignMemPa = 0x1600260, MemSize = 200, ByteAlignment = 32
D/H264DEC(91): $595e0 H264_OA 1190
D/H264DEC(91): $595e0 H264_IA 1220
I/VDO_LOG(91): [M4U][eVideoMemAlloc] pvMemVa = 0x4a760, pvAlignMemVa = 0x4a780, pvMemPa = 0x1640760, pvAlignMemPa = 0x1640780, MemSize = 16512, ByteAlignment = 32
I/VDO_LOG(91): [M4U][eVideoMemAlloc] pvMemVa = 0x57be8, pvAlignMemVa = 0x57c00, pvMemPa = 0x1680be8, pvAlignMemPa = 0x1680c00, MemSize = 1300, ByteAlignment = 32
D/H264DEC(91): h264dec.no_deblocking_filter = -1
D/H264DEC(91): h264dec.skip_b_level = -1
D/H264DEC(91): h264dec.lossy_qty = -1
D/H264DEC(91): h264dec.dynamic_switch = -1
D/H264DEC(91): h264dec.switch_percent = -1
D/H264DEC(91): h264dec.conceal_setting = -1
D/H264DEC(91): h264dec.time_threshold = 0
D/H264DEC(91): h264dec.time_threshold_db = -1
I/VDO_LOG(91): [eVideoIntMemAlloc] MT6575_VCODEC_INC_SYSRAM_USER, u4SysramUser = 1
I/VDO_LOG(91): [eVideoIntMemAlloc] m_pu8VirBase=41058000 m_pu8PhyBase=c2020000 SysramFd=36
I/VDO_LOG(91): [M4U][HW][eVideoMemAlloc] pvMemVa = 0x4105d000, pvAlignMemVa = 0x4105d020, pvMemPa = 0x8a9c000, pvAlignMemPa = 0x8a9c020, MemSize = 48, Kernel_VA = 0xffd09000
I/VDO_LOG(91): [M4U][eVideoMemAlloc] pvMemVa = 0x59a80, pvAlignMemVa = 0x59aa0, pvMemPa = 0x16c0a80, pvAlignMemPa = 0x16c0aa0, MemSize = 7152, ByteAlignment = 32
D/MtkOmxVdec(91): 0x000583b0 MtkOmxVdec::HandleFillThisBuffer pBufHead(0x0004FDC0), pBuffer(0x41E32110), nAllocLen(610576)
V/MtkOmxVdec(91): 0x000583b0 SIGNAL mDecodeSem from HandleFillThisBuffer() 1
E/VDO_LOG(91): [ERROR] ioctl:MT6575_VCODEC_WAITISR  failed
E/VDO_LOG(91): [VCodecDrvWaitISR][ERROR] VAL_RESULT_ISR_TIMEOUT
D/H264DEC(91): $595e0 H264_IA 1339
D/MtkOmxVdec(91): InitVideoDecodeHW *aWidth = 848, *aHeight = 480, mCodecId(0x2)
W/VDO_LOG(91): memory size:498274304, max_width:1280, max_height:720
D/MtkOmxVdec(91): InitVideoDecodeHW OK iDisplayWidth(848), iDisplayHeight(480), nFrameWidth(848), nFrameHeight(480)
D/MtkOmxVdec(91): 0x000583b0 MtkOmxVdec::HandleFillBufferDone pBufHead(0x00040FB8), pBuffer(0x41D9D000), nFilledLen(0)
D/MtkOmxVdec(91): pBuffHdr->nTimeStamp -> 0, length -> 0
D/MtkOmxVdec(91): @@ QueueInputBuffer (0)
D/MtkOmxVdec(91): !!!!! already RR priority
D/MtkOmxVdec(91): ## 0x000583b0 Wait to decode (1) (input: 10, output: 1) 
D/MtkOmxVdec(91): ## 0x000583b0 out from sem
D/MtkOmxVdec(91): nBufferStatus : 0x00000010, mOutputPortDef.nBufferCountActual: 16, mNumFreeAvailOutput: 0, mNumDispAvailOutput: 0 (all 0), mNumPendingOutput: 1, mNumNotDispAvailOutput: 0
D/MtkOmxVdec(91): AvcDecode TS = 0, nFlags = 0x90 (0x52508, 0x4FDC0)
D/MtkOmxVdec(91): AvcDecode dump input 0x1e404d67, Input Size : 27
E/MtkOmxVdec(91): @@ GetFrmBuf frm=0x31990, omx=0x4fdc0, i=1
D/MtkOmxVdec(91): [M4U] mM4UBufferCount = 26
D/MtkOmxVdec(91): [M4U] mRingbuf.rBase.u4VA = 0x4189d000, mRingbuf.rBase.u4PA = 0x440000, mRingbuf.rBase.u4Size = 27, mRingbuf.u4Read = 0x4189d000, mRingbuf.u4Write = 0x4189d01b
D/MtkOmxVdec(91): [M4U] frame->rBaseAddr.u4VA = 0x41e32110, frame->rBaseAddr.u4PA = 0xa00110
D/MtkOmxVdec(91): NalType 7
D/H264DEC(91): DOU0 302392358
D/H264DEC(91): $595e0 H264_SA 2052
D/H264DEC(91): BL 27
D/H264DEC(91): QI 16 0 0 0
I/VDO_LOG(91): [M4U][eVideoMemAlloc] pvMemVa = 0x59138, pvAlignMemVa = 0x59140, pvMemPa = 0x1700138, pvAlignMemPa = 0x1700140, MemSize = 984, ByteAlignment = 32
I/VDO_LOG(91): [M4U][eVideoMemAlloc] pvMemVa = 0x323a0, pvAlignMemVa = 0x323c0, pvMemPa = 0x17403a0, pvAlignMemPa = 0x17403c0, MemSize = 392, ByteAlignment = 32
D/H264DEC(91): DOU2      230
D/H264DEC(91): $595e0 H264_SA 2549 0
D/MtkOmxVdec(91): H.264 DECODE OK, (0 ms, 0 ms)
D/MtkOmxVdec(91): NOT_USED return code
D/MtkOmxVdec(91): RemoveForInputAtPTS ++, index ->  0, timeTS -> 0
E/MtkOmxVdec(91): RemoveForInputAtPTS not found timeTS -> 0
D/MtkOmxVdec(91): RemoveForInputAtPTS --
D/MtkOmxVdec(91): Get output from avc decoder, length 0, timestamp 0
D/MtkOmxVdec(91): 0x000583b0 MtkOmxVdec::HandleFillBufferDone pBufHead(0x0004FDC0), pBuffer(0x41E32110), nFilledLen(0)
...
D/H264DEC(91): $595e0 H264_GND 2937
D/MtkOmxVdec(91): Get NULL from avc decoder
D/MtkOmxVdec(91): 0x000583b0 MtkOmxVdec::HandleEmptyBufferDone pBufHead(0x0002A368), pBuffer(0x41A1D000)
D/MtkOmxVdec(91): !!!!! already RR priority
D/MtkOmxVdec(91): ## 0x000583b0 Wait to decode (0) (input: 1, output: 1) 
D/MtkOmxVdec(91): ## 0x000583b0 out from sem
D/MtkOmxVdec(91): nBufferStatus : 0x00030810, mOutputPortDef.nBufferCountActual: 16, mNumFreeAvailOutput: 3, mNumDispAvailOutput: 8 (all 8), mNumPendingOutput: 4, mNumNotDispAvailOutput: 0
D/MtkOmxVdec(91): AvcDecode TS = 560000, nFlags = 0x10 (0x528B0, 0x50928)
D/MtkOmxVdec(91): Interval (0)
D/MtkOmxVdec(91): AvcDecode dump input 0x01000000, Input Size : 7750
E/MtkOmxVdec(91): @@ GetFrmBuf frm=0x31fb0, omx=0x50928, i=15
D/MtkOmxVdec(91): [M4U] mM4UBufferCount = 26
D/H264DEC(91): DFS 0 0x42404bb0
D/H264DEC(91): $595e0 H264_GND 2937
D/MtkOmxVdec(91): CURRENT_DISPLAY return code, length 610560, ts 440000
D/MtkOmxVdec(91): RemoveForInputPTS ++, index ->  0, DisplayTSArray[0] -> 0
D/MtkOmxVdec(91): RemoveForInputPTS --
D/MtkOmxVdec(91): Get output from avc decoder, length 610560, timestamp 0
D/MtkOmxVdec(91): 0x000583b0 MtkOmxVdec::HandleFillBufferDone pBufHead(0x00052D10), pBuffer(0x42404BB0), nFilledLen(610560)
D/MtkOmxVdec(91): pBuffHdr->nTimeStamp -> 0, length -> 610560
D/H264DEC(91): $595e0 H264_GND 2588
D/H264DEC(91): DFS 0 0x425c3ee0
D/H264DEC(91): $595e0 H264_GND 2937
D/MtkOmxVdec(91): CURRENT_DISPLAY return code, length 610560, ts 480000
D/MtkOmxVdec(91): RemoveForInputPTS ++, index ->  0, DisplayTSArray[0] -> 0
D/MtkOmxVdec(91): RemoveForInputPTS --
D/MtkOmxVdec(91): Get output from avc decoder, length 610560, timestamp 0
D/MtkOmxVdec(91): 0x000583b0 MtkOmxVdec::HandleFillBufferDone pBufHead(0x000508A0), pBuffer(0x425C3EE0), nFilledLen(610560)
D/MtkOmxVdec(91): pBuffHdr->nTimeStamp -> 0, length -> 610560
D/H264DEC(91): $595e0 H264_GND 2588
D/H264DEC(91): DFS 4 0x0
D/H264DEC(91): $595e0 H264_GND 2937
D/MtkOmxVdec(91): Get NULL from avc decoder
D/MtkOmxVdec(91): 0x000583b0 MtkOmxVdec::HandleEmptyBufferDone pBufHead(0x000528B0), pBuffer(0x41A9D000)
D/MtkOmxVdec(91): !!!!! already RR priority
D/MtkOmxVdec(91): ## 0x000583b0 Wait to decode (0) (input: 1, output: 0) 
D/MtkOmxVdec(91): ## 0x000583b0 out from sem
W/MtkOmxVdec(91): 0x000583b0 FillThisBuf is empty
D/MtkOmxVdec(91): 0x000583b0 output eat semaphore count: 1
D/MtkOmxVdec(91): 0x000583b0 MtkOmxVdec::HandleEmptyThisBuffer pBufHead(0x00052600), pBuffer(0x41B9D000), nFilledLen(6111)
D/MtkOmxVdec(91): add extra semaphore count: 2
D/MtkOmxVdec(91): ## 0x000583b0 Wait to decode (0) (input: 2, output: 0) 
D/MtkOmxVdec(91): ## 0x000583b0 out from sem
W/MtkOmxVdec(91): 0x000583b0 FillThisBuf is empty
D/MtkOmxVdec(91): 0x000583b0 output eat semaphore count: 2
D/MtkOmxVdec(91): ## 0x000583b0 Wait to decode (0) (input: 2, output: 0) 
I/Settings/BW(10111): ReadCodeTask:TimerTask: ReadCodeTask.run()
I/Settings/BW(10111): ReadCodeTask:sendWarningMessage() called.
I/Settings/BW(10111): ReadCodeTask:line content: 0
I/Settings/BW(10111): ReadCodeTask:notify code is 0
I/Settings/BW(10111): ReadCodeTask:getWarningMessage() called.Event: 0
E/dalvikvm(168): [DVM] mmap return base = 4c94e000
I/DEBUG(13935): debuggerd: tmb file path:'/data/tombstones/tombstone_01'
I/DEBUG(13935): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
I/DEBUG(13935): Build fingerprint: 'lenovo/lenovo75_cu_gb/lenovo75_cu_gb:2.3.6/GRK39F/A750_S138_120309:user/release-keys'
I/DEBUG(13935): pid: 14189, tid: 14195  >>> com.xxx.videoPlayer <<<
I/DEBUG(13935): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr deadbaad
I/DEBUG(13935):  r0 00000027  r1 deadbaad  r2 40000000  r3 00000000
I/DEBUG(13935):  r4 00000001  r5 44eafb34  r6 00892de8  r7 0000a000
I/DEBUG(13935):  r8 00000001  r9 a304cbec  10 00000000  fp 008b8500
I/DEBUG(13935):  ip afd46688  sp 44eafb20  lr afd191f9  pc afd15cc2  cpsr 20000030
I/DEBUG(13935):          #00  pc 00015cc2  /system/lib/libc.so
I/DEBUG(13935):          #01  pc 00013658  /system/lib/libc.so
I/DEBUG(13935):          #02  pc 0001451a  /system/lib/libc.so
I/DEBUG(13935):          #03  pc 000009c4  /system/lib/libstdc++.so
I/DEBUG(13935):          #04  pc 00065178  /system/lib/libstagefright.so
I/DEBUG(13935):          #05  pc 00065098  /system/lib/libstagefright.so

解决方案 »

  1.   

    lenovo A750用的是MT6575,联发科芯片
      

  2.   

    那个视频文件, 用手机上自带的播放器能正常播放吗? 如果能, 那就说明你是自己写了个player engine。 你的player engine 跟平台的 omxcodec 集成有问题。
      

  3.   

    是自己写的player engine,在其它大厂的机器上都正常(三星,HTC等)。联想A750上的omxcodec 与google公布的代码流程应该有些不同,但我没有A750上对应的code,不知道哪里没集成好。
      

  4.   

    那你就要根据平台去适配了, 可能是初始化decoder的时候, 传的parameters有特别要求。
      

  5.   

    楼上的看来比较了解。我没有平台相关的code,只有google公布的code,你了解二者的差别吗?