summaryrefslogtreecommitdiff
path: root/ext/openjpeg/gstopenjpegdec.h
diff options
context:
space:
mode:
authorStéphane Cerveau <scerveau@collabora.com>2020-04-24 16:15:42 +0200
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>2021-09-20 15:11:02 +0000
commit86be138973c5ed441b9a9ec87833de430d2a71dc (patch)
tree6de7cb293505c3c6091c0ede7abaf380d36a7f42 /ext/openjpeg/gstopenjpegdec.h
parent18c343754662f93b23beed7cf5d67b6dc0e24b86 (diff)
downloadgstreamer-plugins-bad-86be138973c5ed441b9a9ec87833de430d2a71dc.tar.gz
openjpegdec: support for a multithreaded decoding.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/979>
Diffstat (limited to 'ext/openjpeg/gstopenjpegdec.h')
-rw-r--r--ext/openjpeg/gstopenjpegdec.h23
1 files changed, 22 insertions, 1 deletions
diff --git a/ext/openjpeg/gstopenjpegdec.h b/ext/openjpeg/gstopenjpegdec.h
index 427b85902..413062e3f 100644
--- a/ext/openjpeg/gstopenjpegdec.h
+++ b/ext/openjpeg/gstopenjpegdec.h
@@ -58,15 +58,36 @@ struct _GstOpenJPEGDec
GstJPEG2000Sampling sampling;
gint ncomps;
gint max_threads; /* atomic */
+ gint max_slice_threads; /* internal openjpeg threading system */
gint num_procs;
gint num_stripes;
- GstVideoCodecFrame *current_frame;
gboolean drop_subframes;
void (*fill_frame) (GstOpenJPEGDec *self,
GstVideoFrame *frame, opj_image_t * image);
+ gboolean (*decode_frame) (GstVideoDecoder * decoder, GstVideoCodecFrame *frame);
+
opj_dparameters_t params;
+
+ guint available_threads;
+ GQueue messages;
+
+ GCond messages_cond;
+ GMutex messages_lock;
+ GMutex decoding_lock;
+ GstFlowReturn downstream_flow_ret;
+ gboolean flushing;
+
+ /* Draining state */
+ GMutex drain_lock;
+ GCond drain_cond;
+ /* TRUE if EOS buffers shouldn't be forwarded */
+ gboolean draining; /* protected by drain_lock */
+
+ int last_error;
+
+ gboolean started;
};
struct _GstOpenJPEGDecClass