mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-18 14:26:43 +00:00
win32: fix seeking in large files
Fix Seeking in large files by using the 64-bit seek functions. Fixes #576019
This commit is contained in:
parent
4ec6f02e8a
commit
4843c0947b
1 changed files with 15 additions and 1 deletions
|
@ -57,6 +57,14 @@
|
|||
#include <gst/gst.h>
|
||||
#include <gst/gst-i18n-plugin.h>
|
||||
|
||||
#ifdef G_OS_WIN32
|
||||
#include <io.h> /* lseek, open, close, read */
|
||||
#undef lseek
|
||||
#define lseek _lseeki64
|
||||
#undef off_t
|
||||
#define off_t guint64
|
||||
#endif
|
||||
|
||||
static const GstElementDetails gst_queue_details = GST_ELEMENT_DETAILS ("Queue",
|
||||
"Generic",
|
||||
"Simple data queue",
|
||||
|
@ -827,7 +835,13 @@ gst_queue_write_buffer_to_file (GstQueue * queue, GstBuffer * buffer)
|
|||
guint8 *data;
|
||||
int ret;
|
||||
|
||||
#ifdef HAVE_FSEEKO
|
||||
fseeko (queue->temp_file, (off_t) queue->writing_pos, SEEK_SET);
|
||||
#elif defined (G_OS_UNIX) || defined (G_OS_WIN32)
|
||||
lseek (fileno (queue->temp_file), (off_t) queue->writing_pos, SEEK_SET);
|
||||
#else
|
||||
fseek (queue->temp_file, queue->writing_pos, SEEK_SET);
|
||||
#endif
|
||||
|
||||
data = GST_BUFFER_DATA (buffer);
|
||||
size = GST_BUFFER_SIZE (buffer);
|
||||
|
@ -872,7 +886,7 @@ gst_queue_create_read (GstQueue * queue, guint64 offset, guint length,
|
|||
#ifdef HAVE_FSEEKO
|
||||
if (fseeko (queue->temp_file, (off_t) offset, SEEK_SET) != 0)
|
||||
goto seek_failed;
|
||||
#elif defined (G_OS_UNIX)
|
||||
#elif defined (G_OS_UNIX) || defined (G_OS_WIN32)
|
||||
if (lseek (fileno (queue->temp_file), (off_t) offset,
|
||||
SEEK_SET) == (off_t) - 1)
|
||||
goto seek_failed;
|
||||
|
|
Loading…
Reference in a new issue