diff options
-rw-r--r-- | src/decoder/DecoderThread.cxx | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/src/decoder/DecoderThread.cxx b/src/decoder/DecoderThread.cxx index b2b41b661..257a0d4ae 100644 --- a/src/decoder/DecoderThread.cxx +++ b/src/decoder/DecoderThread.cxx @@ -30,6 +30,7 @@ #include "fs/AllocatedPath.hxx" #include "DecoderAPI.hxx" #include "input/InputStream.hxx" +#include "input/LocalOpen.hxx" #include "DecoderList.hxx" #include "util/UriUtil.hxx" #include "util/Error.hxx" @@ -107,6 +108,24 @@ decoder_input_stream_open(DecoderControl &dc, const char *uri) return is; } +static InputStream * +decoder_input_stream_open(DecoderControl &dc, Path path) +{ + Error error; + + InputStream *is = OpenLocalInputStream(path, dc.mutex, dc.cond, error); + if (is == nullptr) { + if (error.IsDefined()) + LogError(error); + + return nullptr; + } + + assert(is->IsReady()); + + return is; +} + static bool decoder_stream_decode(const DecoderPlugin &plugin, Decoder &decoder, @@ -308,7 +327,7 @@ TryDecoderFile(Decoder &decoder, Path path_fs, const char *suffix, dc.Unlock(); } else if (plugin.stream_decode != nullptr) { InputStream *input_stream = - decoder_input_stream_open(dc, path_fs.c_str()); + decoder_input_stream_open(dc, path_fs); if (input_stream == nullptr) return false; |