d3d11decoder: Fix crash on negotiate() when decoder is not configured
authorSeungha Yang <seungha@centricular.com>
Tue, 26 Sep 2023 16:12:01 +0000 (01:12 +0900)
committerTim-Philipp Müller <tim@centricular.com>
Wed, 27 Sep 2023 10:29:34 +0000 (12:29 +0200)
The negotiate() can be called by GstVideoDecoder baseclass on GAP event,
and decoder helper object might not be configured at the time
when negotiate() is called.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5401>

subprojects/gst-plugins-bad/sys/d3d11/gstd3d11decoder.cpp

index c919072..4c4511d 100644 (file)
@@ -1686,6 +1686,11 @@ gst_d3d11_decoder_negotiate (GstD3D11Decoder * decoder,
   info = &decoder->output_info;
   input_state = decoder->input_state;
 
+  if (!decoder->configured) {
+    GST_WARNING_OBJECT (videodec, "Decoder is not configured");
+    return FALSE;
+  }
+
   alternate_interlaced =
       (GST_VIDEO_INFO_INTERLACE_MODE (info) ==
       GST_VIDEO_INTERLACE_MODE_ALTERNATE);