Ios硬解码出现kVTInvalidSessionErr = -12903Session失效的问题

        最近要使用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中代码,发现程序没有对解码失败的情况进行处理:

   Ios硬解码出现kVTInvalidSessionErr = -12903Session失效的问题_第1张图片

发现整个代码中有重置session的操作,因此可以在此根据status的错误码进行操作 ResetDecompressionSession();

Ios硬解码出现kVTInvalidSessionErr = -12903Session失效的问题_第2张图片

经过实际测试完美解决该问题。

同样该问题存在于webrtc使用H264编解码传输的视频通话中,因此有问题的朋友可以使用该方式解决。

你可能感兴趣的:(Webrtc)