mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-01-03 14:08:56 +00:00
vaapi: h265dec: Refresh our sps/pps copy
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>
This commit is contained in:
parent
197b72f32a
commit
04e0154fb5
1 changed files with 8 additions and 0 deletions
|
@ -585,6 +585,11 @@ ensure_pps (GstVaapiDecoderH265 * decoder, GstH265PPS * pps)
|
||||||
GstVaapiParserInfoH265 *const pi = priv->pps[pps->id];
|
GstVaapiParserInfoH265 *const pi = priv->pps[pps->id];
|
||||||
|
|
||||||
gst_vaapi_parser_info_h265_replace (&priv->active_pps, pi);
|
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;
|
return pi ? &pi->data.pps : NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -609,6 +614,9 @@ ensure_sps (GstVaapiDecoderH265 * decoder, GstH265SPS * sps)
|
||||||
if (pi && priv->active_sps)
|
if (pi && priv->active_sps)
|
||||||
pi->state |= (priv->active_sps->state & GST_H265_VIDEO_STATE_GOT_I_FRAME);
|
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);
|
gst_vaapi_parser_info_h265_replace (&priv->active_sps, pi);
|
||||||
return pi ? &pi->data.sps : NULL;
|
return pi ? &pi->data.sps : NULL;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue