I have 12 decoders in our application. I compared between multiple decoder with multiple threads (each decoder owns itself thread) and multiple decoder with single thread. The test result is that the latter almost 3 times faster than the former. Could someone explain why?
The Intel Media SDK contains a scheduler that is designed to manage the use of available low-level hardware components efficiently. When creating multiple decoders, we recommend using the MFXJoinSession() method so that the asynchronous work can be efficiently managed. This is described in Section 4.3 of the Intel_Media_Developers_Guide.pdf.
If you are using hardware acceleration, there are limited hardware resources and the Intel Media SDK provides this feature so that yoru application makes optimal use of the resources.
You may also want to look at using this tool to help tune your specific application even further when exectuing on Intel platforms that support hardware acceleration.