libde265dec: Only decode the main profile
authorHe Junyan <junyan.he@intel.com>
Sat, 28 Oct 2023 14:55:04 +0000 (22:55 +0800)
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Sat, 4 Nov 2023 18:04:56 +0000 (18:04 +0000)
The src caps of the libde265 is now fixed to I420, and so if the
stream is other format, such as 4:4:4 or 10 bits format, the pipeline
will crash because the dowstream element accesses the video buffer as
I420 format.
We now restrain the input caps to "main" profile, which only contains
4:2:0 8 bits stream.

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

subprojects/gst-plugins-bad/docs/plugins/gst_plugins_cache.json
subprojects/gst-plugins-bad/ext/libde265/libde265-dec.c

index 5b29f25..7ede158 100644 (file)
                 "long-name": "HEVC/H.265 decoder",
                 "pad-templates": {
                     "sink": {
-                        "caps": "video/x-h265:\n  stream-format: { (string)hvc1, (string)hev1, (string)byte-stream }\n      alignment: { (string)au, (string)nal }\n",
+                        "caps": "video/x-h265:\n  stream-format: { (string)hvc1, (string)hev1, (string)byte-stream }\n      alignment: { (string)au, (string)nal }\n        profile: main\n",
                         "direction": "sink",
                         "presence": "always"
                     },
index 60b7596..7b0aadb 100644 (file)
@@ -55,7 +55,10 @@ static GstStaticPadTemplate sink_template = GST_STATIC_PAD_TEMPLATE ("sink",
     GST_PAD_ALWAYS,
     GST_STATIC_CAPS
     ("video/x-h265, stream-format=(string) { hvc1, hev1, byte-stream }, "
-        "alignment=(string) { au, nal }")
+        "alignment=(string) { au, nal }, "
+        /* TODO: Can support more profiles by adding the according
+           output formats in src caps. */
+        "profile=(string) main")
     );
 
 static GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE ("src",