11#pragma once
2- #include " AMRWB.h" // https://github.com/pschatzmann/codec-amr
2+ #include " AMRWB.h" // https://github.com/pschatzmann/codec-amr
33#include " AudioTools/AudioCodecs/AudioCodecsBase.h"
44
55namespace audio_tools {
@@ -15,6 +15,8 @@ namespace audio_tools {
1515
1616class AMRWBDecoder : public AudioDecoder {
1717 public:
18+ // / valid mode values: MODE_6_60,MODE_8_85,MODE_12_65,MODE_14_25,
19+ // / MODE_15_85,MODE_18_25,MODE_19_85,MODE_23_05,MODE_23_85 (e.g. AMRWB::Mode::MODE_6_60)
1820 AMRWBDecoder (AMRWB::Mode mode) {
1921 setMode (mode);
2022 info.channels = 1 ;
@@ -47,8 +49,8 @@ class AMRWBDecoder : public AudioDecoder {
4749 if (buffer.isFull ()) {
4850 int result_samples = amr.getFrameSizeSamples ();
4951 int16_t result[result_samples];
50- int size = amr. decode (buffer. data (), buffer. size (), result,
51- result_samples);
52+ int size =
53+ amr. decode (buffer. data (), buffer. size (), result, result_samples);
5254 if (size > 0 ) {
5355 if (getOutput () != nullptr ) {
5456 getOutput ()->write ((uint8_t *)result, size * sizeof (int16_t ));
@@ -61,20 +63,18 @@ class AMRWBDecoder : public AudioDecoder {
6163 }
6264
6365 // / Provides the block size (size of encoded frame)
64- int blickSize () {
65- return amr.getEncodedFrameSizeBytes ();
66- }
66+ int blickSize () { return amr.getEncodedFrameSizeBytes (); }
6767
6868 // / Provides the frame size (size of decoded frame)
69- int frameSize () {
70- return amr.getFrameSizeSamples () * sizeof (int16_t );
71- }
69+ int frameSize () { return amr.getFrameSizeSamples () * sizeof (int16_t ); }
7270
7371 void setMode (AMRWB::Mode mode) {
7472 this ->mode = mode;
7573 amr.setMode (mode);
7674 }
7775
76+ operator bool () override { return getOutput () != nullptr ; }
77+
7878 protected:
7979 AMRWB amr;
8080 AMRWB::Mode mode;
@@ -92,6 +92,8 @@ class AMRWBDecoder : public AudioDecoder {
9292
9393class AMRWBEncoder : public AudioEncoder {
9494 public:
95+ // / valid mode values: MODE_6_60,MODE_8_85,MODE_12_65,MODE_14_25,
96+ // / MODE_15_85,MODE_18_25,MODE_19_85,MODE_23_05,MODE_23_85 (e.g. AMRWB::Mode::MODE_6_60)
9597 AMRWBEncoder (AMRWB::Mode mode) {
9698 setMode (mode);
9799 info.channels = 1 ;
@@ -100,11 +102,11 @@ class AMRWBEncoder : public AudioEncoder {
100102
101103 ~AMRWBEncoder () override = default ;
102104
103- void setMode (AMRWB::Mode mode) {
105+ void setMode (AMRWB::Mode mode) {
104106 this ->mode = mode;
105107 amr.setMode (mode);
106108 }
107-
109+
108110 bool begin () {
109111 buffer.resize (frameSize ());
110112 return getOutput () != nullptr ;
@@ -128,9 +130,9 @@ class AMRWBEncoder : public AudioEncoder {
128130 if (buffer.isFull ()) {
129131 int result_bytes = blockSize ();
130132 uint8_t result[result_bytes];
131- int size = amr. encode (( int16_t *)buffer. data (),
132- buffer. size () / sizeof (int16_t ), result ,
133- result_bytes);
133+ int size =
134+ amr. encode ( (int16_t *)buffer. data () ,
135+ buffer. size () / sizeof ( int16_t ), result, result_bytes);
134136 if (size > 0 ) {
135137 if (getOutput () != nullptr ) {
136138 getOutput ()->write (result, size);
@@ -149,21 +151,19 @@ class AMRWBEncoder : public AudioEncoder {
149151 }
150152
151153 // / Provides the frame size (size of decoded frame)
152- int frameSize () {
153- return amr.getFrameSizeSamples () * sizeof (int16_t );
154- }
154+ int frameSize () { return amr.getFrameSizeSamples () * sizeof (int16_t ); }
155155
156156 const char *mime () { return " audio/amr" ; }
157157
158158 void setOutput (Print &out_stream) override { p_print = &out_stream; }
159159
160160 Print *getOutput () { return p_print; }
161-
161+
162162 protected:
163163 AMRWB amr;
164164 AMRWB::Mode mode;
165165 SingleBuffer<uint8_t > buffer{0 };
166166 Print *p_print = nullptr ;
167167};
168168
169- } // namespace audio_tools
169+ } // namespace audio_tools
0 commit comments