Can someone please tell how MFXVideoCORE_SyncOperation() API works. The waitTime parameter specifies the maximum time to wait or is it a compulsory wait.
For instance if waitTime is 60000ms then it will start the operations queued and wait till:
1. 60000ms compulsorily even if the operation finished at a time<60000ms
2. or whichever occurs first (operation completion or 60000ms)?
The wait time specified in MFXVideoCORE_SyncOperation() is the compulsory wait time. You can find little more details in one of the threads - https://software.intel.com/en-us/forums/topic/485723 discussed before.
I have discussed this with the experts and this is the maximum wait time you have to stay for the operation to get complete, but not the mandatory wait time. So whichever occurs the first either the wait time or operation complete.
One of the ways wait interval defined in the sample encode -
#define MSDK_DEC_WAIT_INTERVAL 60000 #define MSDK_ENC_WAIT_INTERVAL 10000 #define MSDK_VPP_WAIT_INTERVAL 60000 #define MSDK_WAIT_INTERVAL MSDK_DEC_WAIT_INTERVAL+3*MSDK_VPP_WAIT_INTERVAL+MSDK_ENC_WAIT_INTERVAL // an estimate for the longest pipeline we have in samples
As mentioned in the code this is the longest pipeline, not necessarily it will wait for that many milliseconds. This is just an estimate for how long operation can perform. It is up to developers to change it.
Please check sample_encode to see how this works.