From 61d88bd7dae0d61501a9268a0d6707305d97a3f5 Mon Sep 17 00:00:00 2001 From: LRN Date: Fri, 20 Mar 2009 14:20:16 +0100 Subject: [PATCH] win32: fix seeking in large files Use _lseeki64() on Windows to seek in large files. Fixes #576021. --- gst/quicktime/gstqtmux.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/gst/quicktime/gstqtmux.c b/gst/quicktime/gstqtmux.c index c3ac67fbf..430e979fa 100644 --- a/gst/quicktime/gstqtmux.c +++ b/gst/quicktime/gstqtmux.c @@ -75,6 +75,14 @@ #include #include +#ifdef G_OS_WIN32 +#include /* lseek, open, close, read */ +#undef lseek +#define lseek _lseeki64 +#undef off_t +#define off_t guint64 +#endif + #include "gstqtmux.h" GST_DEBUG_CATEGORY_STATIC (gst_qt_mux_debug); @@ -603,8 +611,17 @@ gst_qt_mux_send_buffered_data (GstQTMux * qtmux, guint64 * offset) if (fflush (qtmux->fast_start_file)) goto flush_failed; - if (fseek (qtmux->fast_start_file, 0, SEEK_SET)) +#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) + 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 -- 2.34.1