decoder/Client: add OpenUri(), replacing decoder_open_uri()
This commit is contained in:
parent
1a8c96a3f0
commit
723e54f74e
|
@ -23,6 +23,7 @@
|
|||
#include "check.h"
|
||||
#include "DecoderCommand.hxx"
|
||||
#include "Chrono.hxx"
|
||||
#include "input/Ptr.hxx"
|
||||
#include "Compiler.h"
|
||||
|
||||
#include <stdint.h>
|
||||
|
@ -31,7 +32,6 @@ struct AudioFormat;
|
|||
struct Tag;
|
||||
struct ReplayGainInfo;
|
||||
class MixRampInfo;
|
||||
class InputStream;
|
||||
|
||||
/**
|
||||
* An interface between the decoder plugin and the MPD core.
|
||||
|
@ -89,6 +89,15 @@ public:
|
|||
*/
|
||||
virtual void SeekError() = 0;
|
||||
|
||||
/**
|
||||
* Open a new #InputStream and wait until it's ready.
|
||||
*
|
||||
* Throws #StopDecoder if DecoderCommand::STOP was received.
|
||||
*
|
||||
* Throws std::runtime_error on error.
|
||||
*/
|
||||
virtual InputStreamPtr OpenUri(const char *uri) = 0;
|
||||
|
||||
/**
|
||||
* Sets the time stamp for the next data chunk [seconds]. The MPD
|
||||
* core automatically counts it up, and a decoder plugin only needs to
|
||||
|
|
|
@ -251,14 +251,11 @@ Decoder::SeekError()
|
|||
}
|
||||
|
||||
InputStreamPtr
|
||||
decoder_open_uri(DecoderClient &client, const char *uri)
|
||||
Decoder::OpenUri(const char *uri)
|
||||
{
|
||||
auto &decoder = (Decoder &)client;
|
||||
assert(dc.state == DecoderState::START ||
|
||||
dc.state == DecoderState::DECODE);
|
||||
|
||||
assert(decoder.dc.state == DecoderState::START ||
|
||||
decoder.dc.state == DecoderState::DECODE);
|
||||
|
||||
DecoderControl &dc = decoder.dc;
|
||||
Mutex &mutex = dc.mutex;
|
||||
Cond &cond = dc.cond;
|
||||
|
||||
|
|
|
@ -54,16 +54,6 @@ class DecoderClient;
|
|||
*/
|
||||
class StopDecoder {};
|
||||
|
||||
/**
|
||||
* Open a new #InputStream and wait until it's ready.
|
||||
*
|
||||
* Throws #StopDecoder if DecoderCommand::STOP was received.
|
||||
*
|
||||
* Throws std::runtime_error on error.
|
||||
*/
|
||||
InputStreamPtr
|
||||
decoder_open_uri(DecoderClient &decoder, const char *uri);
|
||||
|
||||
/**
|
||||
* Blocking read from the input stream.
|
||||
*
|
||||
|
|
|
@ -124,6 +124,7 @@ struct Decoder final : DecoderClient {
|
|||
SongTime GetSeekTime() override;
|
||||
uint64_t GetSeekFrame() override;
|
||||
void SeekError() override;
|
||||
InputStreamPtr OpenUri(const char *uri) override;
|
||||
void SubmitTimestamp(double t) override;
|
||||
DecoderCommand SubmitData(InputStream *is,
|
||||
const void *data, size_t length,
|
||||
|
|
|
@ -496,7 +496,7 @@ wavpack_open_wvc(DecoderClient &client, const char *uri)
|
|||
};
|
||||
|
||||
try {
|
||||
return decoder_open_uri(client, uri);
|
||||
return client.OpenUri(uri);
|
||||
} catch (const std::runtime_error &) {
|
||||
return nullptr;
|
||||
}
|
||||
|
|
|
@ -74,10 +74,9 @@ FakeDecoder::SeekError()
|
|||
}
|
||||
|
||||
InputStreamPtr
|
||||
decoder_open_uri(DecoderClient &client, const char *uri)
|
||||
FakeDecoder::OpenUri(const char *uri)
|
||||
{
|
||||
auto &decoder = (FakeDecoder &)client;
|
||||
return InputStream::OpenReady(uri, decoder.mutex, decoder.cond);
|
||||
return InputStream::OpenReady(uri, mutex, cond);
|
||||
}
|
||||
|
||||
size_t
|
||||
|
|
|
@ -39,6 +39,7 @@ struct FakeDecoder final : DecoderClient {
|
|||
SongTime GetSeekTime() override;
|
||||
uint64_t GetSeekFrame() override;
|
||||
void SeekError() override;
|
||||
InputStreamPtr OpenUri(const char *uri) override;
|
||||
void SubmitTimestamp(double t) override;
|
||||
DecoderCommand SubmitData(InputStream *is,
|
||||
const void *data, size_t length,
|
||||
|
|
Loading…
Reference in New Issue