MediaSDK
MediaSDK copied to clipboard
Too much cocurrent decoding channels on HEVC frames leads to win10 system hangup
System information
The OS is win10. And we reproduce this hangup issue at 2 CPU model.
- J3455
- i5-10400
Issue behavior
Based on sample code "MediaSDK\tutorials\simple_2_decode_hevc10", I wrapped it to be a "hevcd.dll". It provides interface for creating a "MsdkDecoder" decoder object. And I can use it to decode input HEVC frames (main profile). This wrapped code works properly. I can create (for instance) 4 threads & each of these thread will create their own "MsdkDecoder" decoder object & do decoding on different input HEVC frames.
Here the input HEVC frames usually have at least 1080P resolution. And "MsdkDecoder" will always use "MFX_IMPL_HARDWARE" method (hardware decoding).
But when I increase the cocurrent thread count to be large value, it will lead to win10 system hangup. I need to manually reboot the computer to restore the system to normal status.
For "J3455", the value is 16 threads. For "i5-10400", the value is 60 threads.
Note, above threads are all in a single process.
When I write test routine to host each thread in different process, this hangup issue seems won't happen.
Expected behavior
I presume at no cases, intel msdk should hangup the win10 system. Also I presume this issue is NOT caused by my wrapped code. Cause I nearly changed nothing & my code works properly when cocurrent decoding channels is less than 16.
Could anyone provide any advice on this hangup issue?
@dmitryermilov ,Could you help me on this? You used to help me solve the "software decoding" issue before:)
It's always hard to investigate such system hang issues.
-
Could you collect MSDK tracer API logs (public msdk windows dev package has the tracer)?
-
Can you please try to reproduce the issue with sample_multi_transcode app with par file like:
-i::h265 <file> -o::raw null
-i::h265 <file> -o::raw null
-i::h265 <file> -o::raw null
-i::h265 <file> -o::raw null
....
just to check it's not a problem of your app.
- What d3dX type d you use? Try with both d3d11 and d3d9.
- What memory type you have after decoder: video or system?
Hi @dmitryermilov , thanks for your quick reply. I believe this attached "16chan.log" is the tracer log. This is log for "J3455".
I will try the "smaple_multi_transcode" app later. But want to clarify some details here.
a) My working routine is x64 (NOT x86). b) My working routine is nearly the same as my previous x86 software decoding code. Except this is hardware decoding. c) My working routine no need to render images. So it won't use d3dX. It just decode HEVC video frames into "system memory". Then do "motion detect" on the image. If motion is detected, our DVR will record the footage. If NOT, DVR won't record the footage.
I will update more details when I got some :)
Hi @dmitryermilov , how have you been recently? Do you have any update on this ticket?