Ios硬解码出现kVTInvalidSessionErr = -12903Session失效的问题
2017-04-27 10:23
1061 查看
最近要使用Ios端H264解码功能,参考了webrtc中使用videoToolBox的硬解部分,在真机调试的时候,从后台切换到前台后,出现画面卡死不能恢复的情况,本以为渲染出问题,查看日志后发现为解码失败,查看底层发现解码方法
OSStatus status =
VTDecompressionSessionDecodeFrame( decompression_session_, sample_buffer, decode_flags,
frame_decode_params.release(), nullptr);
返回错误吗-12903,然后查询后发现该错误吗为kVTInvalidSessionErr,为解码器session失效错误,原来从后台切换到前台后原来的解码器Decoder的VTDecompressionSession失效,导致解码失败,经查看webrtc中h264_video_toolbox_decoder.cc中代码,发现程序没有对解码失败的情况进行处理:
发现整个代码中有重置session的操作,因此可以在此根据status的错误码进行操作 ResetDecompressionSession();
经过实际测试完美解决该问题。
同样该问题存在于webrtc使用H264编解码传输的视频通话中,因此有问题的朋友可以使用该方式解决。
OSStatus status =
VTDecompressionSessionDecodeFrame( decompression_session_, sample_buffer, decode_flags,
frame_decode_params.release(), nullptr);
返回错误吗-12903,然后查询后发现该错误吗为kVTInvalidSessionErr,为解码器session失效错误,原来从后台切换到前台后原来的解码器Decoder的VTDecompressionSession失效,导致解码失败,经查看webrtc中h264_video_toolbox_decoder.cc中代码,发现程序没有对解码失败的情况进行处理:
发现整个代码中有重置session的操作,因此可以在此根据status的错误码进行操作 ResetDecompressionSession();
经过实际测试完美解决该问题。
同样该问题存在于webrtc使用H264编解码传输的视频通话中,因此有问题的朋友可以使用该方式解决。
相关文章推荐
- 当session长时间不登录失效问题,再重登录出现两个嵌套登录页面
- 关于 new Date在ios中出现Invalid Date 的问题
- ios:The executable was signed with invalid entitlements新设备run出现此问题
- 当session长时间不登录失效问题,再重登录出现两个嵌套登录页面
- iOS: 'The NIB data is invalid' exception with Xcode 4.5(真机出现的问题)
- session失效后,登陆页面出现在iframe中的问题,适用于带权限框架的项目。
- ios:The executable was signed with invalid entitlements新设备run出现这个问题
- ios:The executable was signed with invalid entitlements新设备run出现这个问题
- ios:The executable was signed with invalid entitlements在新设备上run出现问题
- Asp.net中Access数据库文件放在App_Code文件夹使Session奇怪失效的问题
- Session 失效问题二
- 关于出现No Hibernate Session bound to thread问题的记录
- OpenSessionViewFilter失效问题
- ASP.NET中Session失效的问题整理
- [问题解决] asp.net 中调用 Excel 出现以下提示: Old format or invalid type library.
- 异步 HttpContext.Current实现取值的方法(解决异步Application,Session,Cache...等失效的问题)
- 关于session未到时间便失效问题
- (转载)修改删除目录操作之后,Session失效问题
- 出现invalid byte 1 of 1-byte UTF-8 sequence问题
- MyEclipse+structs例子在试验时出现"Invalid path ..."问题