Decode Error
VideoToolBox解码时,VTDecompressionSessionDecodeFrame
返回错误12902,kVTParameterErr = -12902
即参数错误,然后在VTDecompressionSessionInvalidate
的时候,就发现线程卡死挂起了
同样操作VTDecompressionSessionWaitForAsynchronousFrames
也是一样的,VTDecompressionSessionInvalidate
里面也操作了VTDecompressionSessionWaitForAsynchronousFrames
CMItemCount count = CMSampleBufferGetNumSamples(sampleBuffer);
if (count > 0) {
//解码
//向视频解码器提示使用低功耗模式是可以的
uint32_t decoder_flags = 0;
decoder_flags |= kVTDecodeFrame_EnableAsynchronousDecompression;
decoder_flags |= kVTDecodeFrame_1xRealTimePlayback;
//异步解码
VTDecodeInfoFlags flagOut = kVTDecodeInfo_Asynchronous;
NSDate* currentTime = [NSDate date];
status = VTDecompressionSessionDecodeFrame(_decompressionSession, sampleBuffer, decoder_flags,
(void*)CFBridgingRetain(currentTime), &flagOut);
if (status == kVTInvalidSessionErr) {
GSLog(@"Video hard decode InvalidSessionErr status = %d ,nalutype : %d", (int)status,nalu_type);
} else if (status == kVTVideoDecoderBadDataErr) {
GSLog(@"Video hard decode BadData status = %d ,nalutype : %d", (int)status,nalu_type);
} else if (status