diff --git a/subprojects/gst-plugins-good/gst/matroska/matroska-demux.c b/subprojects/gst-plugins-good/gst/matroska/matroska-demux.c index fff8679e42..0777dbb4c5 100644 --- a/subprojects/gst-plugins-good/gst/matroska/matroska-demux.c +++ b/subprojects/gst-plugins-good/gst/matroska/matroska-demux.c @@ -6843,6 +6843,25 @@ gst_matroska_demux_video_caps (GstMatroskaTrackVideoContext * NULL); } *codec_name = g_strdup ("HEVC"); + } else if (!strcmp (codec_id, GST_MATROSKA_CODEC_ID_VIDEO_MPEGI_VVC)) { + caps = gst_caps_new_empty_simple ("video/x-h266"); + if (data) { + GstBuffer *priv; + + gst_codec_utils_h266_caps_set_level_tier_and_profile (caps, data, size); + + priv = gst_buffer_new_memdup (data, size); + gst_caps_set_simple (caps, "codec_data", GST_TYPE_BUFFER, priv, NULL); + gst_buffer_unref (priv); + + gst_caps_set_simple (caps, "stream-format", G_TYPE_STRING, "vvc1", + "alignment", G_TYPE_STRING, "au", NULL); + } else { + GST_WARNING ("No codec data found, assuming output is byte-stream"); + gst_caps_set_simple (caps, "stream-format", G_TYPE_STRING, "byte-stream", + NULL); + } + *codec_name = g_strdup ("VVC"); } else if ((!strcmp (codec_id, GST_MATROSKA_CODEC_ID_VIDEO_REALVIDEO1)) || (!strcmp (codec_id, GST_MATROSKA_CODEC_ID_VIDEO_REALVIDEO2)) || (!strcmp (codec_id, GST_MATROSKA_CODEC_ID_VIDEO_REALVIDEO3)) ||