From ba41690063d1ccdf5b39844e1bba3bca468ff954 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Mon, 16 Jul 2018 11:46:33 +0200 Subject: [PATCH] output/Interface: add method ChangeAudioFormat() This is just the API design; there is no implementation yet, and no caller. --- src/output/Interface.hxx | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/output/Interface.hxx b/src/output/Interface.hxx index 711c04b6c..ac0a5f3f0 100644 --- a/src/output/Interface.hxx +++ b/src/output/Interface.hxx @@ -105,6 +105,28 @@ public: */ virtual void Close() noexcept = 0; + /** + * Attempt to change the #AudioFormat. After successful + * return, the caller may invoke Play() with the new format. + * If necessary, the method should drain old data from its + * buffers. + * + * If this method fails, the caller may then attempt to + * Close() and Open() the object instead. + * + * Throws on error. After such a failure, this object is in + * an undefined state, and it must be closed. + * + * @param audio_format the audio format in which data is going + * to be delivered; may be modified by the plugin + * @return true on success, false if the operation is not + * supported/implemented (no-op and the old format may still + * be used) + */ + virtual bool ChangeAudioFormat(AudioFormat &) { + return false; + } + /** * Returns a positive number if the output thread shall further * delay the next call to Play() or Pause(), which will happen