Hello all, I am quite desperate with this issue:
We have two steps in the pipeline: VPP -> H.264 Encode. So we sync the output operations with the sync point from encode. The problem is we sometimes experience MFX_ERR_ABORTED. when trying to sync to the output sample. I have found this explanation that in such case I should sync to the previous function (which is VPP): https://software.intel.com/en-us/node/696109#Pipeline_Error_Reporting
That's cool, so I tried to do something like this pseudocode:
var sts = sync(encSyncPoint) if (sts == ABORTED) { sts = sync(vppSyncPoint) }
MFX_WRN_IN_EXECUTION from sync with VPP which usually means I should just try a little later. That's fine, so I changed the code that I just need to wait:
var sts = sync(encSyncPoint) if (sts == ABORTED) { sts = sync(vppSyncPoint) if (sts == IN_EXECUTION) continue; // try in 1ms again }
And it works - somehow - after a few iterations tops, the VPP results with NO_ERROR. But even after that sync with encSyncPoint still returns ABORTED. So... what actually happened? Did the previous VPP step really complete? And if it did, why the encode got aborted instead of just waiting for the previous step to complete?
I have attached the sample per-fame trace file.