InputStream: use int64_t instead of goffset
Decouple some more from GLib.
This commit is contained in:
@@ -250,7 +250,7 @@ input_cdio_open(const char *uri,
|
||||
|
||||
static bool
|
||||
input_cdio_seek(struct input_stream *is,
|
||||
goffset offset, int whence, Error &error)
|
||||
InputPlugin::offset_type offset, int whence, Error &error)
|
||||
{
|
||||
CdioParanoiaInputStream *cis = (CdioParanoiaInputStream *)is;
|
||||
|
||||
|
@@ -780,7 +780,7 @@ input_curl_read(struct input_stream *is, void *ptr, size_t size,
|
||||
if (c->icy.IsDefined())
|
||||
copy_icy_tag(c);
|
||||
|
||||
is->offset += (goffset)nbytes;
|
||||
is->offset += (InputPlugin::offset_type)nbytes;
|
||||
|
||||
if (c->paused && curl_total_buffer_size(c) < CURL_RESUME_AT) {
|
||||
c->base.mutex.unlock();
|
||||
@@ -977,7 +977,8 @@ input_curl_easy_init(struct input_curl *c, Error &error)
|
||||
}
|
||||
|
||||
static bool
|
||||
input_curl_seek(struct input_stream *is, goffset offset, int whence,
|
||||
input_curl_seek(struct input_stream *is, InputPlugin::offset_type offset,
|
||||
int whence,
|
||||
Error &error)
|
||||
{
|
||||
struct input_curl *c = (struct input_curl *)is;
|
||||
@@ -1022,7 +1023,7 @@ input_curl_seek(struct input_stream *is, goffset offset, int whence,
|
||||
while (offset > is->offset && !c->buffers.empty()) {
|
||||
auto &buffer = c->buffers.front();
|
||||
size_t length = buffer.Available();
|
||||
if (offset - is->offset < (goffset)length)
|
||||
if (offset - is->offset < (InputPlugin::offset_type)length)
|
||||
length = offset - is->offset;
|
||||
|
||||
const bool empty = !buffer.Consume(length);
|
||||
|
@@ -34,6 +34,8 @@ extern "C" {
|
||||
#include <libavformat/avformat.h>
|
||||
}
|
||||
|
||||
#include <glib.h>
|
||||
|
||||
struct FfmpegInputStream {
|
||||
struct input_stream base;
|
||||
|
||||
@@ -146,7 +148,8 @@ input_ffmpeg_eof(struct input_stream *is)
|
||||
}
|
||||
|
||||
static bool
|
||||
input_ffmpeg_seek(struct input_stream *is, goffset offset, int whence,
|
||||
input_ffmpeg_seek(struct input_stream *is, InputPlugin::offset_type offset,
|
||||
int whence,
|
||||
Error &error)
|
||||
{
|
||||
FfmpegInputStream *i = (FfmpegInputStream *)is;
|
||||
|
@@ -97,12 +97,13 @@ input_file_open(const char *filename,
|
||||
}
|
||||
|
||||
static bool
|
||||
input_file_seek(struct input_stream *is, goffset offset, int whence,
|
||||
input_file_seek(struct input_stream *is, InputPlugin::offset_type offset,
|
||||
int whence,
|
||||
Error &error)
|
||||
{
|
||||
FileInputStream *fis = (FileInputStream *)is;
|
||||
|
||||
offset = (goffset)lseek(fis->fd, (off_t)offset, whence);
|
||||
offset = (InputPlugin::offset_type)lseek(fis->fd, (off_t)offset, whence);
|
||||
if (offset < 0) {
|
||||
error.SetErrno("Failed to seek");
|
||||
return false;
|
||||
|
@@ -164,7 +164,7 @@ input_rewind_read(struct input_stream *is, void *ptr, size_t size,
|
||||
|
||||
size_t nbytes = r->input->Read(ptr, size, error);
|
||||
|
||||
if (r->input->offset > (goffset)sizeof(r->buffer))
|
||||
if (r->input->offset > (InputPlugin::offset_type)sizeof(r->buffer))
|
||||
/* disable buffering */
|
||||
r->tail = 0;
|
||||
else if (r->tail == (size_t)is->offset) {
|
||||
@@ -191,14 +191,16 @@ input_rewind_eof(struct input_stream *is)
|
||||
}
|
||||
|
||||
static bool
|
||||
input_rewind_seek(struct input_stream *is, goffset offset, int whence,
|
||||
input_rewind_seek(struct input_stream *is, InputPlugin::offset_type offset,
|
||||
int whence,
|
||||
Error &error)
|
||||
{
|
||||
RewindInputStream *r = (RewindInputStream *)is;
|
||||
|
||||
assert(is->ready);
|
||||
|
||||
if (whence == SEEK_SET && r->tail > 0 && offset <= (goffset)r->tail) {
|
||||
if (whence == SEEK_SET && r->tail > 0 &&
|
||||
offset <= (InputPlugin::offset_type)r->tail) {
|
||||
/* buffered seek */
|
||||
|
||||
assert(!r->ReadingFromBuffer() ||
|
||||
|
Reference in New Issue
Block a user