Skip to content

Commit

Permalink
v4l2codecs: h264: Set frame type flags
Browse files Browse the repository at this point in the history
V4L spec now requires decode_params flags to be set in accordance to the
frame's type. In particular this is required by H.264 decoder of NVIDIA
Tegra SoC to operate properly. Set the flags based on type of parsed
slices.
  • Loading branch information
digetx committed Feb 7, 2022
1 parent de2434f commit c5cd847
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 0 deletions.
10 changes: 10 additions & 0 deletions subprojects/gst-plugins-bad/sys/v4l2codecs/gstv4l2codech264dec.c
Expand Up @@ -1288,6 +1288,16 @@ gst_v4l2_codec_h264_dec_decode_slice (GstH264Decoder * decoder,
slice->nalu.size);
self->bitstream_map.size += nal_size;

switch (slice->header.type % 5) {
case GST_H264_P_SLICE:
self->decode_params.flags |= V4L2_H264_DECODE_PARAM_FLAG_PFRAME;
break;

case GST_H264_B_SLICE:
self->decode_params.flags |= V4L2_H264_DECODE_PARAM_FLAG_BFRAME;
break;
}

return GST_FLOW_OK;
}

Expand Down
Expand Up @@ -1552,6 +1552,8 @@ struct v4l2_h264_dpb_entry {
#define V4L2_H264_DECODE_PARAM_FLAG_IDR_PIC 0x01
#define V4L2_H264_DECODE_PARAM_FLAG_FIELD_PIC 0x02
#define V4L2_H264_DECODE_PARAM_FLAG_BOTTOM_FIELD 0x04
#define V4L2_H264_DECODE_PARAM_FLAG_PFRAME 0x08
#define V4L2_H264_DECODE_PARAM_FLAG_BFRAME 0x10

#define V4L2_CID_STATELESS_H264_DECODE_PARAMS (V4L2_CID_CODEC_STATELESS_BASE + 7)
/**
Expand Down

0 comments on commit c5cd847

Please sign in to comment.