ivfparse: Check the data size against IVF_FRAME_HEADER_SIZE
authorHaihao Xiang <haihao.xiang@intel.com>
Wed, 22 May 2019 04:25:38 +0000 (12:25 +0800)
committerTim-Philipp Müller <tim@centricular.com>
Thu, 8 Aug 2019 20:01:34 +0000 (21:01 +0100)
It is parsing frame data and so should check the data size against the
frame header size instead of the file header size. If don't, it is
possible to drop the last frame because IVF_FILE_HEADER_SIZE is greater
than IVF_FRAME_HEADER_SIZE

gst/ivfparse/gstivfparse.c

index c50c361970b793967139ac052096b82a0a4eb3ed..14dd0dda7b1e1a7cce015089fcd66547bdafd799 100644 (file)
@@ -299,7 +299,7 @@ gst_ivf_parse_handle_frame_data (GstIvfParse * ivf, GstBaseParseFrame * frame,
   GstBuffer *out_buffer;
 
   gst_buffer_map (buffer, &map, GST_MAP_READ);
-  if (map.size >= IVF_FILE_HEADER_SIZE) {
+  if (map.size >= IVF_FRAME_HEADER_SIZE) {
     guint32 frame_size = GST_READ_UINT32_LE (map.data);
     guint64 frame_pts = GST_READ_UINT64_LE (map.data + 4);