aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2013-10-23 21:22:29 +0200
committerMax Kellermann <max@duempel.org>2013-10-23 21:58:44 +0200
commitf1027ed198535ce16cfb9c83ac802788ec750488 (patch)
treebc8787407538be55e8bf70d3413644a8a8f4abf4
parentfe3c5e4e8e3c46d57cb49c2dd6c4c2dc814a797b (diff)
downloadmpd-f1027ed198535ce16cfb9c83ac802788ec750488.tar.gz
mpd-f1027ed198535ce16cfb9c83ac802788ec750488.tar.xz
mpd-f1027ed198535ce16cfb9c83ac802788ec750488.zip
InputStream: add method Rewind()
-rw-r--r--src/DecoderThread.cxx5
-rw-r--r--src/InputStream.cxx13
-rw-r--r--src/InputStream.hxx7
-rw-r--r--src/PlaylistRegistry.cxx5
-rw-r--r--src/TagFile.cxx3
-rw-r--r--src/decoder/FfmpegDecoderPlugin.cxx14
-rw-r--r--src/decoder/FlacDecoderPlugin.cxx6
-rw-r--r--src/decoder/OpusDecoderPlugin.cxx3
-rw-r--r--src/decoder/VorbisDecoderPlugin.cxx3
9 files changed, 31 insertions, 28 deletions
diff --git a/src/DecoderThread.cxx b/src/DecoderThread.cxx
index 4e2c4418a..b3f0e6f36 100644
--- a/src/DecoderThread.cxx
+++ b/src/DecoderThread.cxx
@@ -40,9 +40,6 @@
#include <glib.h>
-#include <unistd.h>
-#include <stdio.h> /* for SEEK_SET */
-
static constexpr Domain decoder_thread_domain("decoder_thread");
/**
@@ -128,7 +125,7 @@ decoder_stream_decode(const DecoderPlugin &plugin,
return true;
/* rewind the stream, so each plugin gets a fresh start */
- input_stream->Seek(0, SEEK_SET, IgnoreError());
+ input_stream->Rewind(IgnoreError());
decoder.dc.Unlock();
diff --git a/src/InputStream.cxx b/src/InputStream.cxx
index 52eef2caf..56ca57e55 100644
--- a/src/InputStream.cxx
+++ b/src/InputStream.cxx
@@ -27,6 +27,7 @@
#include "util/Domain.hxx"
#include <assert.h>
+#include <stdio.h> /* for SEEK_SET */
static constexpr Domain input_domain("input");
@@ -113,6 +114,18 @@ input_stream::LockSeek(offset_type _offset, int whence, Error &error)
return Seek(_offset, whence, error);
}
+bool
+input_stream::Rewind(Error &error)
+{
+ return Seek(0, SEEK_SET, error);
+}
+
+bool
+input_stream::LockRewind(Error &error)
+{
+ return LockSeek(0, SEEK_SET, error);
+}
+
Tag *
input_stream::ReadTag()
{
diff --git a/src/InputStream.hxx b/src/InputStream.hxx
index ac774f723..343f3277c 100644
--- a/src/InputStream.hxx
+++ b/src/InputStream.hxx
@@ -218,6 +218,13 @@ struct input_stream {
bool LockSeek(offset_type offset, int whence, Error &error);
/**
+ * Rewind to the beginning of the stream. This is a wrapper
+ * for Seek(0, SEEK_SET, error).
+ */
+ bool Rewind(Error &error);
+ bool LockRewind(Error &error);
+
+ /**
* Returns true if the stream has reached end-of-file.
*
* The caller must lock the mutex.
diff --git a/src/PlaylistRegistry.cxx b/src/PlaylistRegistry.cxx
index f18f7c5e9..e29bd49c6 100644
--- a/src/PlaylistRegistry.cxx
+++ b/src/PlaylistRegistry.cxx
@@ -44,7 +44,6 @@
#include <assert.h>
#include <string.h>
-#include <stdio.h>
const struct playlist_plugin *const playlist_plugins[] = {
&extm3u_playlist_plugin,
@@ -221,7 +220,7 @@ playlist_list_open_stream_mime2(struct input_stream *is, const char *mime)
string_array_contains(plugin->mime_types, mime)) {
/* rewind the stream, so each plugin gets a
fresh start */
- is->Seek(0, SEEK_SET, IgnoreError());
+ is->Rewind(IgnoreError());
auto playlist = playlist_plugin_open_stream(plugin, is);
if (playlist != nullptr)
@@ -261,7 +260,7 @@ playlist_list_open_stream_suffix(struct input_stream *is, const char *suffix)
string_array_contains(plugin->suffixes, suffix)) {
/* rewind the stream, so each plugin gets a
fresh start */
- is->Seek(0, SEEK_SET, IgnoreError());
+ is->Rewind(IgnoreError());
auto playlist = playlist_plugin_open_stream(plugin, is);
if (playlist != nullptr)
diff --git a/src/TagFile.cxx b/src/TagFile.cxx
index c26bdecde..5e3711532 100644
--- a/src/TagFile.cxx
+++ b/src/TagFile.cxx
@@ -27,7 +27,6 @@
#include "thread/Cond.hxx"
#include <assert.h>
-#include <unistd.h> /* for SEEK_SET */
bool
tag_file_scan(const char *path_fs,
@@ -71,7 +70,7 @@ tag_file_scan(const char *path_fs,
*handler, handler_ctx))
break;
- is->LockSeek(0, SEEK_SET, IgnoreError());
+ is->LockRewind(IgnoreError());
}
}
diff --git a/src/decoder/FfmpegDecoderPlugin.cxx b/src/decoder/FfmpegDecoderPlugin.cxx
index 5092bdf9e..cba7f5e2d 100644
--- a/src/decoder/FfmpegDecoderPlugin.cxx
+++ b/src/decoder/FfmpegDecoderPlugin.cxx
@@ -31,15 +31,6 @@
#include "util/Domain.hxx"
#include "LogV.hxx"
-#include <assert.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-
extern "C" {
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
@@ -50,6 +41,9 @@ extern "C" {
#include <libavutil/dict.h>
}
+#include <assert.h>
+#include <string.h>
+
static constexpr Domain ffmpeg_domain("ffmpeg");
/* suppress the ffmpeg compatibility macro */
@@ -352,7 +346,7 @@ ffmpeg_probe(Decoder *decoder, struct input_stream *is)
unsigned char buffer[BUFFER_SIZE];
size_t nbytes = decoder_read(decoder, is, buffer, BUFFER_SIZE);
- if (nbytes <= PADDING || !is->LockSeek(0, SEEK_SET, error))
+ if (nbytes <= PADDING || !is->LockRewind(error))
return nullptr;
/* some ffmpeg parsers (e.g. ac3_parser.c) read a few bytes
diff --git a/src/decoder/FlacDecoderPlugin.cxx b/src/decoder/FlacDecoderPlugin.cxx
index 168dfdd19..10a052d3d 100644
--- a/src/decoder/FlacDecoderPlugin.cxx
+++ b/src/decoder/FlacDecoderPlugin.cxx
@@ -29,10 +29,6 @@
#include <glib.h>
#include <assert.h>
-#include <unistd.h>
-
-#include <sys/stat.h>
-#include <sys/types.h>
#if !defined(FLAC_API_VERSION_CURRENT) || FLAC_API_VERSION_CURRENT <= 7
#error libFLAC is too old
@@ -340,7 +336,7 @@ oggflac_decode(Decoder &decoder, struct input_stream *input_stream)
/* rewind the stream, because ogg_codec_detect() has
moved it */
- input_stream->LockSeek(0, SEEK_SET, IgnoreError());
+ input_stream->LockRewind(IgnoreError());
flac_decode_internal(decoder, input_stream, true);
}
diff --git a/src/decoder/OpusDecoderPlugin.cxx b/src/decoder/OpusDecoderPlugin.cxx
index 48267e104..1ef4b5f92 100644
--- a/src/decoder/OpusDecoderPlugin.cxx
+++ b/src/decoder/OpusDecoderPlugin.cxx
@@ -39,7 +39,6 @@
#include <glib.h>
-#include <stdio.h>
#include <string.h>
static const opus_int32 opus_sample_rate = 48000;
@@ -273,7 +272,7 @@ mpd_opus_stream_decode(Decoder &decoder,
/* rewind the stream, because ogg_codec_detect() has
moved it */
- input_stream->LockSeek(0, SEEK_SET, IgnoreError());
+ input_stream->LockRewind(IgnoreError());
MPDOpusDecoder d(decoder, input_stream);
OggSyncState oy(*input_stream, &decoder);
diff --git a/src/decoder/VorbisDecoderPlugin.cxx b/src/decoder/VorbisDecoderPlugin.cxx
index 105ca018e..c1d3566e1 100644
--- a/src/decoder/VorbisDecoderPlugin.cxx
+++ b/src/decoder/VorbisDecoderPlugin.cxx
@@ -50,7 +50,6 @@
#include <assert.h>
#include <errno.h>
-#include <unistd.h>
struct vorbis_input_stream {
Decoder *decoder;
@@ -184,7 +183,7 @@ vorbis_stream_decode(Decoder &decoder,
/* rewind the stream, because ogg_codec_detect() has
moved it */
- input_stream->LockSeek(0, SEEK_SET, IgnoreError());
+ input_stream->LockRewind(IgnoreError());
struct vorbis_input_stream vis;
OggVorbis_File vf;