Arduino A2DP
All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
A2DPLinearVolumeControl Class Reference

The simplest possible implementation of a VolumeControl. More...

#include <A2DPVolumeControl.h>

Inheritance diagram for A2DPLinearVolumeControl:
A2DPVolumeControl

Public Member Functions

 A2DPLinearVolumeControl ()
 Constructor that sets volumeFactorMax to 128 for linear scaling.
 
int32_t get_volume_factor ()
 Gets the current volume factor. More...
 
int32_t get_volume_factor_max ()
 Gets the maximum volume factor value. More...
 
void set_enabled (bool enabled)
 Enables or disables volume control. More...
 
void set_mono_downmix (bool enabled)
 Enables or disables mono downmix. More...
 
virtual void update_audio_data (Frame *data, uint16_t frameCount)
 Updates audio data with volume control and optional mono downmix. More...
 
virtual void update_audio_data (uint8_t *data, uint16_t byteCount)
 Updates audio data with volume control and optional mono downmix. More...
 

Protected Member Functions

int32_t clip (int32_t value)
 Clips audio sample value to prevent overflow. More...
 
void set_volume (uint8_t volume) override
 Sets the volume using direct linear mapping. More...
 

Protected Attributes

bool is_volume_used = false
 Flag indicating if volume control is enabled.
 
bool mono_downmix = false
 Flag indicating if mono downmix is enabled.
 
int32_t volumeFactor = 1
 Current volume factor.
 
int32_t volumeFactorClippingLimit = 0xfff
 Volume factor clipping limit (4095)
 
int32_t volumeFactorMax = 0x1000
 Maximum volume factor (4096)
 

Detailed Description

The simplest possible implementation of a VolumeControl.

Author
pschatzmann

Member Function Documentation

◆ clip()

int32_t A2DPVolumeControl::clip ( int32_t  value)
inlineprotectedinherited

Clips audio sample value to prevent overflow.

Parameters
valueInput audio sample value
Returns
Clipped value within valid 16-bit range (-32768 to 32767)

◆ get_volume_factor()

int32_t A2DPVolumeControl::get_volume_factor ( )
inlineinherited

Gets the current volume factor.

Returns
Volume factor in the range of 0 to 4096

◆ get_volume_factor_max()

int32_t A2DPVolumeControl::get_volume_factor_max ( )
inlineinherited

Gets the maximum volume factor value.

Returns
Maximum factor value (4096)

◆ set_enabled()

void A2DPVolumeControl::set_enabled ( bool  enabled)
inlineinherited

Enables or disables volume control.

Parameters
enabledTrue to enable volume control, false to disable

◆ set_mono_downmix()

void A2DPVolumeControl::set_mono_downmix ( bool  enabled)
inlineinherited

Enables or disables mono downmix.

Parameters
enabledTrue to enable mono downmix, false to disable

◆ set_volume()

void A2DPLinearVolumeControl::set_volume ( uint8_t  volume)
inlineoverrideprotectedvirtual

Sets the volume using direct linear mapping.

Parameters
volumeVolume level (0-127) - directly used as volume factor

Implements A2DPVolumeControl.

◆ update_audio_data() [1/2]

virtual void A2DPVolumeControl::update_audio_data ( Frame *  data,
uint16_t  frameCount 
)
inlinevirtualinherited

Updates audio data with volume control and optional mono downmix.

Parameters
dataPointer to audio frame data
frameCountNumber of frames to process

Reimplemented in A2DPNoVolumeControl.

◆ update_audio_data() [2/2]

virtual void A2DPVolumeControl::update_audio_data ( uint8_t *  data,
uint16_t  byteCount 
)
inlinevirtualinherited

Updates audio data with volume control and optional mono downmix.

Parameters
dataPointer to raw audio data (uint8_t)
byteCountNumber of bytes to process

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