Closed Sinkup closed 8 years ago
回调方法:- (CVPixelBufferRef)cameraStreamingSession:(PLCameraStreamingSession *)session cameraSourceDidGetPixelBuffer:(CVPixelBufferRef)pixelBuffer 在这个方法中做了滤镜操作,根据pixelBuffer创建了新的CVPixelBufferRef,并将其返回。然后出现crash,信息如下:
CoreFoundation`CFRelease: 0x1904b63e8 <+0>: cbz x0, 0x1904b644c ; <+100> 0x1904b63ec <+4>: tbz x0, #63, 0x1904b63f4 ; <+12> 0x1904b63f0 <+8>: ret 0x1904b63f4 <+12>: ldr x8, [x0] 0x1904b63f8 <+16>: adrp x9, 151358 0x1904b63fc <+20>: ldr x9, [x9, #3688] 0x1904b6400 <+24>: cmp x8, #0 ; =0 0x1904b6404 <+28>: ccmp x8, x9, #4, ne 0x1904b6408 <+32>: b.eq 0x1904b6444 ; <+92> 0x1904b640c <+36>: ldr w9, [x0, #8] 0x1904b6410 <+40>: ubfx w9, w9, #8, #10 0x1904b6414 <+44>: adrp x10, 151356 0x1904b6418 <+48>: add x10, x10, #3680 ; =3680 0x1904b641c <+52>: ldr x9, [x10, w9, uxtw #3] 0x1904b6420 <+56>: cmp x8, x9 0x1904b6424 <+60>: b.eq 0x1904b6444 ; <+92> 0x1904b6428 <+64>: tbz w8, #0, 0x1904b6448 ; <+96> 0x1904b642c <+68>: adrp x10, 126695 0x1904b6430 <+72>: ldr x10, [x10, #408] 0x1904b6434 <+76>: ldr x10, [x10] 0x1904b6438 <+80>: and x8, x10, x8 0x1904b643c <+84>: cmp x8, x9 0x1904b6440 <+88>: b.ne 0x1904b6448 ; <+96> 0x1904b6444 <+92>: b 0x19058f99c ; _CFRelease 0x1904b6448 <+96>: b 0x18f030150 ; objc_release 0x1904b644c <+100>: adrp x8, 145472 0x1904b6450 <+104>: add x8, x8, #2296 ; =2296 0x1904b6454 <+108>: adrp x9, 853 0x1904b6458 <+112>: add x9, x9, #2237 ; =2237 0x1904b645c <+116>: str x9, [x8, #8] -> 0x1904b6460 <+120>: brk #0x1
另外,我在只对原pixelBuffer进行某些修改的时候是OK的。创建的新CVPixelBufferRef,可以看到结果是正确的。所以想请问一下,是否有什么需要特别注意的地方?
请问有符号化的崩溃栈信息吗? 另外新建的 CVPixelBufferRef 是否作为 return 值?
@huangdeheng 没有符号化的信息,全是我上面贴出来的这种样子。新建的 CVPixelBufferRef 是作为 return 值的。
问题确定了,只能在原CVPixelBufferRef上修改,不能创建新的
回调方法:- (CVPixelBufferRef)cameraStreamingSession:(PLCameraStreamingSession *)session cameraSourceDidGetPixelBuffer:(CVPixelBufferRef)pixelBuffer 在这个方法中做了滤镜操作,根据pixelBuffer创建了新的CVPixelBufferRef,并将其返回。然后出现crash,信息如下:
另外,我在只对原pixelBuffer进行某些修改的时候是OK的。创建的新CVPixelBufferRef,可以看到结果是正确的。所以想请问一下,是否有什么需要特别注意的地方?