I am using Ipp6.1 with samples 6.1.4.059 Since I realized version 7 will include SSE2, I am going to switch to that soon and this might be different in the new samples.
I want to mux an encoded H264 video stream to the file, since the encoded data does not come from UMC encoder this is not a real Bug report but an addition that makes the muxer more robust against unknown data.
In th file umc_mp4_mux.cpp in function MP4Muxer::MuxData(bool bFlushMode) If somehow a non-data sample (say a MediaData with only SPS or PPS or some unkown format is used with PutData) goes to m_ppBuffers then AdjustVideoData returns UMC_ERR_FAILED and as a result of UMC_CHECK_STATUS(umcRes), m_ppBuffers will never be unlocked. So the next call to MuxData again tries the old non-data sample and never moves forward.
The fix is very simple:
Lines 515 and 519 Remove UMC_CHECK_STATUS(umcRes) Line 522 add the check to see if pointer is valid i.e. change it to if (pcData && pcData->GetDataSize() != 0)
By this addition, the unknown/unwanted NALU data is ignored rather than kept stuck in the buffer.