@@ -17,71 +17,72 @@ class AMRNBDecoder : public AudioDecoder {
17
17
public:
18
18
// / Default Constructor with valid mode values:
19
19
// / 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 ;
42
25
}
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);
45
32
}
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 ;
48
38
}
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
+ }
62
64
}
65
+ buffer.clear ();
63
66
}
64
- buffer.clear ();
65
67
}
68
+ return len;
66
69
}
67
- return len;
68
- }
69
70
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
+ }
75
76
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 ); }
78
79
79
- operator bool () override { return getOutput () != nullptr ; }
80
+ operator bool () override { return getOutput () != nullptr ; }
80
81
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 };
85
86
};
86
87
87
88
/* *
@@ -95,8 +96,9 @@ SingleBuffer<uint8_t> buffer{0};
95
96
96
97
class AMRNBEncoder : public AudioEncoder {
97
98
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) {
100
102
AMRNBEncoder (AMRNB::Mode mode) {
101
103
setMode (mode);
102
104
info.channels = 1 ;
0 commit comments