filesink: Reset the current buffer size to NULL and clear the buffer on close and...
authorSebastian Dröge <sebastian@centricular.com>
Fri, 17 Aug 2018 14:23:52 +0000 (17:23 +0300)
committerSebastian Dröge <sebastian@centricular.com>
Fri, 17 Aug 2018 14:26:17 +0000 (17:26 +0300)
plugins/elements/gstfilesink.c

index 67135fc..c328a2b 100644 (file)
@@ -389,6 +389,7 @@ gst_file_sink_open_file (GstFileSink * sink)
     }
 
     sink->buffer = gst_buffer_list_new ();
+    sink->current_buffer_size = 0;
   }
 
   GST_DEBUG_OBJECT (sink, "opened file %s, seekable %d",
@@ -432,6 +433,7 @@ gst_file_sink_close_file (GstFileSink * sink)
     gst_buffer_list_unref (sink->buffer);
     sink->buffer = NULL;
   }
+  sink->current_buffer_size = 0;
 }
 
 static gboolean
@@ -578,6 +580,11 @@ gst_file_sink_event (GstBaseSink * sink, GstEvent * event)
         if (ftruncate (fileno (filesink->file), 0))
           goto truncate_failed;
       }
+      if (filesink->buffer) {
+        gst_buffer_list_unref (filesink->buffer);
+        filesink->buffer = gst_buffer_list_new ();
+        filesink->current_buffer_size = 0;
+      }
       break;
     case GST_EVENT_EOS:
       if (gst_file_sink_flush_buffer (filesink) != GST_FLOW_OK)