codecs: h264decoder: Make get_short_ref_by_pic_num() transfer none

We don't use the extra reference, so let's just avoid the extra
ref/unref.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1238>
This commit is contained in:
Nicolas Dufresne 2020-05-06 12:23:34 -04:00 committed by Nicolas Dufresne
parent 298e22e217
commit a20147f255
2 changed files with 2 additions and 4 deletions

View file

@ -1256,7 +1256,6 @@ gst_h264_decoder_handle_memory_management_opt (GstH264Decoder * self,
to_mark = gst_h264_dpb_get_short_ref_by_pic_num (priv->dpb, pic_num_x); to_mark = gst_h264_dpb_get_short_ref_by_pic_num (priv->dpb, pic_num_x);
if (to_mark) { if (to_mark) {
to_mark->ref = FALSE; to_mark->ref = FALSE;
gst_h264_picture_unref (to_mark);
} else { } else {
GST_WARNING_OBJECT (self, "Invalid short term ref pic num to unmark"); GST_WARNING_OBJECT (self, "Invalid short term ref pic num to unmark");
return FALSE; return FALSE;
@ -1286,7 +1285,6 @@ gst_h264_decoder_handle_memory_management_opt (GstH264Decoder * self,
if (to_mark) { if (to_mark) {
to_mark->long_term = TRUE; to_mark->long_term = TRUE;
to_mark->long_term_frame_idx = ref_pic_marking->long_term_frame_idx; to_mark->long_term_frame_idx = ref_pic_marking->long_term_frame_idx;
gst_h264_picture_unref (to_mark);
} else { } else {
GST_WARNING_OBJECT (self, GST_WARNING_OBJECT (self,
"Invalid short term ref pic num to mark as long ref"); "Invalid short term ref pic num to mark as long ref");

View file

@ -316,7 +316,7 @@ gst_h264_dpb_mark_all_non_ref (GstH264Dpb * dpb)
* *
* Find a short term reference picture which has matching picture number * Find a short term reference picture which has matching picture number
* *
* Returns: (nullable) (transfer full): a #GstH264Picture * Returns: (nullable) (transfer none): a #GstH264Picture
*/ */
GstH264Picture * GstH264Picture *
gst_h264_dpb_get_short_ref_by_pic_num (GstH264Dpb * dpb, gint pic_num) gst_h264_dpb_get_short_ref_by_pic_num (GstH264Dpb * dpb, gint pic_num)
@ -330,7 +330,7 @@ gst_h264_dpb_get_short_ref_by_pic_num (GstH264Dpb * dpb, gint pic_num)
g_array_index (dpb->pic_list, GstH264Picture *, i); g_array_index (dpb->pic_list, GstH264Picture *, i);
if (picture->ref && !picture->long_term && picture->pic_num == pic_num) if (picture->ref && !picture->long_term && picture->pic_num == pic_num)
return gst_h264_picture_ref (picture); return picture;
} }
GST_WARNING ("No short term reference picture for %d", pic_num); GST_WARNING ("No short term reference picture for %d", pic_num);