The decoder uses a copy of the SPS/PPS. Since
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2575
the SPS/PPS is updated when the slice header is parsed. As a side
effect, the H265 decoder was using an partially filled copy.
Fixes:
5ae05bb42a ("codecparsers: Defering computation of pps and sps fields")
Fixes: #1343
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2795>
GstVaapiParserInfoH265 *const pi = priv->pps[pps->id];
gst_vaapi_parser_info_h265_replace (&priv->active_pps, pi);
+
+ /* Ensure our copy is up-to-date */
+ pi->data.pps = *pps;
+ pi->data.pps.sps = NULL;
+
return pi ? &pi->data.pps : NULL;
}
if (pi && priv->active_sps)
pi->state |= (priv->active_sps->state & GST_H265_VIDEO_STATE_GOT_I_FRAME);
+ /* Ensure our copy is up-to-date */
+ pi->data.sps = *sps;
+
gst_vaapi_parser_info_h265_replace (&priv->active_sps, pi);
return pi ? &pi->data.sps : NULL;
}