d3d11decoder: Fix deadlock when DPB texture pool is full
authorSeungha Yang <seungha@centricular.com>
Wed, 3 Feb 2021 18:42:05 +0000 (03:42 +0900)
committerGStreamer Merge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Wed, 3 Feb 2021 20:46:22 +0000 (20:46 +0000)
commit6bdf09d252149a09c965b65754590de16509b583
tree9d3c4dc72d9db26aaf80bf756ccc31e70ffc2ad2
parent12baab442c0aece7672eba3d3a02ba6b2d770574
d3d11decoder: Fix deadlock when DPB texture pool is full

Unlike other stateless decoder implementations (e.g., VA),
our DPB pool cannot be grown since we are using
texture array (pre-allocated, fixed-size d3d11 texture pool).
So, if there's no more available texture to use,
there's no way other than copying it to downstream's
d3d11 buffer pool. Otherwise deadlock will happen.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2003>
sys/d3d11/gstd3d11decoder.c
sys/d3d11/gstd3d11decoder.h
sys/d3d11/gstd3d11h264dec.c
sys/d3d11/gstd3d11h265dec.c
sys/d3d11/gstd3d11mpeg2dec.c
sys/d3d11/gstd3d11vp8dec.c
sys/d3d11/gstd3d11vp9dec.c