Ring Daemon 16.0.0
Loading...
Searching...
No Matches
jami::AudioProcessor Class Referenceabstract

#include <audio_processor.h>

Inheritance diagram for jami::AudioProcessor:
Inheritance graph
Collaboration diagram for jami::AudioProcessor:
Collaboration graph

Public Member Functions

 AudioProcessor (AudioFormat format, unsigned frameSize)
 
virtual void enableAutomaticGainControl (bool enabled)=0
 Set the status of automatic gain control.
 
virtual void enableEchoCancel (bool enabled)=0
 Set the status of echo cancellation.
 
virtual void enableNoiseSuppression (bool enabled)=0
 Set the status of noise suppression includes de-reverb, de-noise, high pass filter, etc.
 
virtual void enableVoiceActivityDetection (bool enabled)=0
 Set the status of voice activity detection.
 
virtual std::shared_ptr< AudioFramegetProcessed ()=0
 Process and return a single AudioFrame.
 
virtual void putPlayback (const std::shared_ptr< AudioFrame > &buf)
 
virtual void putRecorded (std::shared_ptr< AudioFrame > &&buf)
 
virtual ~AudioProcessor ()=default
 

Protected Member Functions

bool getStabilizedVoiceActivity (bool voiceStatus)
 Stablilizes voice activity.
 
bool tidyQueues ()
 Helper method for audio processors, should be called at start of getProcessed() Pops frames from audio queues if there's overflow.
 

Protected Attributes

unsigned int consecutiveActiveFrames {0}
 
unsigned int forceMinimumVoiceActivityMs {1000}
 
unsigned int forceVoiceActiveFramesLeft {0}
 
AudioFormat format_
 
unsigned int frameDurationMs_
 
unsigned int frameSize_
 
unsigned int minimumConsequtiveDurationMs {200}
 
AudioFrameResizer playbackQueue_
 
std::atomic_bool playbackStarted_
 
AudioFrameResizer recordQueue_
 
std::atomic_bool recordStarted_
 
std::unique_ptr< Resamplerresampler_
 

Detailed Description

Definition at line 31 of file audio_processor.h.

Constructor & Destructor Documentation

◆ AudioProcessor()

jami::AudioProcessor::AudioProcessor ( AudioFormat  format,
unsigned  frameSize 
)
inline

Definition at line 37 of file audio_processor.h.

◆ ~AudioProcessor()

virtual jami::AudioProcessor::~AudioProcessor ( )
virtualdefault

Member Function Documentation

◆ enableAutomaticGainControl()

virtual void jami::AudioProcessor::enableAutomaticGainControl ( bool  enabled)
pure virtual

Set the status of automatic gain control.

Implemented in jami::SpeexAudioProcessor, jami::WebRTCAudioProcessor, and jami::NullAudioProcessor.

◆ enableEchoCancel()

virtual void jami::AudioProcessor::enableEchoCancel ( bool  enabled)
pure virtual

Set the status of echo cancellation.

Implemented in jami::SpeexAudioProcessor, jami::WebRTCAudioProcessor, and jami::NullAudioProcessor.

◆ enableNoiseSuppression()

virtual void jami::AudioProcessor::enableNoiseSuppression ( bool  enabled)
pure virtual

Set the status of noise suppression includes de-reverb, de-noise, high pass filter, etc.

Implemented in jami::SpeexAudioProcessor, jami::WebRTCAudioProcessor, and jami::NullAudioProcessor.

◆ enableVoiceActivityDetection()

virtual void jami::AudioProcessor::enableVoiceActivityDetection ( bool  enabled)
pure virtual

Set the status of voice activity detection.

Implemented in jami::SpeexAudioProcessor, jami::WebRTCAudioProcessor, and jami::NullAudioProcessor.

◆ getProcessed()

virtual std::shared_ptr< AudioFrame > jami::AudioProcessor::getProcessed ( )
pure virtual

Process and return a single AudioFrame.

Implemented in jami::NullAudioProcessor, jami::SpeexAudioProcessor, and jami::WebRTCAudioProcessor.

◆ getStabilizedVoiceActivity()

bool jami::AudioProcessor::getStabilizedVoiceActivity ( bool  voiceStatus)
inlineprotected

Stablilizes voice activity.

Parameters
voiceStatusthe voice status that was detected by the audio processor for the current frame
Returns
The voice activity status that should be set on the current frame

Definition at line 146 of file audio_processor.h.

References consecutiveActiveFrames, jami::emitSignal(), forceMinimumVoiceActivityMs, forceVoiceActiveFramesLeft, frameDurationMs_, and minimumConsequtiveDurationMs.

Referenced by jami::SpeexAudioProcessor::getProcessed(), and jami::WebRTCAudioProcessor::getProcessed().

Here is the call graph for this function:

◆ putPlayback()

virtual void jami::AudioProcessor::putPlayback ( const std::shared_ptr< AudioFrame > &  buf)
inlinevirtual

Definition at line 54 of file audio_processor.h.

References jami::emitSignal(), playbackQueue_, playbackStarted_, and recordStarted_.

Here is the call graph for this function:

◆ putRecorded()

virtual void jami::AudioProcessor::putRecorded ( std::shared_ptr< AudioFrame > &&  buf)
inlinevirtual

Definition at line 47 of file audio_processor.h.

References jami::emitSignal(), playbackStarted_, recordQueue_, and recordStarted_.

Here is the call graph for this function:

◆ tidyQueues()

bool jami::AudioProcessor::tidyQueues ( )
inlineprotected

Helper method for audio processors, should be called at start of getProcessed() Pops frames from audio queues if there's overflow.

Returns
True if there is underflow, false otherwise. An AudioProcessor should return a blank AudioFrame if there is underflow.

Definition at line 117 of file audio_processor.h.

References jami::AudioFrameResizer::dequeue(), jami::emitSignal(), jami::AudioFrameResizer::frameSize(), frameSize_, JAMI_LOG, playbackQueue_, recordQueue_, and jami::AudioFrameResizer::samples().

Referenced by jami::NullAudioProcessor::getProcessed(), jami::SpeexAudioProcessor::getProcessed(), and jami::WebRTCAudioProcessor::getProcessed().

Here is the call graph for this function:

Member Data Documentation

◆ consecutiveActiveFrames

unsigned int jami::AudioProcessor::consecutiveActiveFrames {0}
protected

Definition at line 109 of file audio_processor.h.

Referenced by getStabilizedVoiceActivity().

◆ forceMinimumVoiceActivityMs

unsigned int jami::AudioProcessor::forceMinimumVoiceActivityMs {1000}
protected

Definition at line 100 of file audio_processor.h.

Referenced by getStabilizedVoiceActivity().

◆ forceVoiceActiveFramesLeft

unsigned int jami::AudioProcessor::forceVoiceActiveFramesLeft {0}
protected

Definition at line 103 of file audio_processor.h.

Referenced by getStabilizedVoiceActivity().

◆ format_

◆ frameDurationMs_

◆ frameSize_

unsigned int jami::AudioProcessor::frameSize_
protected

◆ minimumConsequtiveDurationMs

unsigned int jami::AudioProcessor::minimumConsequtiveDurationMs {200}
protected

Definition at line 106 of file audio_processor.h.

Referenced by getStabilizedVoiceActivity().

◆ playbackQueue_

◆ playbackStarted_

std::atomic_bool jami::AudioProcessor::playbackStarted_
protected

Definition at line 93 of file audio_processor.h.

Referenced by putPlayback(), and putRecorded().

◆ recordQueue_

◆ recordStarted_

std::atomic_bool jami::AudioProcessor::recordStarted_
protected

Definition at line 94 of file audio_processor.h.

Referenced by putPlayback(), and putRecorded().

◆ resampler_

std::unique_ptr<Resampler> jami::AudioProcessor::resampler_
protected

Definition at line 92 of file audio_processor.h.


The documentation for this class was generated from the following file: