@@ -18,28 +18,34 @@ class ADPCMDecoder : public AudioDecoderExt {
18
18
info.channels = 2 ;
19
19
info.bits_per_sample = 16 ;
20
20
p_decoder = adpcm_ffmpeg::ADPCMDecoderFactory::create (id);
21
- p_decoder->setCodecID (id);
22
- p_decoder->setBlockSize (blockSize);
21
+ if (p_decoder!=nullptr ){
22
+ p_decoder->setCodecID (id);
23
+ p_decoder->setBlockSize (blockSize);
24
+ }
23
25
}
24
26
25
27
// defines the block size
26
28
void setBlockSize (int blockSize) override {
29
+ if (p_decoder==nullptr ) return ;
27
30
p_decoder->setBlockSize (blockSize);
28
31
}
29
32
30
33
// / Provides the block size (size of encoded frame) (only available after calling begin)
31
34
int blockSize () {
35
+ if (p_decoder==nullptr ) return 0 ;
32
36
return p_decoder->blockSize ();
33
37
}
34
38
35
39
// / Provides the frame size (size of decoded frame) (only available after calling begin)
36
40
int frameSize () {
41
+ if (p_decoder==nullptr ) return 0 ;
37
42
return p_decoder->frameSize ()*2 ;
38
43
}
39
44
40
45
41
46
bool begin () override {
42
47
TRACEI ();
48
+ if (p_decoder==nullptr ) return false ;
43
49
if (is_started) return true ;
44
50
current_byte = 0 ;
45
51
LOGI (" sample_rate: %d, channels: %d" , info.sample_rate , info.channels );
@@ -58,7 +64,8 @@ class ADPCMDecoder : public AudioDecoderExt {
58
64
59
65
void end () override {
60
66
TRACEI ();
61
- p_decoder->end ();
67
+ if (p_decoder!=nullptr )
68
+ p_decoder->end ();
62
69
adpcm_block.resize (0 );
63
70
is_started = false ;
64
71
}
@@ -87,6 +94,7 @@ class ADPCMDecoder : public AudioDecoderExt {
87
94
bool is_started = false ;
88
95
89
96
virtual bool decode (uint8_t byte) {
97
+ if (p_decoder==nullptr ) return false ;
90
98
adpcm_block[current_byte++] = byte;
91
99
92
100
if (current_byte >= block_size) {
@@ -123,22 +131,27 @@ class ADPCMEncoder : public AudioEncoderExt {
123
131
info.channels = 2 ;
124
132
info.bits_per_sample = 16 ;
125
133
p_encoder = adpcm_ffmpeg::ADPCMEncoderFactory::create (id);
126
- p_encoder->setCodecID (id);
127
- p_encoder->setBlockSize (blockSize);
134
+ if (p_encoder!=nullptr ){
135
+ p_encoder->setCodecID (id);
136
+ p_encoder->setBlockSize (blockSize);
137
+ }
128
138
}
129
139
130
140
// / Provides the block size (size of encoded frame) (only available after calling begin)
131
141
int blockSize () override {
142
+ if (p_encoder==nullptr ) return 0 ;
132
143
return p_encoder->blockSize ();
133
144
}
134
145
135
146
// / Provides the frame size (size of decoded frame) (only available after calling begin)
136
147
int frameSize () {
148
+ if (p_encoder==nullptr ) return 0 ;
137
149
return p_encoder->frameSize ()*2 ;
138
150
}
139
151
140
152
bool begin () override {
141
153
TRACEI ();
154
+ if (p_encoder==nullptr ) return false ;
142
155
if (is_started) return true ;
143
156
LOGI (" sample_rate: %d, channels: %d" , info.sample_rate , info.channels );
144
157
p_encoder->begin (info.sample_rate , info.channels );
@@ -157,6 +170,7 @@ class ADPCMEncoder : public AudioEncoderExt {
157
170
void end () override {
158
171
TRACEI ();
159
172
pcm_block.resize (0 );
173
+ if (p_encoder==nullptr ) return ;
160
174
p_encoder->end ();
161
175
is_started = false ;
162
176
}
@@ -185,6 +199,7 @@ class ADPCMEncoder : public AudioEncoderExt {
185
199
int total_samples=0 ;
186
200
187
201
virtual bool encode (int16_t sample) {
202
+ if (p_encoder==nullptr ) return false ;
188
203
pcm_block[current_sample++] = sample;
189
204
if (current_sample >= total_samples) {
190
205
TRACED ();
0 commit comments