IPP 7 H264VideoDecoder high CPU patch

IPP 7 H264VideoDecoder high CPU patch

Since my last report of high CPU when using multiple threads with the H264VideoDecoder got dismissed as being an OpenMP issue. I figured I would start a new thread to make it easier for people to find the real solution. Hopefully this will get fixed in a newer IPP update as I would consider this a pretty major problem.

See the attached patch file for how to fix it.

Downloadtext/x-diff umc_h264_task_broker.cpp.patch498 bytes
4 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.


Thanks for sharing it. We will have further check.


I encountered the same issue as well and fixed it in the following way:

// umc_h264_task_broker.cpp line 1751bool TaskBrokerTwoThread::GetNextTaskInternal(H264Task *pTask){...if (!pTask->m_iThreadNumber){ SwitchCurrentAU(); m_completedQueue.clear(); return false;}// Only signal threads if there are tasksIpp32s cnt_tasks = GetNumberOfTasks(true);if (cnt_tasks) AwakeThreads();...}

Note, this does lead to a hang when closing the H264 decoder which I then fixed as follows

// umc_h264_task_supplier.cpp line 1027void TaskSupplier::Close(){m_threadGroup.Release();if (m_pTaskBroker){m_pTaskBroker->Release();}// from reset//m_threadGroup.Release();...}

// umc_h264_thread.cpp line 121void H264Thread::Release(){ m_bQuit = true; Reset(); if (IsValid()) { //m_bQuit = true; Awake(); Wait(); } Close();} // void Release(void)

Hi Chao,

Can the Intel team verify the findings and the solution outlined by Steve (or Arvin)? Has a fix been included in IPP 7.1 beta?

And is this issue really related to (or equal to) the one outlined in thread #81357 ("H.264 performence issues in IPP 7.0.2"), which seems very similar and is announced as having been fixed in 7.1 beta?


Best regards,

- Jay

Leave a Comment

Please sign in to add a comment. Not a member? Join today