aboutsummaryrefslogtreecommitdiffstats
path: root/src/decoder
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2008-11-16 20:42:08 +0100
committerMax Kellermann <max@duempel.org>2008-11-16 20:42:08 +0100
commit7591403566971eb19ba7bb16002eaa2689a637c7 (patch)
treecc08c5542d7e52b3bb3457b1e62fd209ba125be5 /src/decoder
parent8882f062000ec6f86d932eee7c948d1369901c03 (diff)
downloadmpd-7591403566971eb19ba7bb16002eaa2689a637c7.tar.gz
mpd-7591403566971eb19ba7bb16002eaa2689a637c7.tar.xz
mpd-7591403566971eb19ba7bb16002eaa2689a637c7.zip
input_stream: size==-1 means unknown size
Define the special value "-1" as "unknown size". Previously, there was no indicator for streams with unknown size, which might confuse some decoders.
Diffstat (limited to '')
-rw-r--r--src/decoder/aac_plugin.c2
-rw-r--r--src/decoder/flac_plugin.c3
-rw-r--r--src/decoder/oggflac_plugin.c3
-rw-r--r--src/decoder/wavpack_plugin.c3
4 files changed, 10 insertions, 1 deletions
diff --git a/src/decoder/aac_plugin.c b/src/decoder/aac_plugin.c
index 95b19735a..d23d43b55 100644
--- a/src/decoder/aac_plugin.c
+++ b/src/decoder/aac_plugin.c
@@ -186,7 +186,7 @@ static void aac_parse_header(AacBuffer * b, float *length)
if (length)
*length = -1;
- fileread = b->inStream->size;
+ fileread = b->inStream->size >= 0 ? b->inStream->size : 0;
fillAacBuffer(b);
diff --git a/src/decoder/flac_plugin.c b/src/decoder/flac_plugin.c
index 9c93983a0..289fada0b 100644
--- a/src/decoder/flac_plugin.c
+++ b/src/decoder/flac_plugin.c
@@ -75,6 +75,9 @@ static flac_length_status flacLength(mpd_unused const flac_decoder * flacDec,
{
FlacData *data = (FlacData *) fdata;
+ if (data->inStream->size < 0)
+ return flac_length_status_unsupported;
+
*length = (size_t) (data->inStream->size);
return flac_length_status_ok;
diff --git a/src/decoder/oggflac_plugin.c b/src/decoder/oggflac_plugin.c
index b9ef13722..7550005d9 100644
--- a/src/decoder/oggflac_plugin.c
+++ b/src/decoder/oggflac_plugin.c
@@ -92,6 +92,9 @@ static OggFLAC__SeekableStreamDecoderLengthStatus of_length_cb(mpd_unused const
{
FlacData *data = (FlacData *) fdata;
+ if (data->inStream->size < 0)
+ return OggFLAC__SEEKABLE_STREAM_DECODER_LENGTH_STATUS_ERROR;
+
*length = (size_t) (data->inStream->size);
return OggFLAC__SEEKABLE_STREAM_DECODER_LENGTH_STATUS_OK;
diff --git a/src/decoder/wavpack_plugin.c b/src/decoder/wavpack_plugin.c
index 4262d55fa..224895f25 100644
--- a/src/decoder/wavpack_plugin.c
+++ b/src/decoder/wavpack_plugin.c
@@ -410,6 +410,9 @@ wavpack_input_push_back_byte(void *id, int c)
static uint32_t
wavpack_input_get_length(void *id)
{
+ if (wpin(id)->is->size < 0)
+ return 0;
+
return wpin(id)->is->size;
}