summaryrefslogtreecommitdiff
path: root/indra/llwebrtc/llwebrtc_impl.h
diff options
context:
space:
mode:
authorRoxie Linden <roxie@lindenlab.com>2024-02-05 14:42:21 -0800
committerRoxie Linden <roxie@lindenlab.com>2024-02-08 18:37:09 -0800
commit65b5a6e12d32602ae5b0ed3982dc2c74057c7ab7 (patch)
tree47b03784ff9a15e06322f2ac503d83008058ccf8 /indra/llwebrtc/llwebrtc_impl.h
parent1e882869dc56320e1bad2c5ff6da17115409477c (diff)
Use a custom audio processor to pull data for level determinations, which will happen after AGC
Diffstat (limited to 'indra/llwebrtc/llwebrtc_impl.h')
-rw-r--r--indra/llwebrtc/llwebrtc_impl.h37
1 files changed, 18 insertions, 19 deletions
diff --git a/indra/llwebrtc/llwebrtc_impl.h b/indra/llwebrtc/llwebrtc_impl.h
index 3ccb6058ad..419482b751 100644
--- a/indra/llwebrtc/llwebrtc_impl.h
+++ b/indra/llwebrtc/llwebrtc_impl.h
@@ -65,27 +65,27 @@ namespace llwebrtc
class LLWebRTCPeerConnectionImpl;
-class LLAudioDeviceObserver : public webrtc::AudioDeviceDataObserver
+class LLCustomProcessor : public webrtc::CustomProcessing
{
public:
- LLAudioDeviceObserver();
+ LLCustomProcessor();
+ ~LLCustomProcessor() override {}
- float getMicrophoneEnergy();
+ // (Re-) Initializes the submodule.
+ void Initialize(int sample_rate_hz, int num_channels) override;
+ // Analyzes the given capture or render signal.
+ void Process(webrtc::AudioBuffer *audio) override;
+ // Returns a string representation of the module state.
+ std::string ToString() const override { return ""; }
- void OnCaptureData(const void *audio_samples,
- const size_t num_samples,
- const size_t bytes_per_sample,
- const size_t num_channels,
- const uint32_t samples_per_sec) override;
-
- void OnRenderData(const void *audio_samples,
- const size_t num_samples,
- const size_t bytes_per_sample,
- const size_t num_channels,
- const uint32_t samples_per_sec) override;
+ float getMicrophoneEnergy() { return mMicrophoneEnergy; }
protected:
- float mSumVector[30]; // 300 ms of smoothing
+ static const int NUM_PACKETS_TO_FILTER = 30; // 300 ms of smoothing
+ int mSampleRateHz;
+ int mNumChannels;
+
+ float mSumVector[NUM_PACKETS_TO_FILTER];
float mMicrophoneEnergy;
};
@@ -93,7 +93,7 @@ class LLWebRTCImpl : public LLWebRTCDeviceInterface, public webrtc::AudioDeviceS
{
public:
LLWebRTCImpl() :
- mTuningAudioDeviceObserver(nullptr), mPeerAudioDeviceObserver(nullptr), mMute(true)
+ mCustomProcessor(nullptr), mMute(true)
{
}
~LLWebRTCImpl() {}
@@ -189,9 +189,8 @@ class LLWebRTCImpl : public LLWebRTCDeviceInterface, public webrtc::AudioDeviceS
int32_t mPlayoutDevice;
int32_t mRecordingDevice;
bool mMute;
-
- LLAudioDeviceObserver * mTuningAudioDeviceObserver;
- LLAudioDeviceObserver * mPeerAudioDeviceObserver;
+
+ LLCustomProcessor * mCustomProcessor;
// peer connections
std::vector<rtc::scoped_refptr<LLWebRTCPeerConnectionImpl>> mPeerConnections;