Revert "vp9parse: Always default to super-frame"

This reverts commit fd1428d3ebf937d7656c3788df3ef3ff85fecc31.

As reported in #4524, this changes cause regressions. The problem is due to a
bug in how vp9parse interact with parsebin, presenting downstream negotiation of
alignment to work. This revert to being stuck using frame alignment always,
which fortunately works with libvpx, though less efficient.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9329>
This commit is contained in:
Nicolas Dufresne 2025-07-04 10:56:27 -04:00
parent b77a4b4a97
commit 5c6273d663

View File

@ -294,6 +294,7 @@ gst_vp9_parse_negotiate (GstVp9Parse * self, GstVp9ParseAlignment in_align,
/* concentrate on leading structure, since decodebin parser
* capsfilter always includes parser template caps */
if (caps) {
caps = gst_caps_make_writable (caps);
while (gst_caps_get_size (caps) > 0) {
GstStructure *s = gst_caps_get_structure (caps, 0);
@ -311,18 +312,6 @@ gst_vp9_parse_negotiate (GstVp9Parse * self, GstVp9ParseAlignment in_align,
caps = gst_pad_get_allowed_caps (GST_BASE_PARSE_SRC_PAD (self));
}
/* Sort super-frame alignment first before truncating */
GstCaps *ordered_caps = gst_caps_new_full (gst_structure_new ("video/x-vp9",
"alignment", G_TYPE_STRING, "super-frame", NULL),
gst_structure_new ("video/x-vp9",
"alignment", G_TYPE_STRING, "frame", NULL),
NULL);
GstCaps *tmp = caps;
caps =
gst_caps_intersect_full (ordered_caps, tmp, GST_CAPS_INTERSECT_FIRST);
gst_caps_unref (ordered_caps);
gst_caps_unref (tmp);
caps = gst_caps_truncate (caps);
GST_DEBUG_OBJECT (self, "negotiating with caps: %" GST_PTR_FORMAT, caps);
}