v4l2slh264dec: Fix reading mode and start code type
authorNicolas Dufresne <nicolas.dufresne@collabora.com>
Tue, 9 Jun 2020 14:48:06 +0000 (10:48 -0400)
committerNicolas Dufresne <nicolas.dufresne@collabora.com>
Tue, 9 Jun 2020 14:52:44 +0000 (10:52 -0400)
These two controls are not pointer based, so we don't need to pass any size or
pointer and need to copy the values afterward. This fixes H264 decoding
regression with Hantro and RKVDEC drivers.

Fixes 037730a787c6cdeeee5779c1834315c1ca764505

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1330>

sys/v4l2codecs/gstv4l2codech264dec.c

index 0fa96dd..5b7d336 100644 (file)
@@ -115,13 +115,9 @@ gst_v4l2_codec_h264_dec_open (GstVideoDecoder * decoder)
   struct v4l2_ext_control control[] = {
     {
       .id = V4L2_CID_MPEG_VIDEO_H264_DECODE_MODE,
-      .ptr = &self->decode_mode,
-      .size = sizeof (self->decode_mode),
     },
     {
       .id = V4L2_CID_MPEG_VIDEO_H264_START_CODE,
-      .ptr = &self->start_code,
-      .size = sizeof (self->start_code),
     },
   };
   /* *INDENT-ON* */
@@ -141,6 +137,9 @@ gst_v4l2_codec_h264_dec_open (GstVideoDecoder * decoder)
     return FALSE;
   }
 
+  self->decode_mode = control[0].value;
+  self->start_code = control[1].value;
+
   GST_INFO_OBJECT (self, "Opened H264 %s decoder %s",
       is_frame_based (self) ? "frame based" : "slice based",
       needs_start_codes (self) ? "using start-codes" : "withouth start-codes");