mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 12:11:13 +00:00
codecs: Fix the H265 poc out of order warning.
We always get a warning such as: h265decoder gsth265decoder.c:1432:gst_h265_decoder_do_output_picture: \ <vah265dec0> Outputting out of order 255 -> 0, likely a broken stream in H265 decoder. The problem is caused because we fail to reset the last_output_poc when we get IDR and BLA. The incoming IDR and BLA frame already bump all the frames in the DPB, but we forget to reset the last_output_poc, which make the POC out of order and generate the warning all the time. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2294>
This commit is contained in:
parent
a1350852e7
commit
2db3ce32ef
1 changed files with 8 additions and 0 deletions
|
@ -1521,6 +1521,14 @@ gst_h265_decoder_dpb_init (GstH265Decoder * self, const GstH265Slice * slice,
|
|||
gst_h265_dpb_delete_unused (priv->dpb);
|
||||
while ((to_output = gst_h265_dpb_bump (priv->dpb, FALSE)) != NULL)
|
||||
gst_h265_decoder_do_output_picture (self, to_output);
|
||||
|
||||
if (gst_h265_dpb_get_size (priv->dpb) > 0) {
|
||||
GST_WARNING_OBJECT (self, "IDR or BLA frame failed to clear the dpb, "
|
||||
"there are still %d pictures in the dpb, last output poc is %d",
|
||||
gst_h265_dpb_get_size (priv->dpb), priv->last_output_poc);
|
||||
} else {
|
||||
priv->last_output_poc = 0;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
gst_h265_dpb_delete_unused (priv->dpb);
|
||||
|
|
Loading…
Reference in a new issue