diff --git a/gst/videoparsers/gsth264parse.c b/gst/videoparsers/gsth264parse.c
index 360fc5b..4807214 100644
--- a/gst/videoparsers/gsth264parse.c
+++ b/gst/videoparsers/gsth264parse.c
@@ -746,9 +746,10 @@ gst_h264_parse_collect_nal (GstH264Parse * h264parse, const guint8 * data,
    * but in practice it works in sane cases, needs not much parsing,
    * and also works with broken frame_num in NAL
    * (where spec-wise would fail) */
+  complete = (nal_type == GST_H264_NAL_AU_DELIMITER);
   nal_type = nnalu.type;
-  complete = h264parse->picture_start && (nal_type >= GST_H264_NAL_SEI &&
-      nal_type <= GST_H264_NAL_AU_DELIMITER);
+  complete |= h264parse->picture_start && (nal_type >= GST_H264_NAL_SEI &&
+      nal_type < GST_H264_NAL_AU_DELIMITER);
 
   GST_LOG_OBJECT (h264parse, "next nal type: %d %s", nal_type,
       _nal_name (nal_type));
@@ -1039,7 +1040,7 @@ gst_h264_parse_handle_frame (GstBaseParse * parse,
   }
 
 end:
-  framesize = nalu.offset + nalu.size;
+  framesize = nalu.offset + nalu.size + 1;
 
   gst_buffer_unmap (buffer, &map);
 
