Issues with the maximum number of H.264 video hardware decoding through d3d11
We are having problems with the maximum number of H.264 video hardware decoding through d3d11.
We are seeing that the limit for an i7 8gen or upper with a iGPU (i7-8550U) is much smaller than for an i7 7gen or lower (i7-7500U or i7-6600U).
It seems that the newer generations of the iGPU have less simultaneous playback capacity on Windows than the older ones.
Running the next pipeline (check create_pipeline.py
to generate it):
gst-launch-1.0.exe --gst-debug-level=3 \
filesrc location="$VIDEO" ! qtdemux ! h264parse ! queue ! d3d11h264dec ! "video/x-raw(memory:D3D11Memory)" ! queue ! d3d11videosink \
...20 time more...
filesrc location="$VIDEO" ! qtdemux ! h264parse ! queue ! d3d11h264dec ! "video/x-raw(memory:D3D11Memory)" ! queue ! d3d11videosink
The error is (full error in full_error.log
):
0:00:25.265373000 10388 000002DCDCA7F6C0 INFO d3d11debuglayer gstd3d11memory.cpp:1232:gst_d3d11_memory_ensure_processor_output_view:<d3d11device2> D3D11InfoQueue: Create ID3D11VideoProcessorOutputView: Name="unnamed", Addr=0x000002DCFF4F5290, ExtRef=1, IntRef=0
0:00:25.323520000 10388 000002DCDCA7F6C0 WARN d3d11window gstd3d11window_win32.cpp:1079:gst_d3d11_window_win32_present: D3D11 call failed: 0x887a0005, The GPU device instance has been suspended. Use GetDeviceRemovedReason to determine the appropriate action.
0:00:25.324161000 10388 000002DCDCA7F6C0 INFO d3d11debuglayer gstd3d11window_win32.cpp:1079:gst_d3d11_window_win32_present:<d3d11device2> D3D11InfoQueue: ID3D11Device::RemoveDevice: Device removal has ben triggered for the following reason (DXGI_ERROR_DEVICE_RESET: The hardware took an unreasonable amount of time to execute a command on a different Device Context, or the hardware crashed/hung. As a result, the TDR (Timeout Detection and Recovery) mechanism has been triggered. The current Device Context was NOT executing commands when the hang occurred. However, the current video memory and Device Context could not be completely recovered. The application may want to just respawn itself, as the other application may no longer be around to cause this again).
0:00:25.324839000 10388 000002DCDCA7F6C0 WARN d3d11window gstd3d11window_win32.cpp:1081:gst_d3d11_window_win32_present:<d3d11windowwin32-20> Direct3D cannot present texture, hr: 0x887a0005
I created an external repo with all the info we have.
All the feedback is appreciated, and thank you for taking the time to provide it.