codec-amr
Public Types | Public Member Functions | List of all members
AMRNB Class Reference

AMR Narrowband codec implementation. More...

#include <AMRNB.h>

Inheritance diagram for AMRNB:
Inheritance graph
[legend]
Collaboration diagram for AMRNB:
Collaboration graph
[legend]

Public Types

enum class  Mode {
  NB_475 = 0 , NB_515 , NB_59 , NB_67 ,
  NB_74 , NB_795 , NB_102 , NB_122
}
 Available encoding modes for AMR-NB.
 

Public Member Functions

 AMRNB (bool enableDTX=false)
 Construct a new AMRNB codec. More...
 
 ~AMRNB () override
 Destructor.
 
void setMode (Mode mode)
 Set encoding mode. More...
 
Mode getMode () const
 Get current encoding mode. More...
 
int encode (const int16_t *pcmSamples, size_t sampleCount, uint8_t *amrData, size_t amrBufferSize) override
 Encode PCM samples to AMR-NB format. More...
 
int decode (const uint8_t *amrData, size_t amrSize, int16_t *pcmSamples, size_t maxSampleCount) override
 Decode AMR-NB data to PCM samples. More...
 
int getSampleRate () const override
 Get sample rate (8000 Hz for AMR-NB) More...
 
int getFrameSizeSamples () override
 Get frame size in samples (160 for AMR-NB) More...
 
int getEncodedFrameSizeBytes () override
 Get the size in bytes for one encoded frame in current mode. More...
 

Additional Inherited Members

- Protected Attributes inherited from AMRCodec
bool isInitialized = false
 

Detailed Description

AMR Narrowband codec implementation.

Constructor & Destructor Documentation

◆ AMRNB()

AMRNB::AMRNB ( bool  enableDTX = false)
inline

Construct a new AMRNB codec.

Parameters
enableDTXEnable discontinuous transmission (DTX)

Member Function Documentation

◆ decode()

int AMRNB::decode ( const uint8_t *  amrData,
size_t  amrSize,
int16_t *  pcmSamples,
size_t  maxSampleCount 
)
inlineoverridevirtual

Decode AMR-NB data to PCM samples.

Parameters
amrDataAMR encoded data
amrSizeSize of AMR data in bytes
pcmSamplesOutput buffer for PCM samples
maxSampleCountMaximum capacity of output buffer
Returns
Number of decoded samples written

Implements AMRCodec.

◆ encode()

int AMRNB::encode ( const int16_t *  pcmSamples,
size_t  sampleCount,
uint8_t *  amrData,
size_t  amrBufferSize 
)
inlineoverridevirtual

Encode PCM samples to AMR-NB format.

Parameters
pcmSamplesInput PCM samples (160 samples = 20ms at 8kHz)
sampleCountNumber of input samples
amrDataBuffer to store encoded AMR data
amrBufferSizeSize of the AMR buffer in bytes
Returns
Number of bytes written to amrData

Implements AMRCodec.

◆ getEncodedFrameSizeBytes()

int AMRNB::getEncodedFrameSizeBytes ( )
inlineoverridevirtual

Get the size in bytes for one encoded frame in current mode.

Returns
Bytes per frame

Implements AMRCodec.

◆ getFrameSizeSamples()

int AMRNB::getFrameSizeSamples ( )
inlineoverridevirtual

Get frame size in samples (160 for AMR-NB)

Returns
Frame size in samples

Implements AMRCodec.

◆ getMode()

Mode AMRNB::getMode ( ) const
inline

Get current encoding mode.

Returns
Current mode

◆ getSampleRate()

int AMRNB::getSampleRate ( ) const
inlineoverridevirtual

Get sample rate (8000 Hz for AMR-NB)

Returns
Sample rate in Hz

Implements AMRCodec.

◆ setMode()

void AMRNB::setMode ( Mode  mode)
inline

Set encoding mode.

Parameters
modeDesired encoding mode

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