@@ -17,71 +17,72 @@ class AMRNBDecoder : public AudioDecoder {
1717 public:
1818 // / Default Constructor with valid mode values:
1919 // / NB_475,NB_515,NB_59,NB_67,NB_74,NB_795,NB_102,NB_122 (e.g.
20- // / AMRNB::Mode::NB_475) AMRNBDecoder(AMRNB::Mode mode) {
21- setMode (mode);
22- info.channels = 1 ;
23- info.sample_rate = 8000 ;
24- }
25-
26- ~AMRNBDecoder () override = default ;
27-
28- void setMode (AMRNB::Mode mode) {
29- this ->mode = mode;
30- amr.setMode (mode);
31- }
32-
33- bool begin () {
34- notifyAudioChange (audioInfo ());
35- buffer.resize (amr.getEncodedFrameSizeBytes ());
36- return getOutput () != nullptr ;
37- }
38-
39- void setAudioInfo (AudioInfo from) {
40- if (from.bits_per_sample != 16 ) {
41- LOGE (" Invalid bits per sample: %d" , from.bits_per_sample );
20+ // / AMRNB::Mode::NB_475)
21+ AMRNBDecoder (AMRNB::Mode mode) {
22+ setMode (mode);
23+ info.channels = 1 ;
24+ info.sample_rate = 8000 ;
4225 }
43- if (from.sample_rate != 8000 ) {
44- LOGE (" Invalid sample rate: %d" , from.sample_rate );
26+
27+ ~AMRNBDecoder () override = default ;
28+
29+ void setMode (AMRNB::Mode mode) {
30+ this ->mode = mode;
31+ amr.setMode (mode);
4532 }
46- if (from.channels != 1 ) {
47- LOGE (" Invalid channels: %d" , from.channels );
33+
34+ bool begin () {
35+ notifyAudioChange (audioInfo ());
36+ buffer.resize (amr.getEncodedFrameSizeBytes ());
37+ return getOutput () != nullptr ;
4838 }
49- }
50-
51- size_t write (const uint8_t *data, size_t len) override {
52- for (size_t j = 0 ; j < len; j++) {
53- buffer.write (data[j]);
54- if (buffer.isFull ()) {
55- int result_samples = amr.getFrameSizeSamples ();
56- int16_t result[result_samples];
57- int size =
58- amr.decode (buffer.data (), buffer.size (), result, result_samples);
59- if (size > 0 ) {
60- if (getOutput () != nullptr ) {
61- getOutput ()->write ((uint8_t *)result, size * sizeof (int16_t ));
39+
40+ void setAudioInfo (AudioInfo from) {
41+ if (from.bits_per_sample != 16 ) {
42+ LOGE (" Invalid bits per sample: %d" , from.bits_per_sample );
43+ }
44+ if (from.sample_rate != 8000 ) {
45+ LOGE (" Invalid sample rate: %d" , from.sample_rate );
46+ }
47+ if (from.channels != 1 ) {
48+ LOGE (" Invalid channels: %d" , from.channels );
49+ }
50+ }
51+
52+ size_t write (const uint8_t *data, size_t len) override {
53+ for (size_t j = 0 ; j < len; j++) {
54+ buffer.write (data[j]);
55+ if (buffer.isFull ()) {
56+ int result_samples = amr.getFrameSizeSamples ();
57+ int16_t result[result_samples];
58+ int size =
59+ amr.decode (buffer.data (), buffer.size (), result, result_samples);
60+ if (size > 0 ) {
61+ if (getOutput () != nullptr ) {
62+ getOutput ()->write ((uint8_t *)result, size * sizeof (int16_t ));
63+ }
6264 }
65+ buffer.clear ();
6366 }
64- buffer.clear ();
6567 }
68+ return len;
6669 }
67- return len;
68- }
6970
70- // / Provides the block size (size of encoded frame)
71- int blockSize () {
72- amr.setMode (mode);
73- return amr.getEncodedFrameSizeBytes ();
74- }
71+ // / Provides the block size (size of encoded frame)
72+ int blockSize () {
73+ amr.setMode (mode);
74+ return amr.getEncodedFrameSizeBytes ();
75+ }
7576
76- // / Provides the frame size (size of decoded frame)
77- int frameSize () { return amr.getFrameSizeSamples () * sizeof (int16_t ); }
77+ // / Provides the frame size (size of decoded frame)
78+ int frameSize () { return amr.getFrameSizeSamples () * sizeof (int16_t ); }
7879
79- operator bool () override { return getOutput () != nullptr ; }
80+ operator bool () override { return getOutput () != nullptr ; }
8081
81- protected:
82- AMRNB amr;
83- AMRNB::Mode mode;
84- SingleBuffer<uint8_t > buffer{0 };
82+ protected:
83+ AMRNB amr;
84+ AMRNB::Mode mode;
85+ SingleBuffer<uint8_t > buffer{0 };
8586};
8687
8788/* *
@@ -95,8 +96,9 @@ SingleBuffer<uint8_t> buffer{0};
9596
9697class AMRNBEncoder : public AudioEncoder {
9798 public:
98- // / valid mode values: MR475,MR515,MR59,MR67,MR74,MR795,MR102,MR122 (e.g.
99- // / AMRNB::Mode::MR475)
99+ // / Default Constructor with valid mode values:
100+ // / NB_475,NB_515,NB_59,NB_67,NB_74,NB_795,NB_102,NB_122 (e.g.
101+ // / AMRNB::Mode::NB_475) AMRNBDecoder(AMRNB::Mode mode) {
100102 AMRNBEncoder (AMRNB::Mode mode) {
101103 setMode (mode);
102104 info.channels = 1 ;
0 commit comments