projects
/
platform
/
upstream
/
gstreamer.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
3e6a415
)
qtmux: truncate buffer file after each send
author
Marc-André Lureau
<mlureau@flumotion.com>
Wed, 30 Sep 2009 15:16:30 +0000
(17:16 +0200)
committer
Tim-Philipp Müller
<tim.muller@collabora.co.uk>
Tue, 12 Apr 2011 19:32:18 +0000
(20:32 +0100)
gst/quicktime/gstqtmux.c
patch
|
blob
|
history
diff --git
a/gst/quicktime/gstqtmux.c
b/gst/quicktime/gstqtmux.c
index
377871c
..
83ac60c
100644
(file)
--- a/
gst/quicktime/gstqtmux.c
+++ b/
gst/quicktime/gstqtmux.c
@@
-1063,6
+1063,22
@@
write_error:
}
}
}
}
+static gboolean
+gst_qt_mux_seek_to_beginning (FILE * f)
+{
+#ifdef HAVE_FSEEKO
+ if (fseeko (f, (off_t) 0, SEEK_SET) != 0)
+ return FALSE;
+#elif defined (G_OS_UNIX) || defined (G_OS_WIN32)
+ if (lseek (fileno (f), (off_t) 0, SEEK_SET) == (off_t) - 1)
+ return FALSE;
+#else
+ if (fseek (f, (long) 0, SEEK_SET) != 0)
+ return FALSE;
+#endif
+ return TRUE;
+}
+
static GstFlowReturn
gst_qt_mux_send_buffered_data (GstQTMux * qtmux, guint64 * offset)
{
static GstFlowReturn
gst_qt_mux_send_buffered_data (GstQTMux * qtmux, guint64 * offset)
{
@@
-1072,17
+1088,8
@@
gst_qt_mux_send_buffered_data (GstQTMux * qtmux, guint64 * offset)
if (fflush (qtmux->fast_start_file))
goto flush_failed;
if (fflush (qtmux->fast_start_file))
goto flush_failed;
-#ifdef HAVE_FSEEKO
- if (fseeko (qtmux->fast_start_file, (off_t) 0, SEEK_SET) != 0)
- goto seek_failed;
-#elif defined (G_OS_UNIX) || defined (G_OS_WIN32)
- if (lseek (fileno (qtmux->fast_start_file), (off_t) 0,
- SEEK_SET) == (off_t) - 1)
- goto seek_failed;
-#else
- if (fseek (qtmux->fast_start_file, (long) 0, SEEK_SET) != 0)
+ if (!gst_qt_mux_seek_to_beginning (qtmux->fast_start_file))
goto seek_failed;
goto seek_failed;
-#endif
/* hm, this could all take a really really long time,
* but there may not be another way to get moov atom first
/* hm, this could all take a really really long time,
* but there may not be another way to get moov atom first
@@
-1105,6
+1112,11
@@
gst_qt_mux_send_buffered_data (GstQTMux * qtmux, guint64 * offset)
if (buf)
gst_buffer_unref (buf);
if (buf)
gst_buffer_unref (buf);
+ if (ftruncate (fileno (qtmux->fast_start_file), 0))
+ goto seek_failed;
+ if (!gst_qt_mux_seek_to_beginning (qtmux->fast_start_file))
+ goto seek_failed;
+
return ret;
/* ERRORS */
return ret;
/* ERRORS */