From c4bea3dfe45622fcb4de21cd52fc28deb85335f0 Mon Sep 17 00:00:00 2001
From: Max Kellermann <max@duempel.org>
Date: Fri, 11 Jul 2014 22:09:35 +0200
Subject: [PATCH] decoder/sndfile: implement scan_stream() instead of
 scan_file()

---
 NEWS                                         |  1 +
 src/decoder/plugins/SndfileDecoderPlugin.cxx | 11 ++++++-----
 2 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/NEWS b/NEWS
index de55a0cd5..44a1ee271 100644
--- a/NEWS
+++ b/NEWS
@@ -33,6 +33,7 @@ ver 0.19 (not yet released)
   - vorbis, flac, opus: honor DESCRIPTION= tag in Xiph-based files as a comment to the song
   - audiofile: support scanning remote files
   - audiofile: log libaudiofile errors
+  - sndfile: support scanning remote files
   - sndfile: support tags "comment", "album", "track", "genre"
 * encoder:
   - shine: new encoder plugin
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,