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>
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);