diff options
author | He Junyan <junyan.he@intel.com> | 2021-07-20 23:49:12 +0800 |
---|---|---|
committer | GStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org> | 2021-07-21 15:23:17 +0000 |
commit | 573d3f5ba5725b59aeb245eed4a673aa39504d54 (patch) | |
tree | f4633e1584e7ed2d88b442ad477b8f3b13123131 /gst-libs/gst/codecs/gsth264decoder.c | |
parent | be223ad316bbd044dd9e3ea51e33b53edcd00b2b (diff) | |
download | gstreamer-plugins-bad-573d3f5ba5725b59aeb245eed4a673aa39504d54.tar.gz |
codecs: h264dec: Add help function of dpb_set_max_num_reorder_frames.
The max_num_reorder_frames can be useful for bump check. We store it
in the DPB and no need for the decoder now.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2373>
Diffstat (limited to 'gst-libs/gst/codecs/gsth264decoder.c')
-rw-r--r-- | gst-libs/gst/codecs/gsth264decoder.c | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/gst-libs/gst/codecs/gsth264decoder.c b/gst-libs/gst/codecs/gsth264decoder.c index da70095a6..144249854 100644 --- a/gst-libs/gst/codecs/gsth264decoder.c +++ b/gst-libs/gst/codecs/gsth264decoder.c @@ -109,7 +109,6 @@ struct _GstH264DecoderPrivate gint max_frame_num; gint max_pic_num; gint max_long_term_frame_idx; - gsize max_num_reorder_frames; gint prev_frame_num; gint prev_ref_frame_num; @@ -1915,21 +1914,23 @@ gst_h264_decoder_update_max_num_reorder_frames (GstH264Decoder * self, GstH264SPS * sps) { GstH264DecoderPrivate *priv = self->priv; + gsize max_num_reorder_frames = 0; if (sps->vui_parameters_present_flag && sps->vui_parameters.bitstream_restriction_flag) { - priv->max_num_reorder_frames = sps->vui_parameters.num_reorder_frames; - if (priv->max_num_reorder_frames > - gst_h264_dpb_get_max_num_frames (priv->dpb)) { + max_num_reorder_frames = sps->vui_parameters.num_reorder_frames; + if (max_num_reorder_frames > gst_h264_dpb_get_max_num_frames (priv->dpb)) { GST_WARNING ("max_num_reorder_frames present, but larger than MaxDpbFrames (%d > %d)", - (gint) priv->max_num_reorder_frames, + (gint) max_num_reorder_frames, gst_h264_dpb_get_max_num_frames (priv->dpb)); - priv->max_num_reorder_frames = 0; + max_num_reorder_frames = 0; return FALSE; } + gst_h264_dpb_set_max_num_reorder_frames (priv->dpb, max_num_reorder_frames); + return TRUE; } @@ -1943,17 +1944,18 @@ gst_h264_decoder_update_max_num_reorder_frames (GstH264Decoder * self, case 110: case 122: case 244: - priv->max_num_reorder_frames = 0; + max_num_reorder_frames = 0; break; default: - priv->max_num_reorder_frames = - gst_h264_dpb_get_max_num_frames (priv->dpb); + max_num_reorder_frames = gst_h264_dpb_get_max_num_frames (priv->dpb); break; } } else { - priv->max_num_reorder_frames = gst_h264_dpb_get_max_num_frames (priv->dpb); + max_num_reorder_frames = gst_h264_dpb_get_max_num_frames (priv->dpb); } + gst_h264_dpb_set_max_num_reorder_frames (priv->dpb, max_num_reorder_frames); + return TRUE; } |