aboutsummaryrefslogtreecommitdiffstats
path: root/src/decoder
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2014-07-11 22:09:35 +0200
committerMax Kellermann <max@duempel.org>2014-07-11 22:09:35 +0200
commitc4bea3dfe45622fcb4de21cd52fc28deb85335f0 (patch)
tree3ed978e6180f793f7cf0cc39be0e4f79fc8e065b /src/decoder
parenteaa9a1e33bd729560cec42abbdf3ef3902a7cb6f (diff)
downloadmpd-c4bea3dfe45622fcb4de21cd52fc28deb85335f0.tar.gz
mpd-c4bea3dfe45622fcb4de21cd52fc28deb85335f0.tar.xz
mpd-c4bea3dfe45622fcb4de21cd52fc28deb85335f0.zip
decoder/sndfile: implement scan_stream() instead of scan_file()
Diffstat (limited to 'src/decoder')
-rw-r--r--src/decoder/plugins/SndfileDecoderPlugin.cxx11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/decoder/plugins/SndfileDecoderPlugin.cxx b/src/decoder/plugins/SndfileDecoderPlugin.cxx
index 90a52b7f0..c656302f9 100644
--- a/src/decoder/plugins/SndfileDecoderPlugin.cxx
+++ b/src/decoder/plugins/SndfileDecoderPlugin.cxx
@@ -234,21 +234,22 @@ static constexpr struct {
};
static bool
-sndfile_scan_file(Path path_fs,
- const struct tag_handler *handler, void *handler_ctx)
+sndfile_scan_stream(InputStream &is,
+ const struct tag_handler *handler, void *handler_ctx)
{
SF_INFO info;
info.format = 0;
- SNDFILE *const sf = sf_open(path_fs.c_str(), SFM_READ, &info);
+ SndfileInputStream sis{nullptr, is};
+ SNDFILE *const sf = sf_open_virtual(&vio, SFM_READ, &info, &sis);
if (sf == nullptr)
return false;
if (!audio_valid_sample_rate(info.samplerate)) {
sf_close(sf);
FormatWarning(sndfile_domain,
- "Invalid sample rate in %s", path_fs.c_str());
+ "Invalid sample rate in %s", is.GetURI());
return false;
}
@@ -299,8 +300,8 @@ const struct DecoderPlugin sndfile_decoder_plugin = {
nullptr,
sndfile_stream_decode,
nullptr,
- sndfile_scan_file,
nullptr,
+ sndfile_scan_stream,
nullptr,
sndfile_suffixes,
sndfile_mime_types,