InputLegacy: move functions to the input_stream class
This commit is contained in:
@@ -20,6 +20,7 @@
|
||||
#include "config.h"
|
||||
#include "AudiofileDecoderPlugin.hxx"
|
||||
#include "DecoderAPI.hxx"
|
||||
#include "InputStream.hxx"
|
||||
#include "CheckAudioFormat.hxx"
|
||||
#include "TagHandler.hxx"
|
||||
#include "util/Error.hxx"
|
||||
@@ -56,7 +57,7 @@ audiofile_file_read(AFvirtualfile *vfile, void *data, size_t length)
|
||||
struct input_stream *is = (struct input_stream *) vfile->closure;
|
||||
|
||||
Error error;
|
||||
size_t nbytes = input_stream_lock_read(is, data, length, error);
|
||||
size_t nbytes = is->LockRead(data, length, error);
|
||||
if (nbytes == 0 && error.IsDefined()) {
|
||||
g_warning("%s", error.GetMessage());
|
||||
return -1;
|
||||
@@ -69,14 +70,14 @@ static AFfileoffset
|
||||
audiofile_file_length(AFvirtualfile *vfile)
|
||||
{
|
||||
struct input_stream *is = (struct input_stream *) vfile->closure;
|
||||
return input_stream_get_size(is);
|
||||
return is->GetSize();
|
||||
}
|
||||
|
||||
static AFfileoffset
|
||||
audiofile_file_tell(AFvirtualfile *vfile)
|
||||
{
|
||||
struct input_stream *is = (struct input_stream *) vfile->closure;
|
||||
return input_stream_get_offset(is);
|
||||
return is->GetOffset();
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -94,8 +95,8 @@ audiofile_file_seek(AFvirtualfile *vfile, AFfileoffset offset, int is_relative)
|
||||
int whence = (is_relative ? SEEK_CUR : SEEK_SET);
|
||||
|
||||
Error error;
|
||||
if (input_stream_lock_seek(is, offset, whence, error)) {
|
||||
return input_stream_get_offset(is);
|
||||
if (is->LockSeek(offset, whence, error)) {
|
||||
return is->GetOffset();
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
@@ -167,7 +168,7 @@ audiofile_stream_decode(struct decoder *decoder, struct input_stream *is)
|
||||
char chunk[CHUNK_SIZE];
|
||||
enum decoder_command cmd;
|
||||
|
||||
if (!input_stream_is_seekable(is)) {
|
||||
if (!is->IsSeekable()) {
|
||||
g_warning("not seekable");
|
||||
return;
|
||||
}
|
||||
@@ -195,7 +196,7 @@ audiofile_stream_decode(struct decoder *decoder, struct input_stream *is)
|
||||
|
||||
total_time = ((float)frame_count / (float)audio_format.sample_rate);
|
||||
|
||||
bit_rate = (uint16_t)(input_stream_get_size(is) * 8.0 / total_time / 1000.0 + 0.5);
|
||||
bit_rate = (uint16_t)(is->GetSize() * 8.0 / total_time / 1000.0 + 0.5);
|
||||
|
||||
fs = (int)afGetVirtualFrameSize(af_fp, AF_DEFAULT_TRACK, 1);
|
||||
|
||||
|
@@ -26,6 +26,7 @@
|
||||
#include "config.h"
|
||||
#include "DsdLib.hxx"
|
||||
#include "DecoderAPI.hxx"
|
||||
#include "InputStream.hxx"
|
||||
#include "util/bit_reverse.h"
|
||||
#include "TagHandler.hxx"
|
||||
#include "tag/TagId3.hxx"
|
||||
@@ -64,24 +65,24 @@ bool
|
||||
dsdlib_skip_to(struct decoder *decoder, struct input_stream *is,
|
||||
goffset offset)
|
||||
{
|
||||
if (input_stream_is_seekable(is))
|
||||
return input_stream_seek(is, offset, SEEK_SET, IgnoreError());
|
||||
if (is->IsSeekable())
|
||||
return is->Seek(offset, SEEK_SET, IgnoreError());
|
||||
|
||||
if (input_stream_get_offset(is) > offset)
|
||||
if (is->GetOffset() > offset)
|
||||
return false;
|
||||
|
||||
char buffer[8192];
|
||||
while (input_stream_get_offset(is) < offset) {
|
||||
while (is->GetOffset() < offset) {
|
||||
size_t length = sizeof(buffer);
|
||||
if (offset - input_stream_get_offset(is) < (goffset)length)
|
||||
length = offset - input_stream_get_offset(is);
|
||||
if (offset - is->GetOffset() < (goffset)length)
|
||||
length = offset - is->GetOffset();
|
||||
|
||||
size_t nbytes = decoder_read(decoder, is, buffer, length);
|
||||
if (nbytes == 0)
|
||||
return false;
|
||||
}
|
||||
|
||||
assert(input_stream_get_offset(is) == offset);
|
||||
assert(is->GetOffset() == offset);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -97,8 +98,8 @@ dsdlib_skip(struct decoder *decoder, struct input_stream *is,
|
||||
if (delta == 0)
|
||||
return true;
|
||||
|
||||
if (input_stream_is_seekable(is))
|
||||
return input_stream_seek(is, delta, SEEK_CUR, IgnoreError());
|
||||
if (is->IsSeekable())
|
||||
return is->Seek(delta, SEEK_CUR, IgnoreError());
|
||||
|
||||
char buffer[8192];
|
||||
while (delta > 0) {
|
||||
@@ -139,8 +140,8 @@ dsdlib_tag_id3(struct input_stream *is,
|
||||
id3_length_t count;
|
||||
|
||||
/* Prevent broken files causing problems */
|
||||
const goffset size = input_stream_get_size(is);
|
||||
const goffset offset = input_stream_get_offset(is);
|
||||
const goffset size = is->GetSize();
|
||||
const goffset offset = is->GetOffset();
|
||||
if (offset >= size)
|
||||
return;
|
||||
|
||||
|
@@ -29,12 +29,12 @@
|
||||
#include "config.h"
|
||||
#include "DsdiffDecoderPlugin.hxx"
|
||||
#include "DecoderAPI.hxx"
|
||||
#include "InputStream.hxx"
|
||||
#include "CheckAudioFormat.hxx"
|
||||
#include "util/bit_reverse.h"
|
||||
#include "util/Error.hxx"
|
||||
#include "TagHandler.hxx"
|
||||
#include "DsdLib.hxx"
|
||||
#include "TagHandler.hxx"
|
||||
|
||||
#include <unistd.h>
|
||||
#include <stdio.h> /* for SEEK_SET, SEEK_CUR */
|
||||
@@ -127,11 +127,11 @@ dsdiff_read_prop_snd(struct decoder *decoder, struct input_stream *is,
|
||||
goffset end_offset)
|
||||
{
|
||||
DsdiffChunkHeader header;
|
||||
while ((goffset)(input_stream_get_offset(is) + sizeof(header)) <= end_offset) {
|
||||
while ((goffset)(is->GetOffset() + sizeof(header)) <= end_offset) {
|
||||
if (!dsdiff_read_chunk_header(decoder, is, &header))
|
||||
return false;
|
||||
|
||||
goffset chunk_end_offset = input_stream_get_offset(is)
|
||||
goffset chunk_end_offset = is->GetOffset()
|
||||
+ header.GetSize();
|
||||
if (chunk_end_offset > end_offset)
|
||||
return false;
|
||||
@@ -173,7 +173,7 @@ dsdiff_read_prop_snd(struct decoder *decoder, struct input_stream *is,
|
||||
}
|
||||
}
|
||||
|
||||
return input_stream_get_offset(is) == end_offset;
|
||||
return is->GetOffset() == end_offset;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -185,7 +185,7 @@ dsdiff_read_prop(struct decoder *decoder, struct input_stream *is,
|
||||
const DsdiffChunkHeader *prop_header)
|
||||
{
|
||||
uint64_t prop_size = prop_header->GetSize();
|
||||
goffset end_offset = input_stream_get_offset(is) + prop_size;
|
||||
goffset end_offset = is->GetOffset() + prop_size;
|
||||
|
||||
struct dsdlib_id prop_id;
|
||||
if (prop_size < sizeof(prop_id) ||
|
||||
@@ -260,8 +260,8 @@ dsdiff_read_metadata_extra(struct decoder *decoder, struct input_stream *is,
|
||||
/* Now process all the remaining chunk headers in the stream
|
||||
and record their position and size */
|
||||
|
||||
const goffset size = input_stream_get_size(is);
|
||||
while (input_stream_get_offset(is) < size) {
|
||||
const goffset size = is->GetSize();
|
||||
while (is->GetOffset() < size) {
|
||||
uint64_t chunk_size = chunk_header->GetSize();
|
||||
|
||||
/* DIIN chunk, is directly followed by other chunks */
|
||||
@@ -271,19 +271,19 @@ dsdiff_read_metadata_extra(struct decoder *decoder, struct input_stream *is,
|
||||
/* DIAR chunk - DSDIFF native tag for Artist */
|
||||
if (dsdlib_id_equals(&chunk_header->id, "DIAR")) {
|
||||
chunk_size = chunk_header->GetSize();
|
||||
metadata->diar_offset = input_stream_get_offset(is);
|
||||
metadata->diar_offset = is->GetOffset();
|
||||
}
|
||||
|
||||
/* DITI chunk - DSDIFF native tag for Title */
|
||||
if (dsdlib_id_equals(&chunk_header->id, "DITI")) {
|
||||
chunk_size = chunk_header->GetSize();
|
||||
metadata->diti_offset = input_stream_get_offset(is);
|
||||
metadata->diti_offset = is->GetOffset();
|
||||
}
|
||||
#ifdef HAVE_ID3TAG
|
||||
/* 'ID3 ' chunk, offspec. Used by sacdextract */
|
||||
if (dsdlib_id_equals(&chunk_header->id, "ID3 ")) {
|
||||
chunk_size = chunk_header->GetSize();
|
||||
metadata->id3_offset = input_stream_get_offset(is);
|
||||
metadata->id3_offset = is->GetOffset();
|
||||
metadata->id3_size = chunk_size;
|
||||
}
|
||||
#endif
|
||||
@@ -292,7 +292,7 @@ dsdiff_read_metadata_extra(struct decoder *decoder, struct input_stream *is,
|
||||
break;
|
||||
}
|
||||
|
||||
if (input_stream_get_offset(is) < size) {
|
||||
if (is->GetOffset() < size) {
|
||||
if (!dsdiff_read_chunk_header(decoder, is, chunk_header))
|
||||
return false;
|
||||
}
|
||||
@@ -352,7 +352,7 @@ dsdiff_read_metadata(struct decoder *decoder, struct input_stream *is,
|
||||
} else {
|
||||
/* ignore unknown chunk */
|
||||
const uint64_t chunk_size = chunk_header->GetSize();
|
||||
goffset chunk_end_offset = input_stream_get_offset(is)
|
||||
goffset chunk_end_offset = is->GetOffset()
|
||||
+ chunk_size;
|
||||
|
||||
if (!dsdlib_skip_to(decoder, is, chunk_end_offset))
|
||||
|
@@ -30,6 +30,7 @@
|
||||
#include "config.h"
|
||||
#include "DsfDecoderPlugin.hxx"
|
||||
#include "DecoderAPI.hxx"
|
||||
#include "InputStream.hxx"
|
||||
#include "CheckAudioFormat.hxx"
|
||||
#include "util/bit_reverse.h"
|
||||
#include "util/Error.hxx"
|
||||
@@ -165,7 +166,7 @@ dsf_read_metadata(struct decoder *decoder, struct input_stream *is,
|
||||
|
||||
metadata->chunk_size = data_size;
|
||||
/* data_size cannot be bigger or equal to total file size */
|
||||
const uint64_t size = (uint64_t)input_stream_get_size(is);
|
||||
const uint64_t size = (uint64_t)is->GetSize();
|
||||
if (data_size >= size)
|
||||
return false;
|
||||
|
||||
|
@@ -21,6 +21,7 @@
|
||||
#include "FaadDecoderPlugin.hxx"
|
||||
#include "DecoderAPI.hxx"
|
||||
#include "DecoderBuffer.hxx"
|
||||
#include "InputStream.hxx"
|
||||
#include "CheckAudioFormat.hxx"
|
||||
#include "TagHandler.hxx"
|
||||
#include "util/Error.hxx"
|
||||
@@ -173,7 +174,7 @@ faad_song_duration(DecoderBuffer *buffer, struct input_stream *is)
|
||||
size_t length;
|
||||
bool success;
|
||||
|
||||
const goffset size = input_stream_get_size(is);
|
||||
const goffset size = is->GetSize();
|
||||
fileread = size >= 0 ? size : 0;
|
||||
|
||||
decoder_buffer_fill(buffer);
|
||||
@@ -201,12 +202,12 @@ faad_song_duration(DecoderBuffer *buffer, struct input_stream *is)
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (input_stream_is_seekable(is) && length >= 2 &&
|
||||
if (is->IsSeekable() && length >= 2 &&
|
||||
data[0] == 0xFF && ((data[1] & 0xF6) == 0xF0)) {
|
||||
/* obtain the duration from the ADTS header */
|
||||
float song_length = adts_song_duration(buffer);
|
||||
|
||||
input_stream_lock_seek(is, tagsize, SEEK_SET, IgnoreError());
|
||||
is->LockSeek(tagsize, SEEK_SET, IgnoreError());
|
||||
|
||||
data = (const uint8_t *)decoder_buffer_read(buffer, &length);
|
||||
if (data != nullptr)
|
||||
@@ -384,8 +385,7 @@ faad_stream_decode(struct decoder *mpd_decoder, struct input_stream *is)
|
||||
config->dontUpSampleImplicitSBR = 0;
|
||||
NeAACDecSetConfiguration(decoder, config);
|
||||
|
||||
while (!decoder_buffer_is_full(buffer) &&
|
||||
!input_stream_lock_eof(is) &&
|
||||
while (!decoder_buffer_is_full(buffer) && !is->LockIsEOF() &&
|
||||
decoder_get_command(mpd_decoder) == DECODE_COMMAND_NONE) {
|
||||
adts_find_frame(buffer);
|
||||
decoder_buffer_fill(buffer);
|
||||
|
@@ -126,7 +126,7 @@ mpd_ffmpeg_stream_seek(void *opaque, int64_t pos, int whence)
|
||||
return stream->input->size;
|
||||
|
||||
Error error;
|
||||
if (!input_stream_lock_seek(stream->input, pos, whence, error))
|
||||
if (!stream->input->LockSeek(pos, whence, error))
|
||||
return -1;
|
||||
|
||||
return stream->input->offset;
|
||||
@@ -349,8 +349,7 @@ ffmpeg_probe(struct decoder *decoder, struct input_stream *is)
|
||||
|
||||
unsigned char *buffer = (unsigned char *)g_malloc(BUFFER_SIZE);
|
||||
size_t nbytes = decoder_read(decoder, is, buffer, BUFFER_SIZE);
|
||||
if (nbytes <= PADDING ||
|
||||
!input_stream_lock_seek(is, 0, SEEK_SET, error)) {
|
||||
if (nbytes <= PADDING || !is->LockSeek(0, SEEK_SET, error)) {
|
||||
g_free(buffer);
|
||||
return NULL;
|
||||
}
|
||||
|
@@ -331,7 +331,7 @@ oggflac_decode(struct decoder *decoder, struct input_stream *input_stream)
|
||||
|
||||
/* rewind the stream, because ogg_codec_detect() has
|
||||
moved it */
|
||||
input_stream_lock_seek(input_stream, 0, SEEK_SET, IgnoreError());
|
||||
input_stream->LockSeek(0, SEEK_SET, IgnoreError());
|
||||
|
||||
flac_decode_internal(decoder, input_stream, true);
|
||||
}
|
||||
|
@@ -37,7 +37,7 @@ FlacIORead(void *ptr, size_t size, size_t nmemb, FLAC__IOHandle handle)
|
||||
|
||||
Error error;
|
||||
while (p < end) {
|
||||
size_t nbytes = input_stream_lock_read(is, p, end - p, error);
|
||||
size_t nbytes = is->LockRead(p, end - p, error);
|
||||
if (nbytes == 0) {
|
||||
if (!error.IsDefined())
|
||||
/* end of file */
|
||||
@@ -67,7 +67,7 @@ FlacIOSeek(FLAC__IOHandle handle, FLAC__int64 offset, int whence)
|
||||
input_stream *is = (input_stream *)handle;
|
||||
|
||||
Error error;
|
||||
return input_stream_lock_seek(is, offset, whence, error) ? 0 : -1;
|
||||
return is->LockSeek(offset, whence, error) ? 0 : -1;
|
||||
}
|
||||
|
||||
static FLAC__int64
|
||||
@@ -83,7 +83,7 @@ FlacIOEof(FLAC__IOHandle handle)
|
||||
{
|
||||
input_stream *is = (input_stream *)handle;
|
||||
|
||||
return input_stream_lock_eof(is);
|
||||
return is->LockIsEOF();
|
||||
}
|
||||
|
||||
static int
|
||||
|
@@ -31,7 +31,7 @@ FlacInput::Read(FLAC__byte buffer[], size_t *bytes)
|
||||
*bytes = r;
|
||||
|
||||
if (r == 0) {
|
||||
if (input_stream_lock_eof(input_stream) ||
|
||||
if (input_stream->LockIsEOF() ||
|
||||
(decoder != nullptr &&
|
||||
decoder_get_command(decoder) != DECODE_COMMAND_NONE))
|
||||
return FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM;
|
||||
@@ -49,9 +49,7 @@ FlacInput::Seek(FLAC__uint64 absolute_byte_offset)
|
||||
return FLAC__STREAM_DECODER_SEEK_STATUS_UNSUPPORTED;
|
||||
|
||||
::Error error;
|
||||
if (!input_stream_lock_seek(input_stream,
|
||||
absolute_byte_offset, SEEK_SET,
|
||||
error))
|
||||
if (!input_stream->LockSeek(absolute_byte_offset, SEEK_SET, error))
|
||||
return FLAC__STREAM_DECODER_SEEK_STATUS_ERROR;
|
||||
|
||||
return FLAC__STREAM_DECODER_SEEK_STATUS_OK;
|
||||
@@ -83,7 +81,7 @@ FlacInput::Eof()
|
||||
return (decoder != nullptr &&
|
||||
decoder_get_command(decoder) != DECODE_COMMAND_NONE &&
|
||||
decoder_get_command(decoder) != DECODE_COMMAND_SEEK) ||
|
||||
input_stream_lock_eof(input_stream);
|
||||
input_stream->LockIsEOF();
|
||||
}
|
||||
|
||||
void
|
||||
|
@@ -20,6 +20,7 @@
|
||||
#include "config.h"
|
||||
#include "MadDecoderPlugin.hxx"
|
||||
#include "DecoderAPI.hxx"
|
||||
#include "InputStream.hxx"
|
||||
#include "conf.h"
|
||||
#include "tag/TagId3.hxx"
|
||||
#include "tag/TagRva2.hxx"
|
||||
@@ -205,8 +206,7 @@ inline bool
|
||||
MadDecoder::Seek(long offset)
|
||||
{
|
||||
Error error;
|
||||
if (!input_stream_lock_seek(input_stream, offset, SEEK_SET,
|
||||
error))
|
||||
if (!input_stream->LockSeek(offset, SEEK_SET, error))
|
||||
return false;
|
||||
|
||||
mad_stream_buffer(&stream, input_buffer, 0);
|
||||
@@ -776,7 +776,7 @@ mp3_frame_duration(const struct mad_frame *frame)
|
||||
inline goffset
|
||||
MadDecoder::ThisFrameOffset() const
|
||||
{
|
||||
goffset offset = input_stream_get_offset(input_stream);
|
||||
goffset offset = input_stream->GetOffset();
|
||||
|
||||
if (stream.this_frame != nullptr)
|
||||
offset -= stream.bufend - stream.this_frame;
|
||||
@@ -789,7 +789,7 @@ MadDecoder::ThisFrameOffset() const
|
||||
inline goffset
|
||||
MadDecoder::RestIncludingThisFrame() const
|
||||
{
|
||||
return input_stream_get_size(input_stream) - ThisFrameOffset();
|
||||
return input_stream->GetSize() - ThisFrameOffset();
|
||||
}
|
||||
|
||||
inline void
|
||||
@@ -857,8 +857,7 @@ MadDecoder::DecodeFirstFrame(Tag **tag)
|
||||
}
|
||||
|
||||
if (parse_lame(&lame, &ptr, &bitlen)) {
|
||||
if (gapless_playback &&
|
||||
input_stream_is_seekable(input_stream)) {
|
||||
if (gapless_playback && input_stream->IsSeekable()) {
|
||||
drop_start_samples = lame.encoder_delay +
|
||||
DECODERDELAY;
|
||||
drop_end_samples = lame.encoder_padding;
|
||||
@@ -1059,7 +1058,7 @@ MadDecoder::Read()
|
||||
if (cmd == DECODE_COMMAND_SEEK) {
|
||||
unsigned long j;
|
||||
|
||||
assert(input_stream_is_seekable(input_stream));
|
||||
assert(input_stream->IsSeekable());
|
||||
|
||||
j = TimeToFrame(decoder_seek_where(decoder));
|
||||
if (j < highest_frame) {
|
||||
@@ -1139,7 +1138,7 @@ mp3_decode(struct decoder *decoder, struct input_stream *input_stream)
|
||||
}
|
||||
|
||||
decoder_initialized(decoder, audio_format,
|
||||
input_stream_is_seekable(input_stream),
|
||||
input_stream->IsSeekable(),
|
||||
data.total_time);
|
||||
|
||||
if (tag != nullptr) {
|
||||
|
@@ -20,6 +20,7 @@
|
||||
#include "config.h"
|
||||
#include "ModplugDecoderPlugin.hxx"
|
||||
#include "DecoderAPI.hxx"
|
||||
#include "InputStream.hxx"
|
||||
#include "TagHandler.hxx"
|
||||
|
||||
#include <glib.h>
|
||||
@@ -37,7 +38,7 @@ static constexpr goffset MODPLUG_FILE_LIMIT = 100 * 1024 * 1024;
|
||||
static GByteArray *
|
||||
mod_loadfile(struct decoder *decoder, struct input_stream *is)
|
||||
{
|
||||
const goffset size = input_stream_get_size(is);
|
||||
const goffset size = is->GetSize();
|
||||
|
||||
if (size == 0) {
|
||||
g_warning("file is empty");
|
||||
@@ -63,7 +64,7 @@ mod_loadfile(struct decoder *decoder, struct input_stream *is)
|
||||
size_t ret = decoder_read(decoder, is, data,
|
||||
MODPLUG_READ_BLOCK);
|
||||
if (ret == 0) {
|
||||
if (input_stream_lock_eof(is))
|
||||
if (is->LockIsEOF())
|
||||
/* end of file */
|
||||
break;
|
||||
|
||||
@@ -125,7 +126,7 @@ mod_decode(struct decoder *decoder, struct input_stream *is)
|
||||
assert(audio_format.IsValid());
|
||||
|
||||
decoder_initialized(decoder, audio_format,
|
||||
input_stream_is_seekable(is),
|
||||
is->IsSeekable(),
|
||||
ModPlug_GetLength(f) / 1000.0);
|
||||
|
||||
do {
|
||||
|
@@ -20,6 +20,7 @@
|
||||
#include "config.h"
|
||||
#include "MpcdecDecoderPlugin.hxx"
|
||||
#include "DecoderAPI.hxx"
|
||||
#include "InputStream.hxx"
|
||||
#include "CheckAudioFormat.hxx"
|
||||
#include "TagHandler.hxx"
|
||||
#include "util/Error.hxx"
|
||||
@@ -54,8 +55,7 @@ mpc_seek_cb(mpc_reader *reader, mpc_int32_t offset)
|
||||
struct mpc_decoder_data *data =
|
||||
(struct mpc_decoder_data *)reader->data;
|
||||
|
||||
return input_stream_lock_seek(data->is, offset, SEEK_SET,
|
||||
IgnoreError());
|
||||
return data->is->LockSeek(offset, SEEK_SET, IgnoreError());
|
||||
}
|
||||
|
||||
static mpc_int32_t
|
||||
@@ -64,7 +64,7 @@ mpc_tell_cb(mpc_reader *reader)
|
||||
struct mpc_decoder_data *data =
|
||||
(struct mpc_decoder_data *)reader->data;
|
||||
|
||||
return (long)input_stream_get_offset(data->is);
|
||||
return (long)data->is->GetOffset();
|
||||
}
|
||||
|
||||
static mpc_bool_t
|
||||
@@ -73,7 +73,7 @@ mpc_canseek_cb(mpc_reader *reader)
|
||||
struct mpc_decoder_data *data =
|
||||
(struct mpc_decoder_data *)reader->data;
|
||||
|
||||
return input_stream_is_seekable(data->is);
|
||||
return data->is->IsSeekable();
|
||||
}
|
||||
|
||||
static mpc_int32_t
|
||||
@@ -82,7 +82,7 @@ mpc_getsize_cb(mpc_reader *reader)
|
||||
struct mpc_decoder_data *data =
|
||||
(struct mpc_decoder_data *)reader->data;
|
||||
|
||||
return input_stream_get_size(data->is);
|
||||
return data->is->GetSize();
|
||||
}
|
||||
|
||||
/* this _looks_ performance-critical, don't de-inline -- eric */
|
||||
@@ -175,7 +175,7 @@ mpcdec_decode(struct decoder *mpd_decoder, struct input_stream *is)
|
||||
decoder_replay_gain(mpd_decoder, &replay_gain_info);
|
||||
|
||||
decoder_initialized(mpd_decoder, audio_format,
|
||||
input_stream_is_seekable(is),
|
||||
is->IsSeekable(),
|
||||
mpc_streaminfo_get_length(&info));
|
||||
|
||||
enum decoder_command cmd = DECODE_COMMAND_NONE;
|
||||
|
@@ -272,7 +272,7 @@ mpd_opus_stream_decode(struct decoder *decoder,
|
||||
|
||||
/* rewind the stream, because ogg_codec_detect() has
|
||||
moved it */
|
||||
input_stream_lock_seek(input_stream, 0, SEEK_SET, IgnoreError());
|
||||
input_stream->LockSeek(0, SEEK_SET, IgnoreError());
|
||||
|
||||
MPDOpusDecoder d(decoder, input_stream);
|
||||
OggSyncState oy(*input_stream, decoder);
|
||||
@@ -298,13 +298,13 @@ SeekFindEOS(OggSyncState &oy, ogg_stream_state &os, ogg_packet &packet,
|
||||
if (is->size > 0 && is->size - is->offset < 65536)
|
||||
return OggFindEOS(oy, os, packet);
|
||||
|
||||
if (!input_stream_cheap_seeking(is))
|
||||
if (!is->CheapSeeking())
|
||||
return false;
|
||||
|
||||
oy.Reset();
|
||||
|
||||
Error error;
|
||||
return input_stream_lock_seek(is, -65536, SEEK_END, error) &&
|
||||
return is->LockSeek(-65536, SEEK_END, error) &&
|
||||
oy.ExpectPageSeekIn(os) &&
|
||||
OggFindEOS(oy, os, packet);
|
||||
}
|
||||
|
@@ -20,6 +20,7 @@
|
||||
#include "config.h"
|
||||
#include "decoder/PcmDecoderPlugin.hxx"
|
||||
#include "DecoderAPI.hxx"
|
||||
#include "InputStream.hxx"
|
||||
#include "util/Error.hxx"
|
||||
|
||||
extern "C" {
|
||||
@@ -43,7 +44,7 @@ pcm_stream_decode(struct decoder *decoder, struct input_stream *is)
|
||||
2,
|
||||
};
|
||||
|
||||
const char *const mime = input_stream_get_mime_type(is);
|
||||
const char *const mime = is->GetMimeType();
|
||||
const bool reverse_endian = mime != nullptr &&
|
||||
strcmp(mime, "audio/x-mpd-cdda-pcm-reverse") == 0;
|
||||
|
||||
@@ -52,12 +53,12 @@ pcm_stream_decode(struct decoder *decoder, struct input_stream *is)
|
||||
const double time_to_size = audio_format.GetTimeToSize();
|
||||
|
||||
float total_time = -1;
|
||||
const goffset size = input_stream_get_size(is);
|
||||
const goffset size = is->GetSize();
|
||||
if (size >= 0)
|
||||
total_time = size / time_to_size;
|
||||
|
||||
decoder_initialized(decoder, audio_format,
|
||||
input_stream_is_seekable(is), total_time);
|
||||
is->IsSeekable(), total_time);
|
||||
|
||||
do {
|
||||
char buffer[4096];
|
||||
@@ -65,7 +66,7 @@ pcm_stream_decode(struct decoder *decoder, struct input_stream *is)
|
||||
size_t nbytes = decoder_read(decoder, is,
|
||||
buffer, sizeof(buffer));
|
||||
|
||||
if (nbytes == 0 && input_stream_lock_eof(is))
|
||||
if (nbytes == 0 && is->LockIsEOF())
|
||||
break;
|
||||
|
||||
if (reverse_endian)
|
||||
@@ -83,8 +84,7 @@ pcm_stream_decode(struct decoder *decoder, struct input_stream *is)
|
||||
decoder_seek_where(decoder));
|
||||
|
||||
Error error;
|
||||
if (input_stream_lock_seek(is, offset, SEEK_SET,
|
||||
error)) {
|
||||
if (is->LockSeek(offset, SEEK_SET, error)) {
|
||||
decoder_command_finished(decoder);
|
||||
} else {
|
||||
g_warning("seeking failed: %s", error.GetMessage());
|
||||
|
@@ -20,6 +20,7 @@
|
||||
#include "config.h"
|
||||
#include "SndfileDecoderPlugin.hxx"
|
||||
#include "DecoderAPI.hxx"
|
||||
#include "InputStream.hxx"
|
||||
#include "CheckAudioFormat.hxx"
|
||||
#include "TagHandler.hxx"
|
||||
#include "util/Error.hxx"
|
||||
@@ -34,7 +35,7 @@ sndfile_vio_get_filelen(void *user_data)
|
||||
{
|
||||
const struct input_stream *is = (const struct input_stream *)user_data;
|
||||
|
||||
return input_stream_get_size(is);
|
||||
return is->GetSize();
|
||||
}
|
||||
|
||||
static sf_count_t
|
||||
@@ -42,10 +43,10 @@ sndfile_vio_seek(sf_count_t offset, int whence, void *user_data)
|
||||
{
|
||||
struct input_stream *is = (struct input_stream *)user_data;
|
||||
|
||||
if (!input_stream_lock_seek(is, offset, whence, IgnoreError()))
|
||||
if (!is->LockSeek(offset, whence, IgnoreError()))
|
||||
return -1;
|
||||
|
||||
return input_stream_get_offset(is);
|
||||
return is->GetOffset();
|
||||
}
|
||||
|
||||
static sf_count_t
|
||||
@@ -54,7 +55,7 @@ sndfile_vio_read(void *ptr, sf_count_t count, void *user_data)
|
||||
struct input_stream *is = (struct input_stream *)user_data;
|
||||
|
||||
Error error;
|
||||
size_t nbytes = input_stream_lock_read(is, ptr, count, error);
|
||||
size_t nbytes = is->LockRead(ptr, count, error);
|
||||
if (nbytes == 0 && error.IsDefined()) {
|
||||
g_warning("%s", error.GetMessage());
|
||||
return -1;
|
||||
@@ -77,7 +78,7 @@ sndfile_vio_tell(void *user_data)
|
||||
{
|
||||
const struct input_stream *is = (const struct input_stream *)user_data;
|
||||
|
||||
return input_stream_get_offset(is);
|
||||
return is->GetOffset();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -84,7 +84,7 @@ static int ogg_seek_cb(void *data, ogg_int64_t offset, int whence)
|
||||
Error error;
|
||||
return vis->seekable &&
|
||||
(!vis->decoder || decoder_get_command(vis->decoder) != DECODE_COMMAND_STOP) &&
|
||||
input_stream_lock_seek(vis->input_stream, offset, whence, error)
|
||||
vis->input_stream->LockSeek(offset, whence, error)
|
||||
? 0 : -1;
|
||||
}
|
||||
|
||||
@@ -138,7 +138,7 @@ vorbis_is_open(struct vorbis_input_stream *vis, OggVorbis_File *vf,
|
||||
{
|
||||
vis->decoder = decoder;
|
||||
vis->input_stream = input_stream;
|
||||
vis->seekable = input_stream_cheap_seeking(input_stream);
|
||||
vis->seekable = input_stream->CheapSeeking();
|
||||
|
||||
int ret = ov_open_callbacks(vis, vf, NULL, 0, vorbis_is_callbacks);
|
||||
if (ret < 0) {
|
||||
@@ -189,7 +189,7 @@ vorbis_stream_decode(struct decoder *decoder,
|
||||
|
||||
/* rewind the stream, because ogg_codec_detect() has
|
||||
moved it */
|
||||
input_stream_lock_seek(input_stream, 0, SEEK_SET, IgnoreError());
|
||||
input_stream->LockSeek(0, SEEK_SET, IgnoreError());
|
||||
|
||||
struct vorbis_input_stream vis;
|
||||
OggVorbis_File vf;
|
||||
|
@@ -401,17 +401,13 @@ wavpack_input_get_pos(void *id)
|
||||
static int
|
||||
wavpack_input_set_pos_abs(void *id, uint32_t pos)
|
||||
{
|
||||
Error error;
|
||||
return input_stream_lock_seek(wpin(id)->is, pos, SEEK_SET, error)
|
||||
? 0 : -1;
|
||||
return wpin(id)->is->LockSeek(pos, SEEK_SET, IgnoreError()) ? 0 : -1;
|
||||
}
|
||||
|
||||
static int
|
||||
wavpack_input_set_pos_rel(void *id, int32_t delta, int mode)
|
||||
{
|
||||
Error error;
|
||||
return input_stream_lock_seek(wpin(id)->is, delta, mode, error)
|
||||
? 0 : -1;
|
||||
return wpin(id)->is->LockSeek(delta, mode, IgnoreError()) ? 0 : -1;
|
||||
}
|
||||
|
||||
static int
|
||||
@@ -479,8 +475,7 @@ wavpack_open_wvc(struct decoder *decoder, const char *uri,
|
||||
|
||||
wvc_url = g_strconcat(uri, "c", NULL);
|
||||
|
||||
Error error;
|
||||
is_wvc = input_stream_open(wvc_url, mutex, cond, error);
|
||||
is_wvc = input_stream::Open(wvc_url, mutex, cond, IgnoreError());
|
||||
g_free(wvc_url);
|
||||
|
||||
if (is_wvc == NULL)
|
||||
@@ -494,7 +489,7 @@ wavpack_open_wvc(struct decoder *decoder, const char *uri,
|
||||
decoder, is_wvc, &first_byte, sizeof(first_byte)
|
||||
);
|
||||
if (nbytes == 0) {
|
||||
input_stream_close(is_wvc);
|
||||
is_wvc->Close();
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -545,7 +540,7 @@ wavpack_streamdecode(struct decoder * decoder, struct input_stream *is)
|
||||
|
||||
WavpackCloseFile(wpc);
|
||||
if (open_flags & OPEN_WVC) {
|
||||
input_stream_close(is_wvc);
|
||||
is_wvc->Close();
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user