openjpegdec: allow multithread decoding only in subframe mode
authorStéphane Cerveau <scerveau@igalia.com>
Mon, 13 Feb 2023 11:05:27 +0000 (12:05 +0100)
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Tue, 28 Mar 2023 09:10:48 +0000 (09:10 +0000)
To avoid mis-ordered frames, allow multithread decoding only in
subframe mode.

Fixes #1786

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

subprojects/gst-plugins-bad/ext/openjpeg/gstopenjpegdec.c

index 4909d9a..6962134 100644 (file)
@@ -217,10 +217,14 @@ gst_openjpeg_dec_start (GstVideoDecoder * decoder)
 
   GST_DEBUG_OBJECT (self, "Starting");
   self->available_threads = self->max_slice_threads;
-  if (self->available_threads)
-    self->decode_frame = gst_openjpeg_dec_decode_frame_multiple;
-  else
-    self->decode_frame = gst_openjpeg_dec_decode_frame_single;
+  self->decode_frame = gst_openjpeg_dec_decode_frame_single;
+  if (self->available_threads) {
+    if (gst_video_decoder_get_subframe_mode (decoder))
+      self->decode_frame = gst_openjpeg_dec_decode_frame_multiple;
+    else
+      GST_INFO_OBJECT (self,
+          "Multiple threads decoding only available in subframe mode.");
+  }
 
   return TRUE;
 }