您的位置:首页 > 移动开发 > IOS开发

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编解码传输的视频通话中,因此有问题的朋友可以使用该方式解决。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: