diff --git a/indra/llaudio/llstreamingaudio.h b/indra/llaudio/llstreamingaudio.h
index 93479f9d598e2c6e7576e0ffbff3b3873095bd96..4ceb037e09fe7ed2e64f046e53d9e981efe72b5f 100644
--- a/indra/llaudio/llstreamingaudio.h
+++ b/indra/llaudio/llstreamingaudio.h
@@ -30,11 +30,13 @@
 
 #include "stdtypes.h" // from llcommon
 
+class LLSD;
+
 // Entirely abstract.  Based exactly on the historic API.
 class LLStreamingAudioInterface
 {
  public:
-	virtual ~LLStreamingAudioInterface() {}
+    virtual ~LLStreamingAudioInterface() = default;
 
 	virtual void start(const std::string& url) = 0;
 	virtual void stop() = 0;
@@ -45,8 +47,15 @@ class LLStreamingAudioInterface
 	virtual void setGain(F32 vol) = 0;
 	virtual F32 getGain() = 0;
 	virtual std::string getURL() = 0;
-	virtual bool supportsAdjustableBufferSizes(){return false;}
-	virtual void setBufferSizes(U32 streambuffertime, U32 decodebuffertime){};
+
+	virtual bool supportsAdjustableBufferSizes() = 0;
+	virtual void setBufferSizes(U32 streambuffertime, U32 decodebuffertime) = 0;
+
+	virtual bool supportsMetaData() = 0;
+	virtual const LLSD *getMetaData() = 0;
+	virtual bool hasNewMetaData() = 0;
+	virtual bool supportsWaveData() = 0;
+	virtual bool getWaveData(float* arr, S32 count, S32 stride = 1) = 0;
 };
 
 #endif // LL_STREAMINGAUDIO_H
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index dbe8b1fbb5bacb82ce30c43d0ea97e48e1e00e9e..b98a29850484a0e08f3539fc1076178ac6c9609f 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -1282,6 +1282,7 @@ set(viewer_HEADER_FILES
     llviewerkeyboard.h
     llviewerlayer.h
     llviewermedia.h
+    llviewermedia_streamingaudio.h
     llviewermediafocus.h
     llviewermediaobserver.h
     llviewermenu.h
diff --git a/indra/newview/llviewermedia_streamingaudio.h b/indra/newview/llviewermedia_streamingaudio.h
index 1e7f771e1702a0bb7e7bef3ad28c5f647256fb6b..404065e954712392aa60d4fc7ae1cc4a989e3218 100644
--- a/indra/newview/llviewermedia_streamingaudio.h
+++ b/indra/newview/llviewermedia_streamingaudio.h
@@ -50,6 +50,15 @@ class LLStreamingAudio_MediaPlugins : public LLStreamingAudioInterface
 	/*virtual*/ F32 getGain();
 	/*virtual*/ std::string getURL();
 
+	virtual bool supportsAdjustableBufferSizes(){return false;}
+	virtual void setBufferSizes(U32 streambuffertime, U32 decodebuffertime){};
+
+	virtual bool supportsMetaData() { return false; }
+	virtual const LLSD *getMetaData() { return nullptr; }
+	virtual bool hasNewMetaData() { return false; }
+	virtual bool supportsWaveData() { return false; }
+	virtual bool getWaveData(float* arr, S32 count, S32 stride = 1){ return false; }
+
 private:
 	LLPluginClassMedia* initializeMedia(const std::string& media_type);