|
两路720P的视频解码,只解码不从显存中拷贝数据cpu在4%左右,但是从显存中把数据拷贝到内存中cpu就到了30%左右,请问下我的cpu占用率为什么会这么高,以下是我从显存中拷贝数据的代码, 我的cpu是i7的,内存8G, 系统ubuntu16.04界面版的
assert(pUserData);
CudaDecoder* pDecoder = (CudaDecoder*)pUserData;
CCtxAutoLock lck(pDecoder->m_ctxLock);
CUVIDPROCPARAMS oVideoProcessingParameters;
memset(&oVideoProcessingParameters, 0, sizeof(CUVIDPROCPARAMS));
CUdeviceptr pDecodedFrame = 0;
unsigned int nDecodedPitch = 0;
CUresult oResult = cuvidMapVideoFrame(pDecoder->m_videoDecoder, pPicParams->picture_index, &pDecodedFrame, &nDecodedPitch, &oVideoProcessingParameters);
unsigned int nv12_size = nDecodedPitch * (pDecoder->m_oVideoDecodeCreateInfo.ulHeight + pDecoder->m_oVideoDecodeCreateInfo.ulHeight / 2); // 12bpp
if (pDecoder->m_bufferSize <= nv12_size) {
if (pDecoder->m_cacheFrameBuffer)
{
cuMemFreeHost((void*)pDecoder->m_cacheFrameBuffer);;
pDecoder->m_cacheFrameBuffer = NULL;
}
cuMemAllocHost((void**)&pDecoder->m_cacheFrameBuffer, nv12_size);
pDecoder->m_bufferSize = nv12_size;
}
oResult = cuMemcpyDtoH(pDecoder->m_cacheFrameBuffer, pDecodedFrame, nv12_size);
oResult = cuvidUnmapVideoFrame(pDecoder->m_videoDecoder, pDecodedFrame);
|
|