vp9parse: Only show the last frame of a super frame

Only the last frame of a super frame should be displayed by default. When
converting from super frame to frame, mark all frames as decode only except the
last one. This fixes vp90-2-22-svc_1280x720_3.ivf conformance test with
stateless decoders such as VA.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8944>
This commit is contained in:
Nicolas Dufresne 2025-05-07 14:02:05 -04:00
parent d5d47d211e
commit cf1aa3ecc6

View File

@ -585,6 +585,10 @@ gst_vp9_parse_handle_frame (GstBaseParse * parse, GstBaseParseFrame * frame,
* a replacement output buffer is provided anyway. */
gst_vp9_parse_parse_frame (self, &subframe, &frame_hdr);
/* Only the last frame of the super-fame should be displayed */
if (i != superframe_info.frames_in_superframe - 1)
GST_BUFFER_FLAG_SET (subframe.buffer, GST_BUFFER_FLAG_DECODE_ONLY);
ret = gst_base_parse_finish_frame (parse, &subframe, frame_size);
} else {
/* FIXME: need to parse all frames belong to this superframe? */