I use the Linux Server Intel Media SDK.
I ported the windows version example of the sample_decode using ffmpeg to linux and found that both the ffmpeg input version and the regular version ran in about the same amount of ticks. The demuxing didn't seem to have much impact at all.
I then used the code from the ffmpeg decode sample to add the ffmpeg input to the sample_multi_transcode sample code. I went from processing ~10k frames of SD in 15 seconds to ~10k frames of SD in 212 seconds. After adding some benchmarking I have determined the exact bottleneck in the source code. Unfortunately the function call is not source code that I have access to and it doesn't explain well what the code is trying to do.
The function is in pipeline_transcode.cpp. CTranscodingPipeline::PutBS(). The line that is running so much slower is:
sts = m_pmfxSession->SyncOperation(pBitstreamEx->Syncp, MSDK_WAIT_INTERVAL);
What I would like to know is:
1) What does this function do?
2) Why would it run drastically slower with a different file reader feeding it?