codecs: h264: Save the field_pic_flag

This flag is set when the stream is interlaced and the specific
slice is made of single parity fields rather the paired at the
macroblock layer. This is rarely needed in late decoding process
but the Rockchip RKVDEC HW interface requires it, hence needs to
be passed through V4L2 Stateless interface.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2009>
This commit is contained in:
Nicolas Dufresne 2021-12-21 10:52:32 -05:00 committed by GStreamer Marge Bot
parent 924574a608
commit 104ae1b2e6
2 changed files with 4 additions and 0 deletions

View file

@ -823,6 +823,7 @@ gst_h264_decoder_split_frame (GstH264Decoder * self, GstH264Picture * picture)
other_field->ref = picture->ref;
other_field->nonexisting = picture->nonexisting;
other_field->system_frame_number = picture->system_frame_number;
other_field->field_pic_flag = picture->field_pic_flag;
return other_field;
}
@ -1515,6 +1516,8 @@ gst_h264_decoder_fill_picture_from_slice (GstH264Decoder * self,
picture->idr = slice->nalu.idr_pic_flag;
picture->dec_ref_pic_marking = slice_hdr->dec_ref_pic_marking;
picture->field_pic_flag = slice_hdr->field_pic_flag;
if (picture->idr)
picture->idr_pic_id = slice_hdr->idr_pic_id;

View file

@ -142,6 +142,7 @@ struct _GstH264Picture
gint nal_ref_idc;
gboolean idr;
gint idr_pic_id;
gboolean field_pic_flag;
GstH264PictureReference ref;
/* Whether a reference picture. */
gboolean ref_pic;