v4l2slh264dec: Fix slice header bit size calculation
authorNicolas Dufresne <nicolas.dufresne@collabora.com>
Wed, 18 Aug 2021 15:14:37 +0000 (11:14 -0400)
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Wed, 18 Aug 2021 18:02:00 +0000 (18:02 +0000)
The emulation bytes need to be removed as bytes, not bit. This fixes
decoding issues with files that have emulation bytes with the Cedrus
driver.

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

sys/v4l2codecs/gstv4l2codech264dec.c

index 7804b87..3004e67 100644 (file)
@@ -652,8 +652,8 @@ gst_v4l2_codec_h264_dec_fill_pred_weight (GstV4l2CodecH264Dec * self,
 static guint
 get_slice_header_bit_size (GstH264Slice * slice)
 {
-  return 8 * slice->nalu.header_bytes
-      + slice->header.header_size - slice->header.n_emulation_prevention_bytes;
+  return 8 * slice->nalu.header_bytes + slice->header.header_size
+      - 8 * slice->header.n_emulation_prevention_bytes;
 }
 
 static void